From af73851fd78abd4ae81eaa93a07d7f2dcf107574 Mon Sep 17 00:00:00 2001 From: Dimas Date: Mon, 7 Sep 2026 15:47:22 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A3=D1=81=D1=82=D1=80=D0=B0=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=B2=D1=8B=D1=81=D1=82=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=B2=D1=8B=D1=81=D0=BE=D0=BA=D0=BE=D0=B3?= =?UTF-8?q?=D0=BE=20=D1=83=D1=80=D0=BE=D0=B2=D0=BD=D1=8F=20=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=BB=D0=B8=D0=BD=D0=B8=D1=8F=D1=85=20CAN=20=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7?= =?UTF-8?q?=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Bin/.gitignore | 1 + Bin/UKSSTMS320F28335.bin | Bin 29864 -> 24980 bytes Bin/UKSSTMS320F28335.hex | 983 +--- Bin/UKSSTMS320F28335.map | 15 +- Bin/UKSSTMS320F28335.out | Bin 334848 -> 270298 bytes Debug.lkf | 30 + Doc/23550_2 prt_3 data stru.xls | Bin 112640 -> 112640 bytes .../DSP2833x_common/cmd/28332_RAM_lnk.cmd | 176 - .../DSP2833x_common/cmd/28334_RAM_lnk.cmd | 178 - .../DSP2833x_common/cmd/28335_RAM_lnk.cmd | 176 - .../v120/DSP2833x_common/cmd/F28332.cmd | 197 - .../v120/DSP2833x_common/cmd/F28334.cmd | 203 - .../v120/DSP2833x_common/cmd/F28335.cmd | 203 - .../v120/DSP2833x_common/gel/f28232.gel | 2822 ----------- .../v120/DSP2833x_common/gel/f28234.gel | 2930 ----------- .../v120/DSP2833x_common/gel/f28235.gel | 2939 ----------- .../v120/DSP2833x_common/gel/f28332.gel | 2845 ----------- .../v120/DSP2833x_common/gel/f28334.gel | 2951 ----------- .../v120/DSP2833x_common/gel/f28335.gel | 2960 ----------- .../v120/DSP2833x_common/include/IQmathLib.h | 4493 ----------------- .../v120/DSP2833x_common/include/SFO.h | 52 - .../v120/DSP2833x_common/include/SFO_V5.h | 70 - .../v120/DSP2833x_common/lib/IQmath.lib | Bin 625984 -> 0 bytes .../v120/DSP2833x_common/lib/IQmath_fpu32.lib | Bin 861356 -> 0 bytes .../v120/DSP2833x_common/lib/SFO_TI_Build.lib | Bin 5822 -> 0 bytes .../DSP2833x_common/lib/SFO_TI_Build_V5.lib | Bin 26482 -> 0 bytes .../DSP2833x_common/lib/SFO_TI_Build_V5B.lib | Bin 26264 -> 0 bytes .../lib/SFO_TI_Build_V5B_fpu.lib | Bin 25918 -> 0 bytes .../lib/SFO_TI_Build_V5_fpu.lib | Bin 26016 -> 0 bytes .../DSP2833x_common/lib/SFO_TI_Build_fpu.lib | Bin 25944 -> 0 bytes .../DSP2833x_common/source/DSP2833x_Adc.c | 1 + .../source/DSP2833x_CSMPasswords.asm | 67 - .../source/DSP2833x_CodeStartBranch.asm | 86 - .../source/DSP2833x_DBGIER.asm | 28 - .../DSP2833x_common/source/DSP2833x_DMA.c | 590 --- .../source/DSP2833x_DefaultIsr.c | 1187 ----- .../source/DSP2833x_DisInt.asm | 65 - .../DSP2833x_common/source/DSP2833x_ECan.c | 404 -- .../DSP2833x_common/source/DSP2833x_ECap.c | 255 - .../DSP2833x_common/source/DSP2833x_EPwm.c | 316 -- .../DSP2833x_common/source/DSP2833x_EQep.c | 154 - .../DSP2833x_common/source/DSP2833x_Gpio.c | 69 - .../DSP2833x_common/source/DSP2833x_I2C.c | 76 - .../DSP2833x_common/source/DSP2833x_Mcbsp.c | 349 -- .../DSP2833x_common/source/DSP2833x_MemCopy.c | 45 - .../DSP2833x_common/source/DSP2833x_Sci.c | 168 - .../DSP2833x_common/source/DSP2833x_Spi.c | 107 - .../DSP2833x_common/source/DSP2833x_SysCtrl.c | 3 - .../DSP2833x_common/source/DSP2833x_Xintf.c | 15 +- .../adc_dma/Example_2833xAdcToDMA.c | 212 - .../adc_dma/Example_2833xAdcToDMA.gel | 36 - .../adc_dma/Example_2833xAdcToDMA.pjt | 47 - .../Example_2833xAdcSeq_ovdTest.c | 266 - .../Example_2833xAdcSeq_ovdTest.gel | 39 - .../Example_2833xAdcSeq_ovdTest.pjt | 45 - .../Example_2833xAdcSeqModeTest.c | 164 - .../Example_2833xAdcSeqModeTest.gel | 37 - .../Example_2833xAdcSeqModeTest.pjt | 45 - .../adc_soc/Example_2833xAdcSoc.c | 203 - .../adc_soc/Example_2833xAdcSoc.gel | 40 - .../adc_soc/Example_2833xAdcSoc.pjt | 46 - .../cpu_timer/Example_2833xCpuTimer.c | 189 - .../cpu_timer/Example_2833xCpuTimer.gel | 43 - .../cpu_timer/Example_2833xCpuTimer.pjt | 46 - .../Example_2833xDMA_ram_to_ram.c | 189 - .../Example_2833xDMA_ram_to_ram.gel | 36 - .../Example_2833xDMA_ram_to_ram.pjt | 47 - .../Example_2833xDMA_xintf_to_ram.c | 242 - .../Example_2833xDMA_xintf_to_ram.gel | 36 - .../Example_2833xDMA_xintf_to_ram.pjt | 48 - .../Example_2833xEcanA_to_B_Xmit.c | 187 - .../Example_2833xEcanA_to_B_Xmit.gel | 37 - .../Example_2833xEcanA_to_B_Xmit.pjt | 45 - .../Example_2833xECanBack2Back.c | 309 -- .../Example_2833xECanBack2Back.gel | 43 - .../Example_2833xECanBack2Back.pjt | 45 - .../ecap_apwm/Example_2833xECap_apwm.c | 223 - .../ecap_apwm/Example_2833xECap_apwm.gel | 39 - .../ecap_apwm/Example_2833xECap_apwm.pjt | 46 - .../Example_2833xECap_Capture_Pwm.c | 288 -- .../Example_2833xECap_Capture_Pwm.gel | 46 - .../Example_2833xECap_Capture_Pwm.pjt | 47 - .../epwm_deadband/Example_2833xEPwmDeadBand.c | 457 -- .../Example_2833xEPwmDeadBand.pjt | 46 - .../Example_2833xEPwmDeadband.gel | 39 - .../epwm_dma/DSP2833x_EPWMDM_Headers_BIOS.cmd | 183 - .../DSP2833x_EPWMDM_Headers_nonBIOS.cmd | 182 - .../epwm_dma/Example_2833xEPwm_DMA.c | 455 -- .../epwm_dma/Example_2833xEPwm_DMA.gel | 43 - .../epwm_dma/Example_2833xEPwm_DMA.pjt | 46 - .../Example_2833xEPwmTimerInt.c | 360 -- .../Example_2833xEPwmTimerInt.gel | 47 - .../Example_2833xEPwmTimerInt.pjt | 45 - .../Example_2833xEPwmTripZone.c | 305 -- .../Example_2833xEPwmTripZone.gel | 40 - .../Example_2833xEPwmTripZone.pjt | 46 - .../epwm_up_aq/Example_2833xEPwmUpAQ.c | 490 -- .../epwm_up_aq/Example_2833xEPwmUpAQ.gel | 41 - .../epwm_up_aq/Example_2833xEPwmUpAQ.pjt | 46 - .../Example_2833xEPwmUpDownAQ.c | 499 -- .../Example_2833xEPwmUpDownAQ.gel | 40 - .../Example_2833xEPwmUpDownAQ.pjt | 46 - .../eqep_freqcal/Example_2833xEqep_freqcal.c | 178 - .../Example_2833xEqep_freqcal.gel | 37 - .../Example_2833xEqep_freqcal.pjt | 49 - .../eqep_freqcal/Example_EPwmSetup.c | 76 - .../eqep_freqcal/Example_freqcal.c | 186 - .../eqep_freqcal/Example_freqcal.h | 112 - .../eqep_freqcal/Example_freqcal.xls | Bin 16896 -> 0 bytes .../Example_2833xEqep_pos_speed.c | 201 - .../Example_2833xEqep_pos_speed.gel | 39 - .../Example_2833xEqep_pos_speed.pjt | 56 - .../eqep_pos_speed/Example_EPwmSetup.c | 69 - .../eqep_pos_speed/Example_posspeed.c | 245 - .../eqep_pos_speed/Example_posspeed.h | 85 - .../eqep_pos_speed/Example_posspeed.xls | Bin 16896 -> 0 bytes .../Example_2833xExternalInterrupt.c | 260 - .../Example_2833xExternalInterrupt.gel | 41 - .../Example_2833xExternalInterrupt.pjt | 44 - .../flash/Example_28332_Flash.gel | 45 - .../flash/Example_28332_Flash.pjt | 46 - .../flash/Example_28334_Flash.gel | 45 - .../flash/Example_28334_Flash.pjt | 46 - .../flash/Example_28335_Flash.gel | 45 - .../flash/Example_28335_Flash.pjt | 46 - .../flash/Example_2833xFlash.c | 342 -- .../DSP2833x_examples/fpu/Example_2833xFPU.c | 167 - .../fpu/Example_2833xFPU.gel | 50 - .../fpu/Example_2833xFPU_hardware.pjt | 46 - .../fpu/Example_2833xFPU_software.pjt | 46 - .../gpio_setup/Example_2833xGpioSetup.c | 458 -- .../gpio_setup/Example_2833xGpioSetup.gel | 35 - .../gpio_setup/Example_2833xGpioSetup.pjt | 44 - .../gpio_toggle/Example_2833xGpioToggle.c | 245 - .../gpio_toggle/Example_2833xGpioToggle.gel | 36 - .../gpio_toggle/Example_2833xGpioToggle.pjt | 44 - .../hrpwm/Example_2833xHRPWM.c | 376 -- .../hrpwm/Example_2833xHRPWM.gel | 42 - .../hrpwm/Example_2833xHRPWM.pjt | 51 - .../hrpwm_sfo/Example_2833xHRPWM_SFO.c | 546 -- .../hrpwm_sfo/Example_2833xHRPWM_SFO.gel | 54 - .../hrpwm_sfo/Example_2833xHRPWM_SFO.pjt | 59 - .../hrpwm_sfo_v5/Example_2833xHRPWM_SFO_V5.c | 477 -- .../Example_2833xHRPWM_SFO_V5.gel | 58 - .../Example_2833xHRPWM_SFO_V5.pjt | 53 - .../hrpwm_slider/Example_2833xHRPWM_slider.c | 381 -- .../Example_2833xHRPWM_slider.gel | 51 - .../Example_2833xHRPWM_slider.pjt | 51 - .../i2c_eeprom/Example_2833xI2C_eeprom.c | 473 -- .../i2c_eeprom/Example_2833xI2C_eeprom.gel | 39 - .../i2c_eeprom/Example_2833xI2C_eeprom.pjt | 46 - .../lpm_haltwake/Example_2833xHaltWake.c | 167 - .../lpm_haltwake/Example_2833xHaltWake.gel | 29 - .../lpm_haltwake/Example_2833xHaltWake.pjt | 46 - .../lpm_idlewake/Example_2833xIdleWake.c | 175 - .../lpm_idlewake/Example_2833xIdleWake.gel | 28 - .../lpm_idlewake/Example_2833xIdleWake.pjt | 46 - .../Example_2833xStandbyWake.c | 169 - .../Example_2833xStandbyWake.gel | 29 - .../Example_2833xStandbyWake.pjt | 45 - .../mcbsp_loopback/Example_2833xMcBSP_DLB.c | 244 - .../mcbsp_loopback/Example_2833xMcBSP_DLB.gel | 27 - .../mcbsp_loopback/Example_2833xMcBSP_DLB.pjt | 45 - .../Example_2833xMcBSP_DLB_DMA.c | 403 -- .../Example_2833xMcBSP_DLB_DMA.gel | 22 - .../Example_2833xMcBSP_DLB_DMA.pjt | 52 - .../Example_2833xMcBSP_DLB_int.c | 221 - .../Example_2833xMcBSP_DLB_int.gel | 27 - .../Example_2833xMcBSP_DLB_int.pjt | 45 - .../Example_2833xMcBSP_SPI_DLB.c | 208 - .../Example_2833xMcBSP_SPI_DLB.gel | 28 - .../Example_2833xMcBSP_SPI_DLB.pjt | 45 - .../sci_autobaud/Example_2833xSci_Autobaud.c | 390 -- .../Example_2833xSci_Autobaud.gel | 48 - .../Example_2833xSci_Autobaud.pjt | 45 - .../sci_echoback/Example_2833xSci_Echoback.c | 236 - .../Example_2833xSci_Echoback.gel | 40 - .../Example_2833xSci_Echoback.pjt | 45 - .../DSP2833x_examples/sci_echoback/SCI_96.ht | Bin 23333 -> 0 bytes .../scia_loopback/Example_2833xScia_FFDLB.c | 217 - .../scia_loopback/Example_2833xScia_FFDLB.gel | 42 - .../scia_loopback/Example_2833xScia_FFDLB.pjt | 45 - .../Example_2833xSci_FFDLB_int.c | 329 -- .../Example_2833xSci_FFDLB_int.gel | 45 - .../Example_2833xSci_FFDLB_int.pjt | 45 - .../spi_loopback/Example_2833xSpi_FFDLB.c | 184 - .../spi_loopback/Example_2833xSpi_FFDLB.gel | 40 - .../spi_loopback/Example_2833xSpi_FFDLB.pjt | 45 - .../Example_2833xSpi_FFDLB_int.c | 238 - .../Example_2833xSpi_FFDLB_int.gel | 40 - .../Example_2833xSpi_FFDLB_int.pjt | 45 - .../Example_2833xSWPrioritizedDefaultIsr.c | 1879 ------- .../Example_2833xSWPrioritizedInterrupts.c | 597 --- .../Example_2833xSWPrioritizedInterrupts.gel | 37 - .../Example_2833xSWPrioritizedInterrupts.pjt | 44 - .../timed_led_blink/Example_2833xLEDBlink.c | 161 - .../timed_led_blink/Example_2833xLEDBlink.gel | 38 - .../timed_led_blink/Example_2833xLEDBlink.pjt | 46 - .../watchdog/Example_2833xWatchdog.c | 176 - .../watchdog/Example_2833xWatchdog.gel | 41 - .../watchdog/Example_2833xWatchdog.pjt | 44 - .../xintf_run_from/28335_RAM_xintf_lnk.cmd | 167 - .../Example_2833xCodeRunFromXintf.c | 256 - .../Example_2833xCodeRunFromXintf.pjt | 62 - .../Example_2833xRunFromXintf.gel | 37 - .../gel/DSP2833x_DualMap_EPWM.gel | 237 - .../gel/DSP2833x_Peripheral.gel | 249 - .../include/DSP2833x_Device.h | 4 +- Source/Internal/Include/peripher.h | 28 + Source/Internal/main.c | 21 +- Source/Internal/peripher.c | 23 +- UKSSTMS320F28335.map | 1408 ++++++ UKSSTMS320F28335.paf2 | Bin 0 -> 24178 bytes UKSSTMS320F28335.pjt | 2 +- UKSSTMS320F28335.sbl | Bin 0 -> 21712 bytes cc_build_Debug.log | 23 + 216 files changed, 1604 insertions(+), 49493 deletions(-) create mode 100644 Bin/.gitignore create mode 100644 Debug.lkf delete mode 100644 Source/External/v120/DSP2833x_common/cmd/28332_RAM_lnk.cmd delete mode 100644 Source/External/v120/DSP2833x_common/cmd/28334_RAM_lnk.cmd delete mode 100644 Source/External/v120/DSP2833x_common/cmd/28335_RAM_lnk.cmd delete mode 100644 Source/External/v120/DSP2833x_common/cmd/F28332.cmd delete mode 100644 Source/External/v120/DSP2833x_common/cmd/F28334.cmd delete mode 100644 Source/External/v120/DSP2833x_common/cmd/F28335.cmd delete mode 100644 Source/External/v120/DSP2833x_common/gel/f28232.gel delete mode 100644 Source/External/v120/DSP2833x_common/gel/f28234.gel delete mode 100644 Source/External/v120/DSP2833x_common/gel/f28235.gel delete mode 100644 Source/External/v120/DSP2833x_common/gel/f28332.gel delete mode 100644 Source/External/v120/DSP2833x_common/gel/f28334.gel delete mode 100644 Source/External/v120/DSP2833x_common/gel/f28335.gel delete mode 100644 Source/External/v120/DSP2833x_common/include/IQmathLib.h delete mode 100644 Source/External/v120/DSP2833x_common/include/SFO.h delete mode 100644 Source/External/v120/DSP2833x_common/include/SFO_V5.h delete mode 100644 Source/External/v120/DSP2833x_common/lib/IQmath.lib delete mode 100644 Source/External/v120/DSP2833x_common/lib/IQmath_fpu32.lib delete mode 100644 Source/External/v120/DSP2833x_common/lib/SFO_TI_Build.lib delete mode 100644 Source/External/v120/DSP2833x_common/lib/SFO_TI_Build_V5.lib delete mode 100644 Source/External/v120/DSP2833x_common/lib/SFO_TI_Build_V5B.lib delete mode 100644 Source/External/v120/DSP2833x_common/lib/SFO_TI_Build_V5B_fpu.lib delete mode 100644 Source/External/v120/DSP2833x_common/lib/SFO_TI_Build_V5_fpu.lib delete mode 100644 Source/External/v120/DSP2833x_common/lib/SFO_TI_Build_fpu.lib delete mode 100644 Source/External/v120/DSP2833x_common/source/DSP2833x_CSMPasswords.asm delete mode 100644 Source/External/v120/DSP2833x_common/source/DSP2833x_CodeStartBranch.asm delete mode 100644 Source/External/v120/DSP2833x_common/source/DSP2833x_DBGIER.asm delete mode 100644 Source/External/v120/DSP2833x_common/source/DSP2833x_DMA.c delete mode 100644 Source/External/v120/DSP2833x_common/source/DSP2833x_DefaultIsr.c delete mode 100644 Source/External/v120/DSP2833x_common/source/DSP2833x_DisInt.asm delete mode 100644 Source/External/v120/DSP2833x_common/source/DSP2833x_ECan.c delete mode 100644 Source/External/v120/DSP2833x_common/source/DSP2833x_ECap.c delete mode 100644 Source/External/v120/DSP2833x_common/source/DSP2833x_EPwm.c delete mode 100644 Source/External/v120/DSP2833x_common/source/DSP2833x_EQep.c delete mode 100644 Source/External/v120/DSP2833x_common/source/DSP2833x_Gpio.c delete mode 100644 Source/External/v120/DSP2833x_common/source/DSP2833x_I2C.c delete mode 100644 Source/External/v120/DSP2833x_common/source/DSP2833x_Mcbsp.c delete mode 100644 Source/External/v120/DSP2833x_common/source/DSP2833x_MemCopy.c delete mode 100644 Source/External/v120/DSP2833x_common/source/DSP2833x_Sci.c delete mode 100644 Source/External/v120/DSP2833x_common/source/DSP2833x_Spi.c delete mode 100644 Source/External/v120/DSP2833x_examples/adc_dma/Example_2833xAdcToDMA.c delete mode 100644 Source/External/v120/DSP2833x_examples/adc_dma/Example_2833xAdcToDMA.gel delete mode 100644 Source/External/v120/DSP2833x_examples/adc_dma/Example_2833xAdcToDMA.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/adc_seq_ovd_test/Example_2833xAdcSeq_ovdTest.c delete mode 100644 Source/External/v120/DSP2833x_examples/adc_seq_ovd_test/Example_2833xAdcSeq_ovdTest.gel delete mode 100644 Source/External/v120/DSP2833x_examples/adc_seq_ovd_test/Example_2833xAdcSeq_ovdTest.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/adc_seqmode_test/Example_2833xAdcSeqModeTest.c delete mode 100644 Source/External/v120/DSP2833x_examples/adc_seqmode_test/Example_2833xAdcSeqModeTest.gel delete mode 100644 Source/External/v120/DSP2833x_examples/adc_seqmode_test/Example_2833xAdcSeqModeTest.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/adc_soc/Example_2833xAdcSoc.c delete mode 100644 Source/External/v120/DSP2833x_examples/adc_soc/Example_2833xAdcSoc.gel delete mode 100644 Source/External/v120/DSP2833x_examples/adc_soc/Example_2833xAdcSoc.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/cpu_timer/Example_2833xCpuTimer.c delete mode 100644 Source/External/v120/DSP2833x_examples/cpu_timer/Example_2833xCpuTimer.gel delete mode 100644 Source/External/v120/DSP2833x_examples/cpu_timer/Example_2833xCpuTimer.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/dma_ram_to_ram/Example_2833xDMA_ram_to_ram.c delete mode 100644 Source/External/v120/DSP2833x_examples/dma_ram_to_ram/Example_2833xDMA_ram_to_ram.gel delete mode 100644 Source/External/v120/DSP2833x_examples/dma_ram_to_ram/Example_2833xDMA_ram_to_ram.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/dma_xintf_to_ram/Example_2833xDMA_xintf_to_ram.c delete mode 100644 Source/External/v120/DSP2833x_examples/dma_xintf_to_ram/Example_2833xDMA_xintf_to_ram.gel delete mode 100644 Source/External/v120/DSP2833x_examples/dma_xintf_to_ram/Example_2833xDMA_xintf_to_ram.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/ecan_a_to_b_xmit/Example_2833xEcanA_to_B_Xmit.c delete mode 100644 Source/External/v120/DSP2833x_examples/ecan_a_to_b_xmit/Example_2833xEcanA_to_B_Xmit.gel delete mode 100644 Source/External/v120/DSP2833x_examples/ecan_a_to_b_xmit/Example_2833xEcanA_to_B_Xmit.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/ecan_back2back/Example_2833xECanBack2Back.c delete mode 100644 Source/External/v120/DSP2833x_examples/ecan_back2back/Example_2833xECanBack2Back.gel delete mode 100644 Source/External/v120/DSP2833x_examples/ecan_back2back/Example_2833xECanBack2Back.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/ecap_apwm/Example_2833xECap_apwm.c delete mode 100644 Source/External/v120/DSP2833x_examples/ecap_apwm/Example_2833xECap_apwm.gel delete mode 100644 Source/External/v120/DSP2833x_examples/ecap_apwm/Example_2833xECap_apwm.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/ecap_capture_pwm/Example_2833xECap_Capture_Pwm.c delete mode 100644 Source/External/v120/DSP2833x_examples/ecap_capture_pwm/Example_2833xECap_Capture_Pwm.gel delete mode 100644 Source/External/v120/DSP2833x_examples/ecap_capture_pwm/Example_2833xECap_Capture_Pwm.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/epwm_deadband/Example_2833xEPwmDeadBand.c delete mode 100644 Source/External/v120/DSP2833x_examples/epwm_deadband/Example_2833xEPwmDeadBand.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/epwm_deadband/Example_2833xEPwmDeadband.gel delete mode 100644 Source/External/v120/DSP2833x_examples/epwm_dma/DSP2833x_EPWMDM_Headers_BIOS.cmd delete mode 100644 Source/External/v120/DSP2833x_examples/epwm_dma/DSP2833x_EPWMDM_Headers_nonBIOS.cmd delete mode 100644 Source/External/v120/DSP2833x_examples/epwm_dma/Example_2833xEPwm_DMA.c delete mode 100644 Source/External/v120/DSP2833x_examples/epwm_dma/Example_2833xEPwm_DMA.gel delete mode 100644 Source/External/v120/DSP2833x_examples/epwm_dma/Example_2833xEPwm_DMA.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/epwm_timer_interrupts/Example_2833xEPwmTimerInt.c delete mode 100644 Source/External/v120/DSP2833x_examples/epwm_timer_interrupts/Example_2833xEPwmTimerInt.gel delete mode 100644 Source/External/v120/DSP2833x_examples/epwm_timer_interrupts/Example_2833xEPwmTimerInt.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/epwm_trip_zone/Example_2833xEPwmTripZone.c delete mode 100644 Source/External/v120/DSP2833x_examples/epwm_trip_zone/Example_2833xEPwmTripZone.gel delete mode 100644 Source/External/v120/DSP2833x_examples/epwm_trip_zone/Example_2833xEPwmTripZone.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/epwm_up_aq/Example_2833xEPwmUpAQ.c delete mode 100644 Source/External/v120/DSP2833x_examples/epwm_up_aq/Example_2833xEPwmUpAQ.gel delete mode 100644 Source/External/v120/DSP2833x_examples/epwm_up_aq/Example_2833xEPwmUpAQ.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/epwm_updown_aq/Example_2833xEPwmUpDownAQ.c delete mode 100644 Source/External/v120/DSP2833x_examples/epwm_updown_aq/Example_2833xEPwmUpDownAQ.gel delete mode 100644 Source/External/v120/DSP2833x_examples/epwm_updown_aq/Example_2833xEPwmUpDownAQ.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/eqep_freqcal/Example_2833xEqep_freqcal.c delete mode 100644 Source/External/v120/DSP2833x_examples/eqep_freqcal/Example_2833xEqep_freqcal.gel delete mode 100644 Source/External/v120/DSP2833x_examples/eqep_freqcal/Example_2833xEqep_freqcal.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/eqep_freqcal/Example_EPwmSetup.c delete mode 100644 Source/External/v120/DSP2833x_examples/eqep_freqcal/Example_freqcal.c delete mode 100644 Source/External/v120/DSP2833x_examples/eqep_freqcal/Example_freqcal.h delete mode 100644 Source/External/v120/DSP2833x_examples/eqep_freqcal/Example_freqcal.xls delete mode 100644 Source/External/v120/DSP2833x_examples/eqep_pos_speed/Example_2833xEqep_pos_speed.c delete mode 100644 Source/External/v120/DSP2833x_examples/eqep_pos_speed/Example_2833xEqep_pos_speed.gel delete mode 100644 Source/External/v120/DSP2833x_examples/eqep_pos_speed/Example_2833xEqep_pos_speed.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/eqep_pos_speed/Example_EPwmSetup.c delete mode 100644 Source/External/v120/DSP2833x_examples/eqep_pos_speed/Example_posspeed.c delete mode 100644 Source/External/v120/DSP2833x_examples/eqep_pos_speed/Example_posspeed.h delete mode 100644 Source/External/v120/DSP2833x_examples/eqep_pos_speed/Example_posspeed.xls delete mode 100644 Source/External/v120/DSP2833x_examples/external_interrupt/Example_2833xExternalInterrupt.c delete mode 100644 Source/External/v120/DSP2833x_examples/external_interrupt/Example_2833xExternalInterrupt.gel delete mode 100644 Source/External/v120/DSP2833x_examples/external_interrupt/Example_2833xExternalInterrupt.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/flash/Example_28332_Flash.gel delete mode 100644 Source/External/v120/DSP2833x_examples/flash/Example_28332_Flash.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/flash/Example_28334_Flash.gel delete mode 100644 Source/External/v120/DSP2833x_examples/flash/Example_28334_Flash.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/flash/Example_28335_Flash.gel delete mode 100644 Source/External/v120/DSP2833x_examples/flash/Example_28335_Flash.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/flash/Example_2833xFlash.c delete mode 100644 Source/External/v120/DSP2833x_examples/fpu/Example_2833xFPU.c delete mode 100644 Source/External/v120/DSP2833x_examples/fpu/Example_2833xFPU.gel delete mode 100644 Source/External/v120/DSP2833x_examples/fpu/Example_2833xFPU_hardware.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/fpu/Example_2833xFPU_software.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/gpio_setup/Example_2833xGpioSetup.c delete mode 100644 Source/External/v120/DSP2833x_examples/gpio_setup/Example_2833xGpioSetup.gel delete mode 100644 Source/External/v120/DSP2833x_examples/gpio_setup/Example_2833xGpioSetup.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/gpio_toggle/Example_2833xGpioToggle.c delete mode 100644 Source/External/v120/DSP2833x_examples/gpio_toggle/Example_2833xGpioToggle.gel delete mode 100644 Source/External/v120/DSP2833x_examples/gpio_toggle/Example_2833xGpioToggle.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/hrpwm/Example_2833xHRPWM.c delete mode 100644 Source/External/v120/DSP2833x_examples/hrpwm/Example_2833xHRPWM.gel delete mode 100644 Source/External/v120/DSP2833x_examples/hrpwm/Example_2833xHRPWM.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/hrpwm_sfo/Example_2833xHRPWM_SFO.c delete mode 100644 Source/External/v120/DSP2833x_examples/hrpwm_sfo/Example_2833xHRPWM_SFO.gel delete mode 100644 Source/External/v120/DSP2833x_examples/hrpwm_sfo/Example_2833xHRPWM_SFO.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/hrpwm_sfo_v5/Example_2833xHRPWM_SFO_V5.c delete mode 100644 Source/External/v120/DSP2833x_examples/hrpwm_sfo_v5/Example_2833xHRPWM_SFO_V5.gel delete mode 100644 Source/External/v120/DSP2833x_examples/hrpwm_sfo_v5/Example_2833xHRPWM_SFO_V5.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/hrpwm_slider/Example_2833xHRPWM_slider.c delete mode 100644 Source/External/v120/DSP2833x_examples/hrpwm_slider/Example_2833xHRPWM_slider.gel delete mode 100644 Source/External/v120/DSP2833x_examples/hrpwm_slider/Example_2833xHRPWM_slider.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/i2c_eeprom/Example_2833xI2C_eeprom.c delete mode 100644 Source/External/v120/DSP2833x_examples/i2c_eeprom/Example_2833xI2C_eeprom.gel delete mode 100644 Source/External/v120/DSP2833x_examples/i2c_eeprom/Example_2833xI2C_eeprom.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/lpm_haltwake/Example_2833xHaltWake.c delete mode 100644 Source/External/v120/DSP2833x_examples/lpm_haltwake/Example_2833xHaltWake.gel delete mode 100644 Source/External/v120/DSP2833x_examples/lpm_haltwake/Example_2833xHaltWake.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/lpm_idlewake/Example_2833xIdleWake.c delete mode 100644 Source/External/v120/DSP2833x_examples/lpm_idlewake/Example_2833xIdleWake.gel delete mode 100644 Source/External/v120/DSP2833x_examples/lpm_idlewake/Example_2833xIdleWake.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/lpm_standbywake/Example_2833xStandbyWake.c delete mode 100644 Source/External/v120/DSP2833x_examples/lpm_standbywake/Example_2833xStandbyWake.gel delete mode 100644 Source/External/v120/DSP2833x_examples/lpm_standbywake/Example_2833xStandbyWake.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/mcbsp_loopback/Example_2833xMcBSP_DLB.c delete mode 100644 Source/External/v120/DSP2833x_examples/mcbsp_loopback/Example_2833xMcBSP_DLB.gel delete mode 100644 Source/External/v120/DSP2833x_examples/mcbsp_loopback/Example_2833xMcBSP_DLB.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/mcbsp_loopback_dma/Example_2833xMcBSP_DLB_DMA.c delete mode 100644 Source/External/v120/DSP2833x_examples/mcbsp_loopback_dma/Example_2833xMcBSP_DLB_DMA.gel delete mode 100644 Source/External/v120/DSP2833x_examples/mcbsp_loopback_dma/Example_2833xMcBSP_DLB_DMA.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/mcbsp_loopback_interrupts/Example_2833xMcBSP_DLB_int.c delete mode 100644 Source/External/v120/DSP2833x_examples/mcbsp_loopback_interrupts/Example_2833xMcBSP_DLB_int.gel delete mode 100644 Source/External/v120/DSP2833x_examples/mcbsp_loopback_interrupts/Example_2833xMcBSP_DLB_int.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/mcbsp_spi_loopback/Example_2833xMcBSP_SPI_DLB.c delete mode 100644 Source/External/v120/DSP2833x_examples/mcbsp_spi_loopback/Example_2833xMcBSP_SPI_DLB.gel delete mode 100644 Source/External/v120/DSP2833x_examples/mcbsp_spi_loopback/Example_2833xMcBSP_SPI_DLB.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/sci_autobaud/Example_2833xSci_Autobaud.c delete mode 100644 Source/External/v120/DSP2833x_examples/sci_autobaud/Example_2833xSci_Autobaud.gel delete mode 100644 Source/External/v120/DSP2833x_examples/sci_autobaud/Example_2833xSci_Autobaud.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/sci_echoback/Example_2833xSci_Echoback.c delete mode 100644 Source/External/v120/DSP2833x_examples/sci_echoback/Example_2833xSci_Echoback.gel delete mode 100644 Source/External/v120/DSP2833x_examples/sci_echoback/Example_2833xSci_Echoback.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/sci_echoback/SCI_96.ht delete mode 100644 Source/External/v120/DSP2833x_examples/scia_loopback/Example_2833xScia_FFDLB.c delete mode 100644 Source/External/v120/DSP2833x_examples/scia_loopback/Example_2833xScia_FFDLB.gel delete mode 100644 Source/External/v120/DSP2833x_examples/scia_loopback/Example_2833xScia_FFDLB.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/scia_loopback_interrupts/Example_2833xSci_FFDLB_int.c delete mode 100644 Source/External/v120/DSP2833x_examples/scia_loopback_interrupts/Example_2833xSci_FFDLB_int.gel delete mode 100644 Source/External/v120/DSP2833x_examples/scia_loopback_interrupts/Example_2833xSci_FFDLB_int.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/spi_loopback/Example_2833xSpi_FFDLB.c delete mode 100644 Source/External/v120/DSP2833x_examples/spi_loopback/Example_2833xSpi_FFDLB.gel delete mode 100644 Source/External/v120/DSP2833x_examples/spi_loopback/Example_2833xSpi_FFDLB.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/spi_loopback_interrupts/Example_2833xSpi_FFDLB_int.c delete mode 100644 Source/External/v120/DSP2833x_examples/spi_loopback_interrupts/Example_2833xSpi_FFDLB_int.gel delete mode 100644 Source/External/v120/DSP2833x_examples/spi_loopback_interrupts/Example_2833xSpi_FFDLB_int.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/sw_prioritized_interrupts/Example_2833xSWPrioritizedDefaultIsr.c delete mode 100644 Source/External/v120/DSP2833x_examples/sw_prioritized_interrupts/Example_2833xSWPrioritizedInterrupts.c delete mode 100644 Source/External/v120/DSP2833x_examples/sw_prioritized_interrupts/Example_2833xSWPrioritizedInterrupts.gel delete mode 100644 Source/External/v120/DSP2833x_examples/sw_prioritized_interrupts/Example_2833xSWPrioritizedInterrupts.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/timed_led_blink/Example_2833xLEDBlink.c delete mode 100644 Source/External/v120/DSP2833x_examples/timed_led_blink/Example_2833xLEDBlink.gel delete mode 100644 Source/External/v120/DSP2833x_examples/timed_led_blink/Example_2833xLEDBlink.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/watchdog/Example_2833xWatchdog.c delete mode 100644 Source/External/v120/DSP2833x_examples/watchdog/Example_2833xWatchdog.gel delete mode 100644 Source/External/v120/DSP2833x_examples/watchdog/Example_2833xWatchdog.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/xintf_run_from/28335_RAM_xintf_lnk.cmd delete mode 100644 Source/External/v120/DSP2833x_examples/xintf_run_from/Example_2833xCodeRunFromXintf.c delete mode 100644 Source/External/v120/DSP2833x_examples/xintf_run_from/Example_2833xCodeRunFromXintf.pjt delete mode 100644 Source/External/v120/DSP2833x_examples/xintf_run_from/Example_2833xRunFromXintf.gel delete mode 100644 Source/External/v120/DSP2833x_headers/gel/DSP2833x_DualMap_EPWM.gel delete mode 100644 Source/External/v120/DSP2833x_headers/gel/DSP2833x_Peripheral.gel create mode 100644 UKSSTMS320F28335.map create mode 100644 UKSSTMS320F28335.paf2 create mode 100644 UKSSTMS320F28335.sbl create mode 100644 cc_build_Debug.log diff --git a/Bin/.gitignore b/Bin/.gitignore new file mode 100644 index 0000000..9f2cd4f --- /dev/null +++ b/Bin/.gitignore @@ -0,0 +1 @@ +/UKSSTMS320F28335.out diff --git a/Bin/UKSSTMS320F28335.bin b/Bin/UKSSTMS320F28335.bin index cf420cd5bfdeff34e70f306352a8e83a19430183..20ac0895b8d0c64d741b40b7ecab5d99b61821a6 100644 GIT binary patch literal 24980 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%0DJa=&S(x-4H;|;4X zhirD*3ODO3+^MhRGpltgU9tZ@ac-#Bb3HsB$bM&VJH3Q&!j9OzRKqDlT>;azEjirN ziTnBLqfcNB2SZek2|I#n==GEcy`C}Ey`HgHe^>HxrJwSvN>3txd`7Ql0w3l}U=>^h z3se(uXC}KLcbjlSyO-*Ob!E&*oiFYlhg@o@)B@iKV|nQs(=~vprLoLu0OHy1&PN}Q zy&Z(5gWjpj$&+IdYq*)h`NS{mn_9nT;?C?$)(0ERM00uRuY_w7^%&hbs7IsjN>FRP zHM;+@+K6^w6HJzWKT%#owZkU3`YC$D(Z<`lO2Qj2y+8+@TVZPryag_}KKg%Ios<_O zJ4k{Cnsw>%S(j254rqHCx2&tY;X3kuQPr@u7&ozh6zAq@qf{5Rj?m^Q;LZXskXhJw zkXIU?0r%&t$;zyc*Y)B&XOWLyF7-SbV=9>o+sA3xD|}*wjF*ds8Q&v|Y<`5w=D;>? zWU-bbu$t(hfbd8YYZe>f2ju0=WPk4ET(g>KG1zB}Ot9A7lt=yfeSBi4(SY@jcewr%e_y>J_lPy43f8r}Q|bbaTTuV1xf+$z;5-a&591a0 zlsXq{t&a=yKT@y5?TE?^xiM2G-Xi=bVNN!%+@MkN{8FI4}iR7qia ziS?A4n<~jn@qn78thI+>?Ko^7RFgcNQoq1>_^__U%v0(oi0gcP%+lJ*I;H+TRq|e{ zB(1lmQ|b{m)LXr_mr^t@q-anA+@4g)zowUDoKpWKRkABpa#p?KDfKyaSTe6cP5dyl zN{cqehg~13O`z3!l5-fdtmmIn>$Dm%%ME6yfO~ENC;vx~3EJ#8;JziBLuqBUwaKz4 z%%u!A;S^P_S1UQIrfiQ-Z!1wB(PX62Smq~dYoN9bfj-##lCymPEo-?JZRCeqGCNaL z=kaH};`|ncv=$9HNm}B?m{uatIS${u3GMJaTP`wTHr8A@r0T107r^sR@<09zbAMUY ziIXs@@M%^yjWP(Sw~zOXNPmm4!lo5{#zW9e?5HK z^cwI=kVCHuVdzSrz^mbVUTUeJ)Fyp34hAmBK{hzZO>kfX2ajAP2LkLIKC!T$dcJBd z$&Kk4g>UT|4Ub9k&luZHcV_aPJl|{5Rmd9tcgkxLw&oJLQR%X$@X#4;Z_Sa#Eo8Zl z94rjk6M5IC^6a6aL;4<^3+t$kR}>nR$eWkS8x-*p_Up9V4ZEC13rl*6mTdGyOZ6a5_1qw??Sdsdd?SVQrrFC4 z`?D45oz8<1XJ#Gt0rDdpCn#>-g<4CFd{`ze5t6}rkBoN4Om?P1qO(kdg+|35RSO-~ z26kGB*rO47WHbw}Dp{~@Wx*Oh3X+$keJ{@(FtdHy4Dr*mFj_c6wD)A6PKz5vyzwAUpqI%E#44bt zT*t}Ik2ubr*@zpfsLd?AlV)Jw_VOIW1o*EYCm{Ne3M5hn(T6+W^a9a*`Ek>iU3=Ww?#BCyez1!s0g*7Eu_EQO)LK{2Rhr+cEw%VQtB=%o~NZ657gG8`vI}BhWCz zO?sQWF}O|R=8&1as`5W=Q^ViaXOEw*Q^V`{0L>ad{bMaov&B!>Bd+%`xZcR7!&jQQ z3%uy9H{fSgQGXPC;eBa9eFZDumKj299%52vXqXRJ%YlWL=;(67G7YF_P$rl{i2a#% ziYat;+$?N$Op0%H{KjF4hj5P$IhfGzcpYc#3yzmDcQgVo4~Xy4onw}uKuu8wR8y_m zeemVb>(~$GI1@sSaD67dAq5hllo=0cG?^GnjY>#Tg|KRCxs_}%k=Kh1487Cn^Ahx0 zDCKGNd2yxabY>_-*oKG+d{JwByb&pnbBy9tw7u0a8DqKFF)nUIe7u&k7&7ZNjMQQc46G!+7Bm_Jv)&LyKX{L4#WPBT-@t3R=E|~(|*M=Q0JjNQAz@K@S7N3XJ*7cI|6g(Vy z^jCNtL+Dwe5|#cgAA3y4`;+5$v&Z@mUh(Z&U&AeUk<}}Yl968T%+&!|JNk1sVmjdg= z>GF)l-&@6ArIBcpD;BR_q0y94x+1?VNESWweKaTJRU4D{t4i+K@9VINV&>1bH;g_`^vjzFcgcDEh4=rHx?fUo;dH#s-Y?qVc|txl)JMHF%C&DKyNuF8z2up8$FTSN zv41hfm;;RZV(UFR7R^*gjQZB;;K%Im+V>rh`ym1E*S?Oh%Tr*Nrjej;QD_V_ALbT# z5^p5D#P~R=N90Lau{fgjX(qIcWLv_HnTyMo&jb$TaP6BBrK}=fw~kOtyrR$;{wKRN zZ`H+dGz>?w=NVeh;ah>#h_5stLq}@zX&Qq?fzxj?jD@%5Pv7q`0N{n!BLFyn1pqz$ zJ+YpRJ@v4rJR!33ia)6%`~uD`@?V5*1kFm{X98k4t5f+>V*d$vqcdWrGg>*Ugn6y> z`m}yGLp-B(C=JTAQo;m&8m1m6DMa7erzN;PD;&I$Cl|8}={;Ee+p6ZY@ zsts;&1%FNOvDaHREpT?o3l?YHV-YGH${y{DqfHAel=t~^Wsl_^er%}Z4prIo#qyR- zZFEzp!_6LcOW0TI7C6K5nH>ujzpuUmj~QVFd!09Tl&yq?mc!$a#RLA6qOzxQAJu*% zTA|o8yTXoYv>7&1?tCpy?NdIrsOR6T#r6DeIBqt6!!+M?qY3Y=@s?#BOLoeRDzSM% zXcWBst+VfKR2=A~ZbRO$H(B^2z`pjI>YI0V%Uw>gf-1_cQahWeE>XW> zTB6;TcM0`)c1Ann?w743Btq;U1~sUV15M zX(yR?SF$%d@m7BIa^3IWx?-X36;iPfC+|Y|4d6YkRrmG(bM?+8gk^*uR2#6`n((#Q zl4Q9NUpw))CI94By*IB{Kb3m*Or18DIBU|+8R*dP1Ya(4&s1m%^euXkKe2;vHLN9B z*VsWj-efV!&_WYm&5`fZrVq%ToPUz#6zn!sn_w+6^8_VyRp_bUJ91E|GdA%?{-^Lu z`p$*kZcd$$W~w>Mk_8Q;a&?x|+GNA-#yto+_t1TyAax(GB9>lCcLcpI)M}%;Y!|8_ zkg6eYff@p-8t|PT*(1SGV0AnQ%O7d=>FrS~IySYeW7b>@Gf^+yTnLjj=QZh8yKs~8 zilNE^>uk0&Z@tB0k(EH_1;#aAT(J9u`Y5wFvn|;e!<=obIlIY3wmx&qkXp1k3(lg>LCO}gXmyyhIt*Ies-F`VKO@pkh}8OryuOsamA(hqYy4Gy z`0{o_FE>KRqZz&Qjxb_J5EktU+F|(C!j$x+7EZo5-Exw#P4Igi>j=WXuwZuvys1kT zj*YNaxiId6nB&gE92a4SE!w@cwTxE;r*+G1WuzY|6Heq)*p08x#1$v<4X~26mId?4 zn$JR66i>tbC=K@`;A-Xh1EFkM` zsvOuMtY`ebUQe-QOo+L!@s7rqZ(2W&u-EYg7hVrtt<=(J+&AEX1TBgDg=^G-$LKpY zSL;sgK0!H0UdA`Bc%4b&3+_cJ{G*SF8ur(G4vXU=GLH6QUbVwnY$>LGR~I{rr+?c} z5*iPkkqP+L828EXj?uEoTk;q?VnB;SZQ(BDg{PI4Taw~g(E2bQK955@8NH|v`IM(= zMi*c4gj9MG5DI&;Li5u4FvcL@T)a>$NGCcSKSWi(yd)&H`2apU9G40?hytf zbqeHDl;_8=n{dx8cgGGLX(4so!F^5j8R><-(u*7xB1}_(sO@goUPNg)k zKT`T4uTgh7GCZxU6&@k&9eI+vhHB`AwJF@hZ^QSOw^_goUTqI;7!?(CINgeBHHMyV%5yge`h1)WLpY-c!ghJOX>xdQZ8fbI$npVG_#FavCW5&#DX00|H%K^hTnQKlxC$^HFabcLr@k@^-&|b>m<^}^ z%mG{vmq;MO8)VUbaR;c zRZfJj%t!JUo6`9>^FP2x@>i;GpN*4*`5zjO)Nf*>^YNb_58aAA9^V>_FUkg#1EK&X z0pd645C#IkPRpYL}`xyy;FZxNs}>n#UL3& zvZkcS3m6R$0jwO5TLO7E267v52@n{AvPr<31iVRFoRv=k-X!3a0S|Er5GX_0WZ+E( z-efJ#$|nPFGVrDV4{-?)n1ZrdMJB*3?G=T1G=0V%AX^v7Ro3vG=ZgK;;;n+lQu2?4 z6oxGeQtV1UX-?3np#hM8L5vIdy#W!x-K1+HJ%IQkAtWNqSR^8}suDsf8=bI9j}F0> zK=uSP*%O!s%*t@yAWx#U$i7hQZ{e5&^T+}93!Dmuk)fi5eYOZM$C&{(uz~E@oQ2qc zdYtUo6l0@bRQ0ca@G>+I5b3Pj^sX(x*DYW4oeWtj>6vmAm$|9EO*(6U8*#ebFAA^}O}pUt1xZ;<7MrAv=Koplr+6R^90SGl zCBIPN$;P-t$E&JQMb9qWSILgI>)F4@*(GgDX&Tht*}9EK7~~Vl)_8|{S5;)`hQ^3F zfH`h&`i&Y{s`M6GS5-xp>A8_Rl{-2pe_4A|$9)kyyLNI5!ZJ^rVP{#(3`xyGY8vdDwU!r!(WAC9_hpkYQ`6_t1OIZ@Ws&i{dqaw>{(g(WdDcHBRe_M^1H^6=o zZu-OJJYpakA?)~jmxL|F5;D0hTm zqiBbB#sT!i;El-eQY&kL-iY=}QyW9ACyZSfn@8^_* zp8^(+pe9d;5N--$=_1;v|0bUQujY2trODUM$(y1TAUyDFK}jvntnPR zy5{78=hTu#lS7jSj;m%ZB#$9V>+gVC>`#!4M#OL*m;wnq8DDMzHqaSR zqZWG#Jw+bd2TYJA7UMUFgo&eYgHTEz*^N~P`}U}+sQ;1OhKW`m+pdh`?;6$^CPom3 z9j%`~KCaV}Uu0j5`Qzc$Bn5C8Q2PhnyHlocF50*mtrWB&2r zur0bY!bHQw@4yaOY5b0-60fbr zpN;TTvToy4k1(;sKUC^bhf4J_?Cb=#qLlcDQYC&H-bALc61;hhb&hk6ca}P@c206m zc9uJ*I;T5lIA=MpbYA70;GF1mI?J3>oYy#~Ij?ojbY6!y5%ORFE$%P+uP0LuWXgTv zZLorpU1C`~{axB2TR&?r4&N%QS*n)!!=cF1ipp~ zSw2{9k*7>)S7MsX5HiWrQ}ScQCraq-zkp9{YPj!v|ll!RsL16CocS zV6ZMeAnx5`?pN+4f3*k1?EX%p_))8@r!0ums>7GcyJ^l#;EzG4V?hM5zZOOcjCMzn zv%qNZDfN#!6-bZ!#X{>}SL5c@z@m^pIna%o18(Dr$6}A}<2wTGGu67bNo^V7*+HQh zA;s{$S7`P&BjnG157s=(UiCcp)F8Spaz)zJlL1bl{imm_aK;$J+<*gn9M01u!9@NZ~` zp^RYIV~o9nyiUMfvT&(rEl<|o6a!NF`Mz>NPE?Js$HCS$ohHNY&ui-6I9UjeLue*y@AHo!;EF!lz3vHuHsk|Bmo14fJs1vKzKwzL|!>FnG6AudZ%$fB!D~wZq-z88NG@! z5m6e8!9y5rKn2Ax1Eq?s^xoesWTF$b8Wh`DR22OoRoYIBtyhDl2k(y>z%I6|Vz~X#XJ|D3K zQk^e|l;)P2sA`q1k&Hku=RuLx{A$fBYNl{Bzf|+Gnl676NekGWFUmI}xq<%9H^qSF zBQAL!@&z5H#YPvAV~??mtB*J=)_ z+4AE^N#J7VU&OfPPip?EjujJ{Kd<>hy;Ob{xg;>&`Kg%F{7ucb>Qt#mN(0lJo${;5 zq`+k7*W$9~ztw!HP83DWCu;tv4wrw96bD8)|0F+(j1G)(c8F2U?KLrVq&yxO61d3u z2QjSq!)Sivrg=w~HmskJmh=E*94{H`eS_m&+$2 z%K}TCJH++PKdafJ-XNchR0nQ!{#@>g{CnUB&fQ{VbGRm?t`N62|5wd_tN$tgCvtn> zHs}A62O@U{);OEQ9nJe|eyy&Szl{7Su*&(2xTX15HTzV*xVic1nqR2@A@@dZ3jEOd zl(@2aW6cBVzsXIJ?+3h2O$H;rz#Qj;;;QD&HT7zx+!~o5sB%6m7B)Xx^N6}Y%xi9_ z*`i(}e;THSuu6H>IIj|Jg*j zditm9w;^W^DBRANo%(8qLVT((J)FSkd{~I59}(hvaFuYnzM4~Y{SFh}X~H!OJM~JI zPa!&WUzcxgmv5fw)Ajl6)AcHbAM1H2zf{=7HR5~XI&p)zL!^o|qFSgXGye(rwLSv5 z>>@*CBVz_3&Q4MU2V zVb*S@2`@Kmc|BuNEpP1d9Rk*y`zY?WUA{JxQm6j=E}Fum<^CP)cskRD{> z>}ryAu6*PcoF#>!+#go-$5fWhp}Es~pfL0_{c#EfZi}Hkw8g)GO775etl;@|?rnHK{E4sCPrLOun?4f#0(&X0g`o^xBQrvwX2r((x=Y;5$v&X)a zb3qnwP?~&`F^7Z7rUL&0MLy75lN&=Xl?BBXN)-)Ob-ynxg?FznB+InWODQobr+&S) znqb}f0{@N5BnSU$4sX8|>;vT+m1&waruu)nUa407Au;i`fz6ywX8tFuN{4K)R8x63DpNoQRJGKNN-PmOHCU!)pj@Og zkENVzTChXk3wjHc5!!{Q(+!GMwRa?PO$(CT-iWrI23{8^y${m4YoT&TpVF#|7CrRR zIHoz3X-*4{thRV5|6b%D8dJP>(2SQjEqFn-)r^VfxFX0;o9i?*rUPJ}_dwnI)^ zZROIZp{@&+Vy(pBu+=J>b;|XWuT=h<8D|&I>eR0B(n^DF;G#aQ+2T1pEB0Mwl&&t} zGD?dRyqBKBd+8~>mj+MId#TBLY4P2iPaZpZ*>A->F4|P6y@bSW0dM`!mS1C3v#jC_@-W2YOCZDjUB5Y3z6L*S__FOk8lI7gO zze2NYbp@SVE2%jvvz8_E-QLifJXM#P+(LfT`x*dX6{Sr64e zu7^>|Hj%x>sYS$?ec@4Z%W^&PQ#l#ExRr8+H$A4GoHKVT<&|5)qbRS@#)+m-dDs70OmBomgVT7s(@MBV$<9+mCf6oAFH5AsM-m{t_r@&V z`(r^4r)pMjU(TJ5+)X~0)mdz>c4^L0MBzF;{UPdy1xg|M^)vMABE^DyMtM3zdmc#( zl_oMxxQHO)H&Wl&Iz4xkKj;oQgTk8`bJxnrtl|#+XHxN%N#s4sd2OD2 znnSVT$`>#jK6%U|%GUh^D=T49j&M_-tSDB4jWUU9tH^#?|6W(=Gna{mllLJ)ToF`` z%@nhWXJJkmWy-R_hl&|!R$Qto2ei-X;+@)YnihSfce~=7)y3tLp!4LhsLcKlm)Ext z)hisc97Ol^rB`Ta;CiNb@z@oT#wn%F>mift_f-8c*}OIle-`W-JB zYok@X28n3)eS{K-tBCK9RDzgow)DqIEv@=rU*CbXoYti(>=7I%?Gfb0*+I3=e!=Xu2J6oqIx)JqD$7mvLl#Vzr+tPuT9h_swN zDNAf8)PBmb3eo3;nuqW*3m}DiUf;80BoF1>erjFOJ5lb>7twaqLlrb{R`euEmnTbS zt56T>SGPZj{3aL6jMD8(FE`gRB`;f4R8v_`aVsIOjA~zFR_ea*g~Z-ckKJ$19!K(6 zXe|^`y;pkzpV}so^YXkxaXHT@7|VH9aUPfSBA1k$Gj-YJ;Dbke9^HaaFWTDo%rDdK zdt3Fd|H=KG2ktxb{jbH`|I*#qDLMm;dBkGni{IUeI&p}0rt|8_r~2FK;H(3{f8RU0yt^&XNS8|oCV>!94ZhGKf)mF(`hLhXsAK}W{=?b}OqqQ;K zU-!fM0Qu0u2ldVuuqshVUMV-;i*;pCkn*L!9nDikhaQj=`bN_?mT`QnH6WhX9Wjb+ z&3#vAh*9v{YFDk;uuax$2iwUvS*gd`-H-iKvD>T%9hgFF7_ZdlQ+laVUrcZs!(NAs z5Ms4GCQiN9>^mmRJlf^p*s5e>tt!B}al4WMAJ$)QF6X`&cx9C~_K$W8$IZuC zJ)Zk48g0ZrNFI$o>kg*HK({s=l4+mimub<5Y>>rIYq2WZqui>HIh(8YIJggh^01Wf6Xpb^J}U*i5v^_V z9k;k@?T6}XU2E^ws7}$^G%gKoNcn7H!$f6s)|~4o~w-@iygt_C5p9nqP&#-Nm}cTCCbXF_yO)ukf>ST$o6?7N`&R6hU7<3Z zvC`XVw9D6LZ&CgI>#5~2gF%Cm=FR9Kg=Cy+ZtwKuySKSQ(~GAMC|Q+q-E;@RZ&$i% zlX^1uYn{@whZ*VF!zkSYNq{^+e%v{(ijXmk*ksADca3I9ouxkCla;aDlr)-| z*SaBJQEhW@P_+wwqfe z`87s+qBKa|NgQ`^%e=O%jmw;9FwaZ*t`KP=?mp(0>-of-rqaH7J)I)37xZ8pL~A`P zscl>{4_2eM`Md+kGo%2&Dtgs|v)ych7V2Glr#s)d8Wxb=i`zxrl|Q6BB80i^P(^64 zzrcS$rnTyyg!6=z{h+}y-yjBb;781*ILS2LFTf%Brqx;C!~TkQmjo@)JPMiTr}Oz` zRLU*H0hJQ?UA&akR{d4bEF_w#Tnb`J5fezn^vit}d;SA54?SU&^~wEKv(z8g+00TY zjY_qfrB>8BwYFdd&Z3@t`MSNKqSlaKPi+R)Z=o{G)!+4Ct!~ok_g((|f`7lJU(|qp zC4L=mM|1Ti53T*J@9FZ&Xi)WAvMz_>ku1~T5~cEdmxfYl#i^kAyST!fvj}3v zEoN%iNl+Puf+Wn|S$>E6K^k}HS6c;U>vX};I`<^!zD@RXT+bQQ7y&V0){=5L=cIXuUg-#s6W({T2 zZp4KVXlP_yAp??JkPgb~O+{}u?k@0;7kMFDwWu5VW5Z86=2c2oo$6YtPqMi}5%KCX z@w0^G#A^kj&T-_&kX_Zk7drG3kx^8rLPoNQzOA!twd+CBEhtL^aH65S8v2&?qKN?#WDT5}*1r5t_oHCveEzs$_0&UJVU9Ahe z6<$x;h9`t*Yt&jQe+gY@`D(OETUtBmWFl`eh6Wv|C|@nMxS@S6*PenN+x?(hqtR&Z zRQ-4F$(~F*^W(py8>=yJs{dNp8UN^)sy`T}wJC$8pKdm!AYGHg+h>U!UZ`LBoa%q& zmy{#R%#lespu2K-KgJr+BppeZs(%-#k&Y)Db8gGNUYIvZH_0|CJeXdCRCRR6(7)xW%6_5baecyB4ttT#Wd`d@=Aj(bM+2ezyJhWiZqbgG_)akmgN z!&HS}DOQc^l~QO3om#+Lw<2#Eni^;aCGi}yhwcMH5_YMQVDr7j`OY~U@{F+ev-wfV^8H;-#m z60ePBk5S$dK8Z)uQ>!U7)(90F+@CNp-`BryA^pXBT{^91U%4d-TZ{OnB1aMhlv}hk zDa;z<@dkBm0GDirIOR(|IY%98-7%CA=gMqLEqZf@-iOOG`D1;ip`oM^6kgYuAJ?F& zs6(TT>L16>+87=c)fVgJ!GRbJU3Jv5>1HVRV?8PE&POpSDTmpjj&f}q@XFQCI%IW| z&n+qSxY-I+l2Jw!<2dkE3!fkwwP+PT1YFdf6_u>S9r2mR)Crr(13-&0#@Rg+`r;9fO{;@}l@`$%atX+Y_q|2fCqy@Ke zKE14ROt&(!y#w0iWLI&YBncp{U0Sr>(Baa^845kF3$nRT8K$`^|Gc=@Nx2hsOm4wM z?OSlFy9ndJrC6$6=`PLC%*R`r%5u+lVuU|fFT5YeT-vu=%Yv5bGDn$~#c~_ZiG6-O zX2rHd&ay}3RuAi3lk(i`D)xZSIjsMW$5Sa~!Gu0itrKsO=F8AhbG$KfFy11ZLao-H zHC8l-B9u+2r@hS3zSm7SlF+H|5M`UP9*_+*vqv9t zIf&QYNj>eUif$4O*s;8+`g20bV^771HKh(cl8{wsf>CF>HMkJ%74T0uLTiP5gJi%M z8&B}<0@et`wrJ145)Q=2jB)F*6OxM)A>TZ_yObymYBwmJZ_a~pilq6Z`-(Wl7HxqZ zjTo4JX4(469M2@1?-_oq(Ib`#OJlxhaGJVFrClQ2h?A8$3u*n^PoINYx7$p`bDYI{ zT;Kbx>VJP1&+eEzG1FJ3#};5`1-&Y?sR+NqeqIgYs{qHeT0}(eg}E0wbHByvndA>%TKW{g1>6S2#`vu|yh{yV3aA4w+CNYltF7mv-p5}J3rMD*9=-v_c z*c)jr7T@PPO5EqB871+K5L{s=!@5-Sp7MHgO`F0R8IQ@;8vRVxG~A|k8%?xol^lt$ zS^_H=RxX|`)VeQESHFUpkW5XYV46HT)4%_@a2Z742NvFjN#K;E@7x|xtQVqY&GzI zwRJd$`#yFN!_kl9jHF$Pnee@aP!g*z2F<{B5`_)YP7GzIdV0HFe?S=T)6*f zo3Y1ajo3{%i_^IddIzlxGZf7W!W<2XH*G~yc)&)P-Tm~4-jAQy!gz~uMRgf8KB=rB zA`M2F=4PF9oL=YFaDcQ0;_%L1jrqoXN#<*rI3wzuva?qhnvt#c#@hOq+`)2CgpLcj zjrlM0?G~-P3N$jY$9lRv=&npIDGR!T?q|ki&hB9y_Wq}hGd0O`lTYG|N;-jP^K^HqsM{{xRW4quEw~{*__UjIJudZ)^+7jlvUW()Q;4maO2{R?z9c|?Mzj5nguJK#YsS$ z5wuub`5s$D9DT+bo6)KZYxN91W7eYo=!9VOE1eY1L%-=8!7Z+wzs zdY=-LeM-#vhg@q78h-#rzeBF584mmbbap=Z0b=_ik1NW#l45gujI~&#?>OYbZTl3M z4nB`hVqKQK!H_>gYeky1<2FnG%@{wIBi$7ZR~@&>{y`2azOem?dTMRgS`~eid1xy% z2_&aD)sHJ<*(j^BSTb=(aqwwF-xQ};R)sS<;@r@&l0I`BcJHJ?5gVqU-|J;>)(1~v zeMZkRWAs$KrHv7jkeYLC^D(+m-B~#+0Snz(j_b;D^{hSf-I`^~I@G52;nZr1p_A<$ zKP~4LI8{nfkBP3@a_EZ(LP^pbHl=yjNz&|KX*R}`F_)Zci5kO)IlV|ot1@{-l^gksg_mr4{95W-BRqeKUYAd3R*!`D2+$$+m`>+ibUVn+Dct6Kl z?5dr@@<;Qut<$j8APE$f9PA)UL=N;VqHgJ7)qnLP!uxfsd{eo02zOke`tsnYm{Tj< zQm`@nsOLf0U{sFqdF*rwbK6RQTcvn1$1=peR)#aj=QEwUAA;7>N0MoJGNsQAI}qp1 z9&uqvgfh3c_<8tEg(;|y@y zBLhQue$w|Wg0{-gYq>&`ur4NRwVeG#U7s$k7PMJ~v^tVB8hTWF>o?FBlK#?;-7bDx zKhdq-!msMt$>H2m)^?`zZFrNE(9Druq#0vOq#95b5VSx)Lb28if{r2)Aehdv8D?5m zHufd7C$L1(PR&war+gRg$PKGoi84$dN{MU#+B5}ri~`n;vcXvCNsmt}D&6U{K~F{N zsI{|utc7FG^fvrtE7ctA->Z}n+yg81<F3Ql`x{sMa%8grUdiM%&(@U(k(qzizY*u7H=>mPLCW z+@d8~B&`F>zgZWQ{cDVcavgzhkl6T?JV<2 z{g%<8Ki3Wa*C;v8S+h)4iNb#0)U<=XCy~;I+bH_&#Q3XHrh*#kgWKTkOe2X;=t;Zr znb`qr#biF$bLb>KvsS}SkL!E7KFnUpxr`bw!O0bTnsR2=xA)vGI+S`!t@~6YQE=gW zMLnD7;Z&S2IE)_V(Q;l1)(tZcdaqBn-ix;awaXXWI^XKKpwF1S&tu zh<`PXWW3Qe0;UV(f(2$+^g?^et_CKB7iL+Gmp81)UI_xslea2ZlZMhS-_JPCo ztWOPi|F(i?+gLl0td}EG2j_f zFiRK)XxM6!eqyh$5cjzR2lc0TvgaiWYbv1#{XuXzW*@vhD7qeVJzfWxaBNW&mSFV**rX9I9n&(~P_B-G`k7zKm%R;1@1P>=IZVyDBegcR@Qc z7~^6wtQom&VdZG*bx?})YQ`anGNk}_6)Oyl64lzg<0#I zz`C(+!i{tbF(pLpH3c?mcg6Rc#YTC(xupV!Rd89aZLUm-;Wr5Vty!bLtZ-?)q2p2C z2w+!MfIS525bR#d(ua-FL1zWyyo@vFTAZa{JMWO4n_X>U9{zZ1cy4{G z&|lDvTvS^35@;51*KL z*Oo#L#%S4;8j_&4i%zO**R-sVpTgxloyDlEWjZ3XGFj(K}h7LWh=}PcQ zxn1VDkZ4$N_e1SOrwvEvV85vQ!;S*~CBk9u<@fF*JAuL2-O)E)j9J*?O~dRMl@{D} z5mW%Bx4#kB3P1MeNX0CKG=x()teD{}#!;^{!UGNa1(os+F4m#4SESah*^2@kMU|I)C?fFG2%$-GwGw8(&;WAJt*Kq;bi zO;?KG6w#``4{WAn#K_6AK^znV-_+@jCA`j!69Qod6tZGW_yb7u?U%ApO6Sxy{+ZISWHgCJ~?P-B9nR+`(ex5Da1 zQ09obT1dd{3R!qmDQS!yNIwbtD-#>5C}X3-9rN z#eo?tPmQLXvx<2!dZ*%>A;~s@G#d(Rt!Fq0=fkCRmOj%{jl;A)rq?y}-Jlt#`EC$% zX3LDxJH6W#r;lEFk?k|txW#WY;x%yew`3jHS3?@G9@+Y$ZwS(_>^~)+EIR3C2AX%q zBukh$h1>Y1<#xq}Rg&nZ;>E4eu31clUh*Kea<9+Xi+pk``!k#xoqHeKMR7(RTjhuP z-C{cLiqkQ3-m#1^M-jF3KGW+f_#5&WziB&Q%E*TZk((GM-^X% zG*=->7WCp4T8p@}HhLF9x3IF3!v6(J4f|^H*|pTzblea8<|tuC9Tm8}3&Bq|9gNw~ zl4Q|u*LJ*gQLJJVb{R*WM5!zFKDHGmn+bZzt6K(czYA}4&B}NKM zgW^latv~a$Nj@BcM66Q6eaPZq2xN4X(x?p0%HbV5F%GqVl_KAsSPYvE$ zYqyLzRG)uq?MVFIR@(*#O#yy!dxBWf)7;8u(A#RGh;7Xif!k_H_9QINl=o=&WVeK& zwh6cDsWo~d?7@&9mTI@*WGi3=d0TB7*|!0Up-Q-c2Bg;4=!BE@c8wlAsJus(WCi{j znFZaiB}6o=ppk9T=xx$qsNPl!NTug}oR+|{0xOmI6&BcO_BZ&?=rL(5YDm~nkm5STcLel3>(VaL$}t}^Lw9fVz=U6sNS|Hf04P~EebBgUh@1a z7X}x#-m8~fxd`w}tkR3n7K?zpI9KoJflmACwf4FnE^P^|Ui&(DmzEN4^RZm#TWd!n zYYPwgP=;ZN*b%ZrUdZl{)^f6goELVOF|@-V z`$v*wVd(>mRZ2Gh4#c=wrR3!Qnl*8miFb97#aS$ivq58(a)Fi=n?)K6o7^b2%+>Af zvq)OZ&;q1Mw0wO&$L5!7^d=9lxsBb@+UUA@dO45qUAaQEtSi-bzqIS+nfY$q+Zb;T zF^eJ(g=yDBvnu6`nmH@-XV+HX7HxLzOxyAN!TwpW671AxBX=}78#kpM8D7_hvZH9B zS!g|yzC7fTmg8K@CLd{x=#-lRdqdU#Vx#dQpRBX)$EupaXP!@Cp9u?eSUW-sp{?P! z6moc*P1UhKC0oN4sos?9;tu$N0+(W@(Fbbf_x)`Jz==F?ESjpXC}qt_PHy5h8Z8fh5yM}>=*s)?p7DUpHDMkkh33uyfTW4H2_v5kQpz)IuE3rLI`!OA4yT#n zez}ovvg*XgyU{uaNL6U3a&uRXuD6Qaa#)gckljo757{op@xq(5Z>iF-j-&k|hpmd2e0zPV=nF%)WQ5Z>yw{f|=}Q5WgH~aJ4msFAta?|G zJ$*Oi?|^iKcNLxY>)k~u+?sjef@*tRIr1WfTT<4gz~VOtv9;+&?5-mDWg>rSwe-FT zi@lFyR`2_n2#n)7KCz?ew0SLS!AKv^(vfgFd60 z8u=x^$EF0KJ7(~Sn@r&qKTR?Tp{253XBf!s)SAW2Vy1=h1COS#>7vyqB%z?%7P z5}uZvN+oqmbtI=!J-Vf)Q|bc6sbyn!Fm9%782e{`0xN?RsRtU0>5%X<`4S54+qdtg zy(xX4guaT>)9K~AzKDXotYu_scz-{9Eyi-#Ko5EM6ETKHs zKD5?SUPm8-A~+rU@&!uzNq8wI;iYupr8AxkdKk|(&Y+gTvAbU)UC08(Gb+`L?`6i5 z4rG;bG1?HnSgWlo*jMZ>c0+G(SYw|!?B=}&r9`!hD^pg=1~)ViWjDLAPN(u$5LPKA zOrwO}Dy*cOC8#@2wK#($zC2UTrP0>_lE3#-4*Ni|I9#QSg=XK_IgIC(smV718Zk(}(o1G?IWx80 z^)rKxOJ>$jsHc=mna}Yyn`zZIKHrX6SJ!vLQTq5W{g!C-?H246+pMo&3LTbzuMvx# z3#^aHFT16P*DY=1VVM!nXW?&y0RMHxj2{CTh|`4(w29Y64|I|8x@?o2LT@f9Y-zK+ zLi)x8ZG#6&Q`!{Hd#2|u)!(?s+F-#;hM(_I{hpuGxQ@s{TGmFZm%i!~k-b|3@_F5Y zb%54)dJAyTRVLh(=a<#Sy3cO}Rv7yLTPMAfF>q;}w!|)COoLKt%%IadcTH!W-}K{E z4Am|ovo;PoNP51Aq!+z;{xZD!2*akqlfP0A75zqrivrL6ET42-o_yk+OQ9E)-mgvm zdSl0s=chd-*{An1W0j4)53cE?-1p$EaBom{Yw7KtsGR(>qI}Va9qnLWW2#e!77du+ zm14ndjwfnZ=QYAMuMxI+9=rs~ZFl2kYu`8rtwu>WYf4&K3-z~BRR3H1nAf}jP8}XT zdr!g|M(eH>novq>!f}S+0LX4c=4m#Jf(Z26d6I7X$&QaCW~J`7#r1nejN3L1DZuN( z7|;#l)cjMBf26pC&t>dGZ;ce=amr+fy%y0Mi1qqbe}E-oAfKTqPCzTj&~89lw>Zqa zBOT{*4i}nGHDQ1u?r{lTz`I9+q+26MWfP=zk|3>*1mpDM=|=e%u(p)ajq(5sjr_E8 z=XmU_7^)@=5G-VUFGEg8nCk<`^#Nr50Soi|cXR((xPOX8A(uvm=2Udi}|m0>4Ba??XU z@(vyS$^Dq<*TTF-Xw#9X*gzA~H)bd-N=%4v%TPFgHXJDiVN{y&stE%|yn#2;q&L!} zHammktV%SCOyP6JwT>6%ETLO(i?5k8{HLe@Hg6|H`=5(#-xXMrU%IM z#+Y~$^HK%zJ27t}pHNi)x~Eb<7q=wND!H5!XPP|vN;tt16GluZaO+I*BEy7eDGo;n z_BZkSoA~`r{Qh|cK5hpXACU0@86S}Gb4>gk6FpK(*e1M0XZM?E5<5FZ+wN9=5U;MAgP9a#R?zo zp1Y?C8BZ0GQU&g$FWyUbns4os@T;bu;^TgU28WY!8#xl#L~U^A^gFOht)5?8RlJ~h z5nhK&Z^|<0Wb!-oUN}qr(l;N!K7CgHbS-76)%#1|B57GVy?B;wcK)2=>Drvi^koic zNM^Hj9pW4m_r>Db&<=TQj%5oRl+&nZr;o}QkZ zZ;oT3_RZEg_}Av22)*eP&fqdM)i$c)@f+afJ+;SLPeOqt7fo;ChxU{Ji-~ zyR6_HW?W@{ochsceEF3&U#d6t%2X?8O)s8byhyts*5sR`%+dPeP1TVY!-B%K!#6L{XXlKn!p*GQ=;+2(0QU1yVNiW* zX(jAc=jlG%ZfI5(=kF?BjJxl}!D|6`zXYiLtSDFPdgREB_t&61BRE5I{*X#Z zE<;*or5e=Uy3VPQei84X@ebULb-f&;sl0N+%JRANtrLBt`>!6n+{2ggmb=x|4!0K3 z!vp0uchHJA-w|j{J$NgJFXOG?{9OJSW8f`ed1dQ$#*1g%aA3Z*N1(xAZVxXzwIdL!~>XY_%uL^v3`5C3K|b{7BkfPWYZHE9#0wRc4wkljdLzGo(*CFS@7n*E zrBe>4`?$IKHP?pbuX!M358zgO$EM%wq50vaep$<}4OJPjp{v7lpP=}v9h;uGDU>T@ zoZ{M^{o1hbh%XW#L`T6#O@HLN12jD2*W7fw< zZJVI#=?IO}#g-DiQhzMt@y)8f(+*AP=eOvEX$k*4eWx~f8BslNNjU7$!OJz_d5stC z+#F;qx}Akh(_IJdIdI>B`>`TynWKm7YcSp$H~n={2=>IgZrZK2R~PC+{Hc1LzGD+{ z9;DiZDPL%y2<&+I9h@}M>)Ol%F%o( z7~T3lhwWWqvK<(S?=HpD^;ap3(@u6*%wNnHn;C<%9>t7dZ7#~d_Zlb+xQ64wOP)Wz zH^UpCd^y~O(dx=4{i4f;*BvXfjn&ZNPBmh_ypAlL4J~>h+lAs*A2K>l7=LNS_!}d} zU$ij(j)L)53`TPv(pbbb`{UV98iR4d_^$JX?7xVAhw<-l{w?O;QT#iGe=p|War}D; z|6ayi zz9(l9uDklYzxh5_OXi_I@BhA)Zk)yYkGkydAKU!ou}xC_aK@m-ckSq_Bd)a>hcaKQ zw>``wj=p$8U(Wf|wi!Npd4Yp;NLW|u1-^d1JYV()!lDi@z&8{u z!w2Au9xgh%4>BiY+JI{#{-gV>!?UWz7P2C>UT+;90&L9R{>42*cG|Yr$TYGqRhG=x zt&_u7%Xia645uG@0~msnX_?pReqFa!%Xjxbw=;kFv;!@MHR@dbi$!?VgfBKU?6VBF z4qxb-hwoG^#0?APts88N z%yz33guWWWzQKGNABvf4l|u4@95`Xq*O;QkxEV^NJDyd_5SuIOi|c4Vg)w$h!&vN~Iz0ltn49)+p^eR215of!#9W6WVPmSSy{kL4DqGDt(MjxtN{@>-AMNG;5~zBXSu{( zdv_FX2=QGhOPVJ?`YhRf(l;UU{D!uHdLq7NP><}+vbIC}bRfMtJdD!9V|Ik2>&a(H z3)ePcP5%&|e}a_==91f${ZIF4313b2^tUVhT6Wr$*mlhb<-kwE$S;L$Zg*jn|EF$2Li7=F;97{eAU9!|x#VeD5@3f=vWz>28jlsiJC z04C<1-V($kH?0@qY@G-Q(F+cj9by>VI?yNuoC$Xo+#bgY!5%6CQcRkz& zxSzwl3KysISNQwhlL$|Me@;^PR`|ET{Tl8axK6l1_X^>LTLu@W^N+%NKw~G|i*SF0 zbC~Tm3UD@@9seEt3uBHhpWuJvL^@)M;9t?a?-3zhhx-t&6E5db^gY~UxY=+k;WofM d4z~~PIk-Q-eF2xYO^AVTqu{2(T?Hq^{{c^0&|m-n diff --git a/Bin/UKSSTMS320F28335.hex b/Bin/UKSSTMS320F28335.hex index 3e014cb..e37f509 100644 --- a/Bin/UKSSTMS320F28335.hex +++ b/Bin/UKSSTMS320F28335.hex @@ -1,4 +1,4 @@ -:20000000AA0800000000000000000000000000000000000089B5F7010000DEB600FF80DD08 +:20000000AA08000000000000000000000000000000000000D0ABF701000082AD00FFC0D8F5 :2000200000000000C1C081C1400101C3C003800241C201C6C006800741C70005C1C581C4C4 :20004000400401CCC00C800D41CD000FC1CF81CE400E000AC1CA81CB400B01C9C0098008A5 :2000600041C801D8C018801941D9001BC1DB81DA401A001EC1DE81DF401F01DDC01D801CD4 @@ -15,923 +15,64 @@ :2001C0004054019CC05C805D419D005FC19F819E405E005AC19A819B405B0199C0598058A4 :2001E00041980188C04880494189004BC18B818A404A004EC18E818F404F018DC04D804C33 :20020000418C0044C184818540450187C047804641860182C042804341830041C181818051 -:200220004040FFFF40DB00000000FFFF41DB00000000FFFF42DB00000000EEFF80DB0000A8 -:200240001BD6B738D79AFC3FA84C79BF0000000000000000000000000000000000000000E6 -:2002600000000000FFFF7ADB00001400FFFF7BDB00000000FEFF7CDB000000000000F4FF7C -:2002800064D700000000000000000000FE9D0000B29E00004F9E0000549E0000FFFF7CD708 -:2002A00000000000FFFF7DD700000000FFFF7ED700000000FFFF7FD700000000FEFF54DD17 -:2002C000000000000000FEFF56DD000000000000FEFF58DD000000000000FEFF5ADD000088 -:2002E00000000000FFFF5CDD00000000FFFF5DDD00000000F0FF1ADB00003F0006005B000B -:200300004F0066006D007D0007007F006F00400000000000000079000000FBFF2ADB000091 -:2003200008000C00100000000400FEFF30DB000001000200FEFF32DB000000000000FEFF83 -:2003400034DB000000000000FFFF3FDB00000000FFFF5EDD00000000FFFF5FDD0000000003 -:20036000FFFF60DD00000000FFFF6ADD00000000FFFFC6DE00000000FFFFC7DE00000000B8 -:20038000FEFFC9DE000000000000FFFF49D700000000FFFF4AD700000000FFFF4BD700005C -:2003A0000000FEFF6CDD000000000000FEFF6EDD000000000000FEFFD0DE0000D9B6000075 -:2003C000FEFFD2DE0000D9B60000FEFFD4DE000000000000FEFFD6DE000000000000FFFF83 -:2003E00000D700000000FFFF44D300000100FFFFCBDE00000A00FFFFCCDE00000100FFFFB8 -:0A04000001DB000000000000000016 -:20040A00DE36000000801B76F0FF00E2BD0030E60006422916562376391110292576006F06 -:20042A001B76F0FF00E2BD0030E60006422916562376390110292576006F1B76F0FF00E228 -:20044A00BD0030E60006422916562376390110292576006F1B76F0FF00E2BD0030E6000691 -:20046A00422916562376390110292576006F1B76F0FF00E2BD0030E600064229165610293A -:20048A002576006F1B76F0FF00E2BD0030E600064229165610292576006F1B76F0FF00E291 -:2004AA00BD0030E600064229165610292576006F1B76F0FF00E2BD0030E60006422916562D -:2004CA0010292576006F1B76F0FF00E2BD0030E600064229165610292576006F1B76F0FFFA -:2004EA0000E2BD0030E600064229165610292576006F1B76F0FF00E2BD0030E60006422977 -:20050A00165610292576006F1B76F0FF00E2BD0030E600064229165610292576006F1B763C -:20052A00F0FF00E2BD0030E600064229165610292576006F1B76F0FF00E2BD0030E60006B2 -:20054A004229165610292576006F1B76F0FF00E2BD0030E600064229165610292576006F22 -:20056A001B76F0FF00E2BD0030E600064229165610292576006F1B76F0FF00E2BD0030E6E7 -:20058A0000064229165610292576006F1B76F0FF00E2BD0030E6000642291656102925764B -:2005AA00006F1B76F0FF00E2BD0030E600064229165610292576006F1B76F0FF00E2BD004E -:2005CA0030E6000602FE422916561F7633002292419623760100267601011F763300221891 -:2005EA00FA001F7633002128FFFF1029103B1F763300419222962576006F1B76F0FF00E2A5 -:20060A00BD0030E6000602FE422916561F7633002292419623760100267601011F763300CD -:20062A002218F8001F7633002128FFFF1029103B1F763300419222962576006F1B76F0FF0E -:20064A0000E2BD0030E6000602FE422916561F76330022924196237601011F763300229294 -:20066A001F763300222B1F7633002128FFFF1029103B1F763300419222962576006F1B76DA -:20068A00F0FF00E2BD0030E6000602FE422916561F76330022924196237601011F76330019 -:2006AA00221868001F7633002128FFFF1029103B1F763300419222962576006F1B76F0FF1E -:2006CA0000E2BD0030E6000602FE422916561F7633002292419623760100267601011F765E -:2006EA003300221848001F7633002128FFFF1029103B1F763300419222962576006F1B76BA -:20070A00F0FF00E2BD0030E6000602FE422916561F763300229241962376010026760101C3 -:20072A001F76330022921F763300222B1F7633002128FFFF1029103B1F7633004192229638 -:20074A002576006F1B76F0FF00E2BD0030E6000602FE422916561F76330022924196237687 -:20076A000100267601011F763300221878001F7633002128FFFF1029103B1F763300419228 -:20078A0022962576006F1B76F0FF00E2BD0030E6000602FE422916561F7633002492419626 -:2007AA0023760200267600001F76330024180E001F7633002128FFFF1029103B1F7633008B -:2007CA00419224962576006F1B76F0FF00E2BD0030E6000602FE422916561F7633002492E8 -:2007EA00419623760200267600001F76330024180C001F7633002128FFFF1029103B1F76A9 -:20080A003300419224962576006F1B76F0FF00E2BD0030E6000602FE422916561F7633002A -:20082A002492419623760200267600001F763300241808001F7633002128FFFF1029103B4B -:20084A001F763300419224962576006F1B76F0FF00E2BD0030E6000602FE422916561F7688 -:20086A0033002492419623760200267600001F76330024921F763300242B1F7633002128D1 -:20088A00FFFF1029103B1F763300419224962576006F1B76F0FF00E2BD0030E6000602FE32 -:2008AA00422916561F7633002492419623760200267600001F76330024180F001F763300F0 -:2008CA002128FFFF1029103B1F763300419224962576006F1B76F0FF00E2BD0030E60006A9 -:2008EA0002FE422916561F7633002492419623760200267600001F76330024181F001F76D3 -:20090A0033002128FFFF1029103B1F763300419224962576006F1B76F0FF00E2BD0030E63B -:20092A00000602FE422916561F763300269241962376040026763D011F76330026183E00BE -:20094A001F7633002128FFFF1029103B1F763300419226962576006F1B76F0FF00E2BD007A -:20096A0030E6000602FE422916561F763300269241962376040026763D011F76330026922C -:20098A001F763300262B1F7633002128FFFF1029103B1F763300419226962576006F1B76AF -:2009AA00F0FF00E2BD0030E6000602FE422916561F763300269241962376040026763D01DE -:2009CA001F76330026921F763300262B1F7633002128FFFF1029103B1F763300419226968A -:2009EA002576006F1B76F0FF00E2BD0030E6000602FE422916561F763300269241962376E1 -:200A0A00040026763D011F763300261826001F7633002128FFFF1029103B1F763300419294 -:200A2A0026962576006F1B76F0FF00E2BD0030E6000602FE422916561F763300269241967D -:200A4A002376040026763D011F763300261826001F7633002128FFFF1029103B1F7633008E -:200A6A00419226962576006F1B76F0FF00E2BD0030E6000602FE422916561F763300269241 -:200A8A0041962376040026763D011F76330026921F763300262B1F7633002128FFFF10291D -:200AAA00103B1F763300419226962576006F1B76F0FF00E2BD0030E6000602FE422916566E -:200ACA001F7633002892419623760800267608011F763300281802001F7633002128FFFF54 -:200AEA001029103B1F763300419228962576006F1B76F0FF00E2BD0030E6000602FE42295F -:200B0A0016561F7633002A92419623760800267608011F76330028921F763300282B1F768C -:200B2A0033002128FFFF1029103B1F763300419228962576006F1B76F0FF00E2BD0030E615 -:200B4A00000602FE422916561F7633002892419623760800267608011F7633002818030004 -:200B6A001F7633002128FFFF1029103B1F763300419228962576006F1B76F0FF00E2BD0056 -:200B8A0030E6000602FE422916561F7633002892419623760800267608011F7633002818B1 -:200BAA0003001F7633002128FFFF1029103B1F763300419228962576006F1B76F0FF00E2D0 -:200BCA00BD0030E6000602FE422916561F7633002892419623760800267608011F763300F4 -:200BEA0028180F001F7633002128FFFF1029103B1F763300419228962576006F1B76F0FF26 -:200C0A0000E2BD0030E6000602FE422916561F7633002892419623760800267608011F7604 -:200C2A00330028180F001F7633002128FFFF1029103B1F763300419228962576006F1B76A1 -:200C4A00F0FF00E2BD0030E6000602FE422916561F7633002A924196237610002676100158 -:200C6A001F7633002A1802001F7633002128FFFF1029103B1F76330041922A962576006F66 -:200C8A001B76F0FF00E2BD0030E6000602FE422916561F7633002A92419623761000267698 -:200CAA0010011F7633002A921F7633002A2B1F7633002128FFFF1029103B1F76330041924A -:200CCA002A962576006F1B76F0FF00E2BD0030E6000602FE422916561F7633002C924196D1 -:200CEA0023762000267639011F7633002C1832001F7633002128FFFF1029103B1F763300C2 -:200D0A0041922C962576006F1B76F0FF00E2BD0030E6000602FE422916561F7633002C9292 -:200D2A00419623762000267639011F7633002C921F7633002C2B1F7633002128FFFF102956 -:200D4A00103B1F76330041922C962576006F1B76F0FF00E2BD0030E6000602FE42291656C5 -:200D6A001F7633002C92419623762000267639011F7633002C1833001F7633002128FFFF2F -:200D8A001029103B1F76330041922C962576006F1B76F0FF00E2BD0030E6000602FE4229B8 -:200DAA0016561F7633002C92419623762000267639011F7633002C1837001F76330021287D -:200DCA00FFFF1029103B1F76330041922C962576006F1B76F0FF00E2BD0030E6000602FEE5 -:200DEA00422916561F7633002C92419623762000267639011F7633002C1822001F76330030 -:200E0A002128FFFF1029103B1F76330041922C962576006F1B76F0FF00E2BD0030E600065B -:200E2A0002FE422916561F7633002C92419623762000267639011F7633002C921F76330097 -:200E4A002C2B1F7633002128FFFF1029103B1F76330041922C962576006F1B76F0FF00E2D5 -:200E6A00BD0030E6000602FE422916561F7633002E92419623764000267600001F7633001C -:200E8A002E183E001F7633002128FFFF1029103B1F76330041922E962576006F1B76F0FF48 -:200EAA0000E2BD0030E6000602FE422916561F7633002E92419623764000267600001F762D -:200ECA0033002E1838001F7633002128FFFF1029103B1F76330041922E962576006F1B76CA -:200EEA00F0FF00E2BD0030E6000602FE422916561F7633002E924196237640002676000093 -:200F0A001F7633002E1838001F7633002128FFFF1029103B1F76330041922E962576006F85 -:200F2A001B76F0FF00E2BD0030E6000602FE422916561F7633002E924196237640002676C1 -:200F4A0000001F7633002E1820001F7633002128FFFF1029103B1F76330041922E962576CC -:200F6A00006F1B76F0FF00E2BD0030E6000602FE422916561F7633002E92419623764000AE -:200F8A00267600001F7633002E1828001F7633002128FFFF1029103B1F76330041922E9683 -:200FAA002576006F1B76F0FF00E2BD0030E6000602FE422916561F7633002E924196237613 -:200FCA004000267600001F7633002E921F7633002E2B1F7633002128FFFF1029103B1F765A -:200FEA00330041922E962576006F1B76F0FF00E2BD0030E6000602FE422916561F76330039 -:20100A003092419623768000267600001F7633002C921F7633002C2B1F7633002128FFFFC4 -:20102A001029103B1F763300419230962576006F1B76F0FF00E2BD0030E6000602FE422911 -:20104A0016561F7633003092419623768000267600001F763300301801001F7633002128E2 -:20106A00FFFF1029103B1F763300419230962576006F1B76F0FF00E2BD0030E6000602FE3E -:20108A00422916561F7633003092419623768000267600001F7633002C1823001F76330062 -:2010AA002128FFFF1029103B1F763300419230962576006F1B76F0FF00E2BD0030E60006B5 -:2010CA0002FE422916561F7633003092419623768000267600001F763300301803001F7671 -:2010EA0033002128FFFF1029103B1F763300419230962576006F1B76F0FF00E2BD0030E648 -:20110A00000602FE422916561F7633003292419623760001267600011F76330032921F762D -:20112A003300322B1F7633002128FFFF1029103B1F763300419232962576006F1B76F0FF95 -:20114A0000E2BD0030E6000602FE422916561F7633003292419623760001267600011F76C4 -:20116A0033003218FD001F7633002128FFFF1029103B1F763300419232962576006F1B765A -:20118A00F0FF00E2BD0030E6000602FE422916561F7633003292419623760001267600012A -:2011AA001F763300321871001F7633002128FFFF1029103B1F763300419232962576006FA2 -:2011CA001B76F0FF00E2BD0030E6000602FE422916561F763300329241962376000126765A -:2011EA0000011F763300321875001F7633002128FFFF1029103B1F763300419232962576CC -:20120A00006F1B76F0FF00E2BD0030E6000602FE422916561F763300329241962376000146 -:20122A00267600011F76330032921F763300322B1F7633002128FFFF1029103B1F763300FB -:20124A00419232962576006F1B76F0FF00E2BD0030E6000602FE422916561F763300329241 -:20126A00419623760001267600011F76330032921F763300322B1F7633002128FFFF10295D -:20128A00103B1F763300419232962576006F1B76F0FF00E2BD0030E6000602FE422916567A -:2012AA001F7633003292419623760001267600011F763300321831001F7633002128FFFF38 -:2012CA001029103B1F763300419232962576006F1B76F0FF00E2BD0030E6000602FE42296D -:2012EA0016561F7633003292419623760001267600011F763300321875001F763300212846 -:20130A00FFFF1029103B1F763300419232962576006F1B76F0FF00E2BD0030E6000602FE99 -:20132A00422916561F7633003892419623760008267600001F76330038189E001F763300A8 -:20134A002128FFFF1029103B1F763300419238962576006F1B76F0FF00E2BD0030E600060A -:20136A0002FE422916561F7633003892419623760008267600001F76330038189C001F769D -:20138A0033002128FFFF1029103B1F763300419238962576006F1B76F0FF00E2BD0030E69D -:2013AA00000602FE422916561F7633003892419623760008267600001F76330038189000F8 -:2013CA001F7633002128FFFF1029103B1F763300419238962576006F1B76F0FF00E2BD00DE -:2013EA0030E6000602FE422916561F7633003892419623760008267600001F763300381832 -:20140A0090001F7633002128FFFF1029103B1F763300419238962576006F1B76F0FF00E2CA -:20142A00BD0030E6000602FE422916561F7633003892419623760008267600001F76330084 -:20144A0038921F763300382B1F7633002128FFFF1029103B1F763300419238962576006F87 -:20146A001B76F0FF00E2BD0030E6000602FE422916561F76330038924196237600082676AA -:20148A0000001F76330038189F001F7633002128FFFF1029103B1F763300419238962576F4 -:2014AA00006F1B76F0FF00E2BD0030E6000602FE422916561F763300389241962376000897 -:2014CA00267600001F76330038921F763300382B1F7633002128FFFF1029103B1F7633004E -:2014EA00419238962576006F1B76F0FF00E2BD0030E60006422916562576006F1B76F0FF9B -:20150A0000E2BD0030E60006422916562576006F1B76F0FF00E2BD0030E600064229165613 -:20152A002576006F1F76BF010B1A000806001F76BF010F1A000806001F765D0307920252A1 -:20154A0006ED1F76BF010B1A0010056F1F76BF010D1A001006001F765D030792025206ED29 -:20156A001F76BF010D1A0010056F1F76BF010B1A001006001F765D030792025206ED1F7667 -:20158A00BF010B1A0080056F1F76BF010D1A008006001F765D030792025206ED1F76BF013C -:2015AA000D1A0080056F1F76BF010B1A008006001F765D030A9219EC1F765F033192013B7A -:2015CA001F765F03309EA985A9BD120F007700770077007789E6010002E808184076ECB3DC -:2015EA001F766D0303E236001F765D03099231EC1F765F033292013B1F765F03309EA9852A -:20160A00A9BD120F007700770077007789E6010002E840164076ECB31F766D0303E2360038 -:20162A001F765F03013B33921F765F03319EA985A9BD120F007700770077007789E60100E1 -:20164A0002E840164076ECB31F766D0303E2380006001B76F0FF0500BDA8BDA0BDC2BDC37D -:20166A00BDAB00E2BD0003E2BD0003E2BD0103E2BD0203E2BD0330E6000604FE69FF4229DA -:20168A001656227601021F766C0301560C002376391110291A761F765F033CCC0080CEFFDA -:2016AA0004ED69FF40768DAD1F766D033A92019CA988A6BD120F0077007700771F766D034A -:2016CA008BE600003A9612E8000D14AD08641F766D033A2B1F766D03BF563B011F765F03D4 -:2016EA003C931F765E03019111920190A8CA4396009B1F766D03009A0440BD56A90100527D -:20170A00B156A8014392A8CA05EC69FF40769488046F69FF40768F881F766E033A0A1F7616 -:20172A006E033A920A5216681F766E033A2B1F766E033E9204EC40769988036F4076A88828 -:20174A001F766E033F9204EC4076B788036F4076C688439213ED1F765F0328921F766E03C1 -:20176A003A5403ED4076A8881F765F0329921F766E033A5403ED4076C688009A1F7674031B -:20178A0000D43893B056A9010052B156A4014392A4CE08EC1F766D033F28F4011F766E0350 -:2017AA003B2B43921F76740338961F766D033F92019CA988A6BD120F0077007700771F76E8 -:2017CA006D038BE600003F9612E8D01F14ADE4FFD9001F766D033F2B1F766E033B0A1F7694 -:2017EA006E033B4003EF019A026F009A1F766E033C961F766E033B92079003EC019A026F1E -:20180A00009A1F766E033D9643920CEC1F766E033C921F766E033F961F766E033E96EFFF07 -:20182A00B1001F765F032A9223ED1F766D03044008EF1F766E033C921F766E033E96056FC8 -:20184A001F766E03BF563E011F765E0311CD02001F765F03D0FF3CCC4000C5FFA8CA33ECEB -:20186A001F766E033D921F766E033E962C6F02521F766E03B1563E0126EC035208ED1F7683 -:20188A006E033C921F766E033E961D6F045208ED1F766E033D921F766E033E96146F0552C5 -:2018AA000FED009A1F766E0300D43D93B056A9011F766E030052B156A4013E7C046F1F7668 -:2018CA006E033E2B1F765F032B9230ED1F766D0304CC0400C1FF1F766E03B0563F0151ED30 -:2018EA001F766D0304CC0800C2FF08EC1F766E033C921F766E033F96446F1F766D0304CC15 -:20190A001000C3FF0FEC009A1F766E0300D43D93B056A9011F766E030052B156A4013F7C3D -:20192A00306F1F766E033F2B2C6F02521F766E03B1563F0126EC035208ED1F766E033C9222 -:20194A001F766E033F961D6F045208ED1F766E033D921F766E033F96146F05520FED009AAB -:20196A001F766E0300D43D93B056A9011F766E030052B156A4013F7C046F1F766E033F2B61 -:20198A0084FEAFE2BE03AFE2BE02AFE2BE01AFE2BE0080E2BE00BE87BEC5BEC4BE83BE8A86 -:2019AA000300F1FF1776027602FE1F767403BF5631281F767403BF5632281F767503BF560E -:2019CA00091B1F7675030A2B1F766D033E2B1F766D033E1A01001F766D033E1A00801F7659 -:2019EA006D033E1A00401F766D033E1A0010412B419218521363013B008F45DB4185015641 -:201A0A00A400C42B4185008F5DDB0156A4004192C496410A41921852EF64412B41921452F4 -:201A2A001A63412D008FC0DB1235408F80DB0156A4001202407640B6013B008F92DB0356CA -:201A4A0041010156A40090E503E2C400410A41921452E8641F765D030792015237ED1F76B7 -:201A6A005D030692055203EC065205ED1F766D03BF560008075203EC085205ED1F766D0319 -:201A8A00BF5600081F766D03035600011F766D0301961F766D0302961F766D030092029C52 -:201AAA004296412B1F766D03019241540F65013B008F45DB41850156A400BF56C409410A5E -:201ACA001F766D0301924154F3621F765D030792025224ED1F766D03BF5600081F766D0360 -:201AEA0000921F766D0301961F766D030296029C4296412B1F766D03019241540F65013B52 -:201B0A00008F45DB41850156A400BF56C40A410A1F766D0301924154F3621F767A03C8E2DF -:201B2A004201AFE23C0050E800104076ECB31F767A0303E23C0082FE060002FE412B4192F6 -:201B4A000252E3FF8F00422B429208521063013B008F01D8035641030156A400428501564E -:201B6A00A400C42B420A42920852F264410A41920252EA64766F1F766003091AFF3C1F7668 -:201B8A0060030F1A007F756F1F766003091A0F001F7660030F1A000F6C6F412B419218526E -:201BAA003663013B008F45DB41850156A400C4922AEC4193A892A2FF008D01D8CBFFA8944F -:201BCA00A3FFA9850156A000109B4192C0002FB6A92D019B67FFC099013B4192189C008D90 -:201BEA0001D8A993A2FFCBFFA894A3FFA9850156A000109B4192189CC0002FB6019BA92D0F -:201C0A0067FFC099410A41921852CC64412B419203521463013B008F01D84185408F09D81E -:201C2A000156A4004192039CA9850156A500C492C596410A41920352EE641F7660030F1A6C -:201C4A00000F1F765D030792025206ED1F766003101A03000E6F1F766003101A0F00096F4B -:201C6A001F765D030692015287EC02528EEC966F1F765D030792045215ED1F7660030B1A31 -:201C8A000300BF564204412B086F4292412D1F76600366FF0B98410A1F765E03209241542F -:201CAA00F5621F766003021A03001F7660030F1AFF001F766003081A00011F766003101A4F -:201CCA00000E1F766003101A00601F766003081A009082FE060006FE467D459744A84196D4 -:201CEA0000520EEC448A013B4585C40F0362019A116F448A01020156C40046920B6F448A5B -:201D0A00C40603ED009A066F448A01024156C400469286FE060006FE44A84196448AC49277 -:201D2A004596013B008F80D741850156A400C4924696CCFF019003ED461800F0459246985A -:201D4A001F766D03038846CD0001D7FF1F766D03A6CC0100A9CB0191A6CCFEFFA9CB039704 -:201D6A0000D4009A46CD0001D7FFB056A9010052B156A40146CDFFFDA492019088FFA8CA84 -:201D8A004696008F80D741850156A4004692C49686FE0600BDB20EFE439600520AED1F76C8 -:201DAA006D0303921F766D0304961F766D03032B013B008F80D743850156A400C4CC00804D -:201DCA00CEFF1BEC1F766D030192435416654385008F80D70156A400C42B4385008F80D735 -:201DEA000156A400C41A0080008F98D743850156A400C42BEFFFAC0103564301008F80DEAB -:201E0A000156A400C406461E1F765F033CCC0001C7FF0FECAFE2460043858CE60000008F2E -:201E2A0098D70156A400A9BF120FC496EFFF90014385008F80D70156A400C4CC0010CBFFB9 -:201E4A004FEC1F766D03019243544A65009AA985A9BD120F007700770077007789E60000C5 -:201E6A004D9603E24A004C2B4C9218522D63013B008F45DB43850156A400408F45DB4C8589 -:201E8A000156A500C492C5541BED4C85008F80D70156A4001F766D033E92C4CE11ED035655 -:201EAA004C01008F80DE0156A400AFE24A00AFE2C40110E70800007703E24A004D0A4C0A60 -:201ECA004C921852D5644D9209ECAFE24A00C8E24D014076ECB303E24A004A06461E1F7603 -:201EEA007B0302060AEC013B008F92DB035643010156A4004606C41E013B008F92DB0356CD -:201F0A004301408F92DB0156A400035643010156A5001F767A03A48BAFE2C500AFE2460134 -:201F2A0020E33C414076ECB3AFE2C10110E74000007703E2C100013B008F92DB0356430146 -:201F4A000156A400C406461E1F766D034392029E4E9626641F765F033CCC1000C3FF1F7600 -:201F6A005D030ACA1F765E0311CD0400D1FFA9CBC156EE001F767B030206C056E900AFE257 -:201F8A0046004E858CE60000008FF0D70156A400A9BF120FC4964076D588EFFFD900009A04 -:201FAA001F765D0300D40A93B056A9010052B156A4014392A4CE01904E96408F76DB807631 -:201FCA0045DB008FF0D74E850156A40003564E010156A50043850156A600C8E2C400AFE24B -:201FEA004601C07640DDC6850156A70020E70800AFE2C50100E70800C8E2C701007710E7BF -:20200A000800007703E2480016E8000914AD056306E8401603E2480012E8401A14AD0565EA -:20202A0002E8401A03E248001F765E0311CD02001F765F03D0FF3CCC4000C5FFA8CA10EC0F -:20204A004385008F45DB0156A400408F28DDC4850156A500C8E2C500007703E2480050E8A0 -:20206A00004843858CE60000008F98D70156A400A9BF120FC4964B2B4385008F80D701567D -:20208A00A400C4CC0040CDFF59EDAFE2480016E8000914AD056512E8401A14AD08644B1ABF -:2020AA0001001F766D03031A1000486F4385008FB0D70156A400AFE24801C492FB9CA9855E -:2020CA00A9BD120F007700770077007789E60000007794E6010014AD0A654385008F80D754 -:2020EA000156A400C4CC2000C4FF0DED4385008FB0D70156A400C8E2C400007794E6010035 -:20210A0014AD0A654B1A20004B1A00011F766D03031A0400136F4385008FC8D70156A40001 -:20212A00C8E2C400007794E6010014AD07654B1A10001F766D03031A08001F767B0302064E -:20214A0006EDAD5C43928BDC4076888C8EFEBE8B06001B76F0FF0500BDA8BDA0BDC2BDC352 -:20216A00BDAB00E2BD0003E2BD0003E2BD0103E2BD0203E2BD0330E6000602FE69FF4229D1 -:20218A0016561F7633003292419623760001267600011F76330032921F763300322B1F76E9 -:2021AA0033002128FFFF1029008F00D069FF40765A94008F00D04076D48F103B1F7633006C -:2021CA004192329682FEAFE2BE03AFE2BE02AFE2BE01AFE2BE0080E2BE00BE87BEC5BEC42E -:2021EA00BE83BE8A0300F1FF177602761B76F0FF0500BDA8BDA0BDC2BDC3BDAB00E2BD0007 -:20220A0003E2BD0003E2BD0103E2BD0203E2BD0330E6000602FE69FF422916561F76330003 -:20222A003292419623760001267600011F763300321871001F7633002128FFFF1029008F68 -:20224A0080D369FF40765A94008F80D34076D48F103B1F7633004192329682FEAFE2BE039A -:20226A00AFE2BE02AFE2BE01AFE2BE0080E2BE00BE87BEC5BEC4BE83BE8A0300F1FF1776F1 -:20228A0002761B76F0FF0500BDA8BDA0BDC2BDC3BDAB00E2BD0003E2BD0003E2BD0103E245 -:2022AA00BD0203E2BD0330E6000602FE69FF422916561F76330032924196237600012676BC -:2022CA0000011F7633003218FD001F7633002128FFFF1029008F00D069FF40765A94008FA2 -:2022EA0000D040767191103B1F7633004192329682FEAFE2BE03AFE2BE02AFE2BE01AFE29A -:20230A00BE0080E2BE00BE87BEC5BEC4BE83BE8A0300F1FF177602761B76F0FF0500BDA820 -:20232A00BDA0BDC2BDC3BDAB00E2BD0003E2BD0003E2BD0103E2BD0203E2BD0330E6000686 -:20234A0002FE69FF422916561F7633003292419623760001267600011F7633003218750013 -:20236A001F7633002128FFFF1029008F80D369FF40765A94008F80D340767191103B1F76A3 -:20238A0033004192329682FEAFE2BE03AFE2BE02AFE2BE01AFE2BE0080E2BE00BE87BEC5BB -:2023AA00BEC4BE83BE8A0300F1FF1776027604FE42A8428AC48AECCC4000C5FF16ED1F76B6 -:2023CA0033002192A9CDFFFEC7FF01901F7633000150019087FFA8CA2196428AC48A0BDCE9 -:2023EA00C41A4000EFFF8001428AC48AFC92FF904396428AC48AECCC8000C6FF0AEC428A5D -:20240A00C48ACC18DFFF428AC48ACC1A2000D26F428A008DA0019492CDED428A008D3B03D0 -:20242A009492015216ED428A008D3D03BF569401428A0002008D3403941E428A008D3F03F4 -:20244A00942B428A008D3E03942B428A0DD0942B428A008D3F039492ADED428A008D3D03FE -:20246A009492C156E200428A008D3E0394924BED1F760403109243541FEC1F767B030C92AA -:20248A00435403ED005218ED428A008D31039492435406ED428A008D330394920DED1F76D3 -:2024AA007B030B92435424ED005222EC428A008D330394921DED428A4392008D32039496A3 -:2024CA004206008F3E030156A400019BC492A995C497428A013BA9850156A4000ED0439270 -:2024EA009496089A428A40765F92EFFF64FF428A008D3F03BF569401428A008D3D03942BA5 -:20250A00EFFF59FF4206008F3E030156A400019BC492A995C497428A013BA9850156A4009C -:20252A000ED043929496428A008D3E039492075210ED428A0DD0949210520BED428A008D1C -:20254A003303949206ED43921F765C030A9C1096428A008D3E03949202523DED428A43922E -:20256A000DD09496428A949203521668428A94924252126642839558008F00D794920352F4 -:20258A000B68428A0DD0949233521CED428A0CD094923A5217EC428A099A40765F92428A22 -:2025AA00008D3E03942B428A008D3D03BF569401428A008D3F03942B428A0DD0942BEFFF91 -:2025CA00FAFE428A0DD09492335205ED428A008D3D03942B42830DD095584283008F00D7A1 -:2025EA009492008D3E03955408694283008F90019585A40FE8FFDFFE428A099A40765F92F7 -:20260A00428A008D3D03942B428A008D3F03BF569401428A008DA001BF569401428A0DD0C6 -:20262A00942BEFFFC8FE4283F5C4208F0000A9A8A60F08664283F5C42F8F0000A9A8A60F3A -:20264A0008674283208F0000F5A842830AD095A8428A0CD094923A52C056ADFE428A008DA0 -:20266A00A001949208EC428A008D3F03BF569401EFFFA1FE4206008F34030156A400C4C432 -:20268A00A692019001DEC4C2449609EC4283F58AA9A80109F51E4392C498066F428AF48A91 -:2026AA0003564308C496428A008D34039406428AE40FE8FF80FE428A339A0FD09496428A56 -:2026CA000CD09496099A428A40765F92428A008D3F03BF569401428A008DA001BF569401EB -:2026EA00EFFF69FE84FE060004FE42A8428A008D3A0394923CED4206008F38030156A40015 -:20270A000102C407C41E428A008D3603940F0568428AC48ABF56E402428A08D0948A4283C1 -:20272A00849295A8428AC48A09D09496428A4283008D36039406008D3803950F5766428A39 -:20274A00C48AE4CC4000C5FFFBEC428A099A40765F92428AD492025205ED1F76BF01081A81 -:20276A000400428A008D9E01942B406F4206008F38030156A400C4C4A692019001DEC4C222 -:20278A004396428A4283008D36039406008D3803950F0566428AC48ABF56E40243920DECAB -:2027AA00428A08D0948A4283849295A8428AC48AFF9009D094960B6F428A428308D0948A88 -:2027CA00C58309D0C492A7FFFF909596428A4283008D36039406008D3803950F0766428A82 -:2027EA00C48AE4CC4000C5FFFBEC1F7633002192A9CDFFFEC7FF01901F76330001500190F7 -:20280A0087FFA8CA219684FE060002FE412B419246520D63013B008F00D741850156A400CD -:20282A004192C496410A41924652F5641F765C03BF56330C1F765C03BF56340C1F765C03CD -:20284A00BF5635081F765C03BF5636091F765C03BF5637101F765C03BF5638081F765C0347 -:20286A00BF56390C1F765C03BF563A0C1F765C03BF563B051F764D030492FE9C1F765C0353 -:20288A003D961F764D0304921F765D03FF9C01961F765C03BF563E081F765C03BF56030856 -:2028AA001F765C03BF5606081F765C03BF56100D1F765C03BF56051B1F765C03BF563C1251 -:2028CA0082FE060004FE439642A8439208520BED089A428A01D54E9B40761994428A008D93 -:2028EA003B03942B439209520CED089A428A01D54E9B40761994428A008D3B03BF569401D7 -:20290A0084FE060008FE461E44A042A8472B471B30750566470A471B3075FD69428AD49219 -:20292A00025205ED1F76BF010818FBFF472B471B10270566470A471B1027FD69428A4606FA -:20294A00008D3603941E428A440608D00109941E428A008D3A03942B428AC48AE4CC4000EC -:20296A00C5FFFBEC428A089A40765F92428A008D38030102941E460F0C67428AC48ABF564D -:20298A00E401428AC483448A09D0C4929596216F4283448AC58309D0C4929596428AC48A2E -:2029AA00E4CC4000C5FFFBEC472B471BE8030566470A471BE803FD69428A099A40765F922E -:2029CA00428AD492025205ED1F76BF01081A0400009A88FE060006FE461E44A042A8428AD2 -:2029EA00D492025205ED1F76BF010818FBFF428A4606008D3603941E428A08D04406941E82 -:202A0A00428A008D3A03BF569401428AC48AE4CC4000C5FFFBEC428A089A40765F92428AD6 -:202A2A00008D38030102941E428AC48ABF56E4014283448A09D0C583C492A7FFFF90959691 -:202A4A00009A86FE060006FE441E42A81F76750384E2440188E23C0050E809404076ECB3C4 -:202A6A0088E60000007703E24600428AC48A4692A7FFFF90D496428AC48A4692FF90DC96B8 -:202A8A0086FE060002FE41961F764D0304961F764003BF5602011F764E03BF56020282FEDD -:202AAA00060008FE441E417C4192015231ED008F50701F76400300A8008F00D048A82276E7 -:202ACA001F76BE0109CCFFF3A91A00041F76BE0109961F76BE0109CCFFFCA91A00011F769A -:202AEA00BE0109961F763700008FA68E00A81F763700008F3E8F02A81F763300321A010050 -:202B0A001F763300321A0200237600011A764192025239ED008F50771F764E0300A8008FAB -:202B2A0080D348A822761F76BE0107CCFFCFA91A00201F76BE0107961F76BE0107CCFF3F82 -:202B4A00A91A00801F76BE0107961F76BE011618CFFF1F76BE011A1A04001F763700008F00 -:202B6A00F38E04A81F763700008F898F06A81F763300321A04001F763300321A0800237630 -:202B8A0000011A76488A4192D496488AC406461E01D5089A488A4E9B40761994468A0CDC3D -:202BAA00C41A0040468A0CDCC418FFDF468ACC18BFFF468ACC18DFFF468ACC18F7FF468AFD -:202BCA00CC18FBFF468ACC1A0200468ACC1A0100468A0ADCC418FFBF468A0BDCC4CCE0FF28 -:202BEA000150C49640760292488A440640762093488AD492025205ED1F76BF01081A040058 -:202C0A00488AC48ABF56E402099A488A40765F92488A0CD0942B488A008D9E01942B488A77 -:202C2A00008D3303942B468A0BDCC41A4000468ACC1A200088FE060008FE457D4497439655 -:202C4A0042A8428AC406481E43921D6509521B63488AFF9CC4CDF8FF0790A8CAC496136F7A -:202C6A00488AC418DFFF166F488AC41A2000488AC418BFFF0F6F488AC41A2000488AC41AFF -:202C8A004000086F44924552F7EC4E52EAEC4F52ECEC4592015204ED488AC4187FFF459216 -:202CAA00025204ED488AC41A8000488AC418EFFF488AC418F7FF88FE060002FE42A8428A13 -:202CCA000002008D4203941E82FE060002FE42A882FE060002FE22761F765D0307920452F2 -:202CEA0007ED008FA6AB1F7634001AA8066F008F26891F7634001AA81A761F7675030F8FF2 -:202D0A00404269FF3A0642A8C000CFB5A9BD120F0077007702E8D11F008F0ADB89E600001F -:202D2A004076B1B31F7630000C2820402376001082FE060006FE437C4297419600520364BB -:202D4A0080520364009A456F013B4188008F01D8035642030156A400A692A2FFCBFFA694FF -:202D6A00A3FFA9850156A400C49244964193019A0F91A82D66FF44C043922AEC4285408F80 -:202D8A00E4D70156A500C593A892CEFFA894A0FF408F80DAA98841850156A50000D4A69210 -:202DAA00C554B456A401457C459201D409ED4185408FC0D90156A500C592B156A400457CF1 -:202DCA00009B449204EC4592B056A8014497449286FE060008FE407684AD103B69FF407671 -:202DEA00E4B4267600002F760000407661B6407674B4407696A91F76BF010C1A01001F763F -:202E0A00BF010B1A0100412B41920A521263012920FF50C34076CEB41F76BF010F1A01009F -:202E2A001F76BF010E1A0100410A41920A52F0641F76BF010A1A01001F76BF010B1A010047 -:202E4A004076AAA91F765D030692109B4076C5B60D9A40763F9301D4418F00C2A9A0407661 -:202E6A004E9302D4418F00C2A9A040764E934076D59D1F765D03009A08934076CDA64076EE -:202E8A0067944076F9B51F765D030792045203EC4076C1A34076D18A407633B5407680A156 -:202EAA0040769A8B1F765D0306921F765F033E961F765F03BF563D031F765F033F921F762C -:202ECA006C033F96412B419280520D63013B008FC0D941850156A400BF56C401410A419206 -:202EEA008052F564412B419208520C63013B008F36DB41850156A400C42B410A4192085291 -:202F0A00F664412B419202521363013B008FF8D741850156A40000BE408FFAD7C47E418583 -:202F2A000156A500C57E410A41920252EF6422761F76C001BF56292F1A761F766D033B92C6 -:202F4A0056EC1F766D033B2B1F765D03079204521AED1F765E03219216EC1F766C032F0AE7 -:202F6A001F766C032F921F765E0321540C641F766C032F2B008F80D3407667A31F76BF0152 -:202F8A000E1A0100412B419280521463013B008F80DA41850156A400C41B307507634185DC -:202FAA00008F80DA0156A400C40A410A41928052EE64412B419202521A63013B008F30DB2D -:202FCA0041850156A400C49208EC4185008F30DB0156A400C40B076F4185008F32DB015683 -:202FEA00A400C42B410A41920252E864412B41920252E3FF5302013B008FE0D7418501560D -:20300A00A400C492C15645024185008F30DB0156A400C492C0563D02013B4185008F32DBAA -:20302A000156A400C492805228644185008F32DB0156A400C42B4185008F34DB0156A4002C -:20304A00C4921BEC4185008F34DB0156A400C42B4185008FF8D70156A400C40A408FE2D746 -:20306A004185008F30DB0156A40041850156A500C592C472EFFF12024185008F32DB0156E1 -:20308A00A400C493A892A2FFCBFFA894A3FF008F01D8A985A61E035641030156A400408FE7 -:2030AA0032DBA6060156A40041850156A500C5920F90A92DC49262FF45961CED4185008FD4 -:2030CA0032DB0156A400C492109CA988A618F0FF4185008F32DB0156A400C47E9F6F013B15 -:2030EA00008F32DB41850156A400C40A4592A0FF45964540F5EF016FBF564401013B008F4C -:20310A00E4D741850156A400408F32DB41850156A500C488008F80DAC5850156A400A692D9 -:20312A00C4540E634185008F32DB0156A400408FC0D9C4850156A500BF56C501442BBF5693 -:20314A0043011F765D030792015203EC025221ED4185008F32DB0156A400C4921852196455 -:20316A004185008F32DB0156A400C492305211624185008F32DB0156A400408F45DBC492FB -:20318A00E89CA9850156A500C5920952B35643054185008F32DB0156A400408F00D9807679 -:2031AA0032DBC4850156A50041850156A600008F80D7C6850156A400C492C59EA98556FF88 -:2031CA0043542F644185008F32DB0156A400C49210521BED013B422B126F4185008F32DB12 -:2031EA000156A400408FC0D94292C494A9850156A5001F765F032692C596420A1F765F03BF -:20320A0027924254EB620D6F4185008F32DB0156A400408FC0D9C4850156A500BF56C501A7 -:20322A00013B008F32DB41850156A400408FC0D9C4850156A500C592C1562501BF56420350 -:20324A00026F420B42920F65013B008F32DB41850156A4004292C494445C41934076979444 -:20326A000052F0EC4292FD9C4396026F430A43920F63013B008F32DB41850156A40043925D -:20328A00C494419301D4407697940052F0EC4292439E019C4696013B008F32DB41850156F1 -:2032AA00A4004392C472422B469242545765013B008F32DB41850156A4004292C494439620 -:2032CA004385008F80D70156A400408F00D943850156A500C492C5964385008F80DA015616 -:2032EA00A400C42B008FC0D943850156A400C49219EC4385008FC0D90156A400C40B438569 -:20330A00008FC0D90156A400C4920CED4192789C435408EC4185008F34DB0156A400BF564B -:20332A00C4014385008FC0D90156A400C49212ED4393A892A2FF008F36DBCBFFA894A3FF85 -:20334A00A9850156A40043930F91019AA82D66FFC498420A46924254AB624185008F32DB6A -:20336A000156A400465DC493009A008F00D9407614A8013B008FE0D741850156A400408FC8 -:20338A0030DB41850156A500C492C596008F32DB41850156A4004692C472422B429208529F -:2033AA002363013B807636DB4285408F01D80156A600035641030156A50042850156A50072 -:2033CA00008F01D8C592C6CEA980035641030156A40042850156A400A792C45405ED420A7E -:2033EA0042920852DF644292085221ED422B429208521763013B008F36DB4285408F01D8B6 -:20340A000156A400035641030156A50042850156A500C5925EFFC4C0420A42920852EB644A -:20342A004185008FFAD70156A400C40A4185008FE0D70156A400C49201522A650002A61E8E -:20344A00009A4193B056A901005203ED0102A61EA606008F30DB0156A400C49219ED00029C -:20346A00A61E009A4193B056A901005203ED0102A61EA606008F30DB0156A400BF56C4013C -:20348A00076F4185008F32DB0156A400C40A410A41920252E4FFB1FD4076E3AA1F766C0337 -:2034AA003F921F765F033F540BEC5EFF1F765F033CCA1F765F033FCE1F765F033C961F76F4 -:2034CA005F033F921F766C033F961F765F033CCC0200C0FF0DEC1F765F033C18FDFF407620 -:2034EA0086A01F766C033F921F765F033F961F765F033CCC0400C1FF07EC1F765F033C18FA -:20350A00FBFF4076EBA11F765F033CCC0800C2FF0DEC1F765F033C18F7FF407680A11F76F7 -:20352A006C033F921F765F033F961F765F033CCC2000C4FF07EC1F765F033C18DFFF4076C1 -:20354A00D5881F765E03009B119200D4C1FF1F766C030190B056A8010053B156A4013E9229 -:20356A00A4CE09EC1F765F033C1A04001F765F033C1A80001F765E0311CC0400C1FF1F7690 -:20358A006C033E961F765F033CCC8000C6FF46EC1F765F033C187FFF412B419280520D631E -:2035AA00013B008FC0D941850156A400BF56C401410A41928052F564412B419202521F63A4 -:2035CA00013B008F32DB41850156A40000BE408F30DBC47E41850156A500008FFAD7C57E09 -:2035EA0041850156A400408FF8D7C47E41850156A500C57E410A41920252E364412B419223 -:20360A0008520C63013B008F36DB41850156A400C42B410A41920852F664412B41920252E6 -:20362A00E3FF8DFC005205EC008F00D048A8046F008F80D348A8488A40768B994296A91BF6 -:20364A00FFFF59EC00021F7675032C1E1F7675032E1E1F76BF010F1A01002D6F488A4076C8 -:20366A006B9A496F488A40766F9A456F488A4076209B416F488A4076CB9A3D6F488A40762A -:20368A00249B396F488A4076B29B356F488A4076FF9B316F488A4076BB9C2D6F488A40767B -:2036AA00B79C296F488A407615A2256F488A40762EA3216F4292375211623752F0EC33529F -:2036CA0008623352D8EC0352EEEC0652F0EC136F3452DDEC3552CBEC0E6F3A5208623A52BC -:2036EA00C2EC3852CCEC3952CEEC056F3B52B7EC3C52D1EC410A419202529564EFFF1FFC28 -:20370A0002FE421E428AC49282FE060004FE437C421E428A4392C49684FE0600BDB206FE80 -:20372A0042A8428A008DA001949271EC428A942B428A0FD094924396013B4385008F00D779 -:20374A000156A400C492035209684385008F00D70156A400C41B90011069428AD4920252B0 -:20376A0005ED1F76BF01081A0400428A099A40765F92A928FFFF4D6F4392335207ED428A17 -:20378A0043920CD094964392446F4385008F00D70156A400C492FE9CA9804206008F00D7CC -:2037AA00A70DA61E43850156A4000ED10ED0C492FF9CA9804206A70DA98A03569C08A68A91 -:2037CA0094CA44964528FFFF428A408F00D743850156A5000EDCC592455DFE9CA90E40761C -:2037EA00CDB24596445407ED428A43920CD0949643920F6F428AD492025205ED1F76BF0112 -:20380A00081A0400428A099A40765F92A928FFFF86FEBE8B0600BDB204FE439642A81F76F7 -:20382A006C03BF560101428A4283008D3203408DA10194929D96428A008DA20143929496E2 -:20384A00000201195AFF443F008FA101445D42060156A40002024076CDB24496428A008DE5 -:20386A00A301FF9094964492428A008DA401A7FFFF909496428A008DA501942B428A008D97 -:20388A00A601942B408FA101428A42060156A500060240767F9284FEBE8B06000AFE461E2B -:2038AA0044A846C5AC281F00013B44C4A7062256A70740FF0156A60048C2488AC4924996B0 -:2038CA000202421E4606C000DEB504EC49CCFF00046F4992A7FFFF908AFE060002FE42A8DC -:2038EA0082FE060004FE42A8428A13D09492FF90A90E441E428A12D09492FF90A9884406F1 -:20390A0037FFA6AF441E428A11D09492FF90A988440637FFA6AF441E428A10D09492FF9085 -:20392A00A988440637FFA6AF441E428A17D042839492FF90A90EE51E428A16D042C44283B1 -:20394A009492FF90A980E50637FFA7AFE61E428A15D0428342C49492FF90A980E50637FF89 -:20396A00A7AFE61E428A14D0428342C49492FF90A980E50637FFA7AFE61E428A02020156E8 -:20398A00E400428A4406F41E428A0AD04406941E3A9A428A4076089A84FE0600BDB204FE7E -:2039AA0042A8428A42830AD0E4060219958A40764B9A428A42C4A95DE4060119968A407637 -:2039CA004B9A0356A908A5944496428A4283408D32030ED09C929596428A0FD0BF5694338A -:2039EA004328FFFF428A435D02020EDC4076CDB24396428A42830AD0E4060219958A435DBD -:203A0A004076ECB24396449243540BED428A339A4076089A428A008D3C03BF569401116F57 -:203A2A00428A008D3C03942B428AD492025205ED1F76BF01081A0400428A099A40765F921C -:203A4A0084FEBE8B060002FE42A882FE0600BDB206FE42A81F766C03BF560101428A13D0F4 -:203A6A009492FF90A90E441E428A12D09492FF90A988440637FFA6AF441E428A11D09492D0 -:203A8A00FF90A988440637FFA6AF441E428A10D09492FF90A988440637FFA6AF441E2FFF2E -:203AAA000040440F14692FFF0020440F0A664318FF0FAD5C4492029B85DC40768A9D076F42 -:203ACA004318FF0F440640767D994596428A4283008D3203408DA10194929D96428A008D0E -:203AEA00A201BF569438428A4592008DA301FF9094964592428AA7FF008DA401FF90949677 -:203B0A00428A008DA501942B428A008DA601942B4628FFFF008FA1014206465D0156A4009B -:203B2A0006024076CDB24696428A4692008DA701FF9094964692428A008DA801A7FFFF90C1 -:203B4A009496428A008DA901942B428A008DAA01942B408FA101428A42060156A5000A021F -:203B6A0040767F9286FEBE8B060006FE42A8428A13D09492FF90A90E441E428A12D0949262 -:203B8A00FF90A988440637FFA6AF441E428A11D09492FF90A988440637FFA6AF441E428A8E -:203BAA0010D09492FF90A988440637FFA6AF441E452B428A15D045939492A8384596428A58 -:203BCA0014D045939492A83845962FFF0004440F14692FFF0002440F0A664318FF00AD5CE6 -:203BEA004492029B85DC40763F9D076F4318FF00455C440640768399428A399A4076089AD1 -:203C0A0086FE0600BDB208FE42A81F766C03BF560101428A13D09492FF90A90E441E428A4D -:203C2A0012D09492FF90A988440637FFA6AF441E428A11D09492FF90A988440637FFA6AF13 -:203C4A00441E428A10D09492FF90A988440637FFA6AF441E428A17D09492FF90A90E461EAC -:203C6A00428A16D09492FF90A988460637FFA6AF461E428A15D09492FF90A988460637FF4E -:203C8A00A6AF461E428A14D09492FF90A988460637FFA6AF461E428A4283008D3203408D70 -:203CAA00A10194929D96428A008DA201BF569434008FFFFF48A8008FA101485D4206015634 -:203CCA00A40002024076CDB2A90E481E485D448A46064076ECB2A90E481E408FA1014206F7 -:203CEA00428A0156A500010240767F92428A008DA101BF569434408FA101428A4206015674 -:203D0A00A500010240767F92428AC48AE4CC4000C5FFFBEC428A460644834076E892428A9A -:203D2A00C48AE4CC4000C5FFFBEC428A4892008DA101FF9094964892428AA7FF008DA20186 -:203D4A00FF909496428A008DA301942B428A008DA401942B408FA1014206428A0156A500A6 -:203D6A00060240767F9288FEBE8B060002FE42A882FE060002FE42A882FE06000AFE42A8C3 -:203D8A00428A13D09492FF90A90E441E428A12D09492FF90A988440637FFA6AF441E428A05 -:203DAA0011D09492FF90A988440637FFA6AF441E428A10D09492FF90A988440637FFA6AF94 -:203DCA00441E428A17D09492FF90A90E461E428A16D09492FF90A988460637FFA6AF461E21 -:203DEA00428A15D09492FF90A988460637FFA6AF461E428A14D09492FF90A988460637FFCF -:203E0A00A6AF461E428A1BD09492FF90A90E481E428A1AD09492FF90A988480637FFA6AFE1 -:203E2A00481E428A19D09492FF90A988480637FFA6AF481E428A18D09492FF90A988480650 -:203E4A0037FFA6AF481E428A1CD09492FF9049960F6F4406468A48C4A69340763F9D0D6F30 -:203E6A004406468A48C4A69340768A9D066F0452F1EC0552F6EC056F428A3C9A4076089AAD -:203E8A008AFE060006FE459744A841961F766C030002141E1F76300014282040008F64D784 -:203EAA004076599E0052FBEC45934592D0FF0190A89445962DEC4192209B1F90A99F469771 -:203ECA00459246542A5646081F765D034406301E1F765D03460E321E1F765D0303564101E3 -:203EEA00A90E341E008F64D7408F70D74076649E008F64D74076599E0052FBEC460E0156BC -:203F0A00440046924172469245744592D5ED1F7630001428104086FE060006FE459744A8F7 -:203F2A0041961F766C030002141E1F76300014282040008F64D74076599E0052FBEC45937F -:203F4A004592D0FF0190A89445962DEC4192209B1F90A99F4697459246542A5646081F76BA -:203F6A005D034406361E1F765D03460E381E1F765D0303564101A90E3A1E008F64D7408F62 -:203F8A0076D740766F9E008F64D74076599E0052FBEC460E0156440046924172469245744C -:203FAA004592D5ED1F7630001428104086FE060002FE1F765D0328C5008F64D7673E22769A -:203FCA001F763400008F7A9E1CA81A7669FF407660B31F7675030F8F404242A83A06C000CB -:203FEA00CFB5A9BD120F0077007702E84116008F12DB89E600004076B1B32376002082FE3F -:20400A00060002FE42A822761F76BE0108CCFCFF01501F76BE0108961F76BE0108CCF3FF8E -:20402A0004501F76BE0108961F76BE0108CCCFFF10501F76BE0108961F76BE0108183FFF36 -:20404A001F76BE010B1A08001F76BF010118F7FF1A761F76C101BF5600071F76C101BF5602 -:20406A00011F1F76C101022B1F76C101BF56040C1F76C1010A2800801F76C1010B2B1F76EB -:20408A00C1010C2B1F76C101BF560F10428AD42B428A0002C41E1F76C101001A800082FEA6 -:2040AA0069FF06001F76BF01011A080006001F76BF010118F7FF060002FE42A8428AD49284 -:2040CA00039003EC009A026F019A82FE060004FE44A042A8428A4406C41E428AD41A0100A5 -:2040EA0084FE060004FE44A042A8428A4406C41E428AD41A020084FE06001B76F0FF05009D -:20410A00BDA8BDA0BDC2BDC3BDAB00E2BD0003E2BD0003E2BD0103E2BD0203E2BD0330E629 -:20412A00000669FF42291656227601021F766C03015614001F765D032AC5008F64D769FF10 -:20414A00673E1A76AFE2BE03AFE2BE02AFE2BE01AFE2BE0080E2BE00BE87BEC5BEC4BE8333 -:20416A00BE8A0300F1FF1776027602FE42A8EFFFBE01428AD4400CEF1F765D03BF563D013B -:20418A00428AD41A0400428A0AD094C5673E428AD441CC56BE011F765D03BF563D0D428AD1 -:2041AA00D41A0800428A0AD094C5673EEFFFB1011F76C101BF5600871F76C101082800063B -:2041CA001F76C101021A20001F765D03BF563D02EFFF9F011F76C10102CC4000C5FFC1562B -:2041EA0098011F76C10107921F765D033F96428A08D094C5673E1F765D03BF563D03EFFF88 -:20420A008801428A0AD094C5673E1F76C101BF5600871F76C101082800021F76C101021A78 -:20422A0020001F765D03BF563D04EFFF72011F76C10102CC4000C5FFC1566B011F76C101A5 -:20424A0007921F765D033F961F765D03BF563D05EFFF5F011F76C101BF56008F428AC48A42 -:20426A001F76C101E49208961F76C101021A20001F765D03BF563D06EFFF4B011F76C10158 -:20428A0002CC4000C5FFC15644011F76C10107921F765D033F961F765D03BF563D07EFFFF0 -:2042AA0038011F76C101BF56008F428AC48A1F765D033E58C48A1F76C101949208961F761D -:2042CA005D033E0A1F76C101021A20001F765D03BF563D08EFFF1D011F76C10102CC4000D9 -:2042EA00C5FFC15616011F76C10107921F765D033F96428AC48A1F765D033E0ED40F0BEDD2 -:20430A00428A08D094C5673E1F765D03BF563D09EFFFFF001F765D03BF563D07EFFFF9007F -:20432A00428A0AD094C5673E1F76C101BF5600871F76C101082800051F76C101021A2000BD -:20434A001F765D03BF563D0AEFFFE3001F76C10102CC4000C5FFC156DC001F76C101079225 -:20436A001F765D033F961F765D03BF563D0BEFFFD0001F76C101082B1F76C101021A20003C -:20438A001F765D03BF563D0CEFFFC3001F76C10102CC4000C5FFC156BC00428A08D094C516 -:2043AA00673E1F76C10107401F765D03BD563D09CD56AF00428AD418FBFF428AD418FEFF29 -:2043CA001F765D033D2B1F765D033E2BEFFFA1001F76C101BF5600871F76C101082800030C -:2043EA001F76C101021A20001F765D03BF563D0EEFFF8F001F76C10102CC4000C5FFC1560E -:20440A0088001F76C10107921F765D033F961F765D03BF563D0F7C6F1F76C101BF56008F14 -:20442A00428AC48A1F76C101E49208961F76C101021A20001F765D03BF563D10696F1F7696 -:20444A00C10102CC4000C5FF63EC1F76C10107921F765D033F961F765D03BF563D11586F96 -:20446A001F76C101BF56008F1F76C101082B1F76C101021A20001F765D03BF563D12486F0A -:20448A001F76C10102CC4000C5FF42EC428AC48A1F765D033E58C48A1F76C10107929496AE -:2044AA001F765D033E0A1F765D03BF563D13306F428AC48A1F765D033E0ED40F12ED428AB3 -:2044CA0008D094C5673E1F765D033D2B1F765D033E2B428AD418F7FF428AD418FDFF186F58 -:2044EA001F765D03BF563D11136F1F765D033D9213520E660356A901C07668C1A988A706FB -:20450A00A60DA71EA92401DFA824A71E207682FE0600BDB210FE408F00C1AD5C0E028FDC2E -:20452A00407640B6412B4192805209674158008F80D7942B410A41928052F9681F765D03C0 -:20454A0006921F765F033E961F765F03BF563D031F765D03079204523AED412B41920752FF -:20456A0015671F765D03AD5C0692FF9C8FDC4158A92D07350156A4004159408FE8D7949225 -:20458A009D96410A41920752ED681F765F03BF5620021F765F03BF5621641F765F03BF5647 -:2045AA0022011F765F03BF5623011F765F032428F4011F765F032528E8031F765F03BF562B -:2045CA0026051F765F03BF562701216F1F765F03BF5620141F765F03BF5621641F765F031A -:2045EA00BF5622011F765F03BF5623011F765F032428F4011F765F032528E8031F765F03EB -:20460A00BF5626011F765F03BF5627011F765D03069201521F765E03B15620091F765E0324 -:20462A00B15621191F765D030792015230ED1F765F03BF56280A1F765F03BF5629061F7623 -:20464A005F0330286C071F765F0331286C071F765F033228C4091F765F033328C409412BB7 -:20466A004192185214674158008F45DB949209520AED008FB0D7BF5694504158008FC8D7E2 -:20468A00BF569446410A41921852EE681F765D030792025236ED1F765F03BF5628081F766D -:2046AA005F03BF5629081F765F033028BC021F765F033128C409412B419206520F67415878 -:2046CA00008FB0D7BF5694AA4158008FC8D7BF569496410A41920652F368BF564106419261 -:2046EA0008520F674158008FB0D7BF5694734158008FC8D7BF569469410A41920852F36869 -:20470A0090FEBE8B0600BDB202FE412B4192805213674158009A008F80DA94964158408F0A -:20472A0000D995964158008FC0D9BF569401410A41928052EF68A9287E3F008F40D8A828B4 -:20474A00020140768A9D809A008F40D840761FB342961F7663030092425425ED421BFFFFBE -:20476A0022EC1F7662033E921F765D0306541BED412B419280520D6741584159008F40D8A1 -:20478A00408F80D794929D96410A41928052F5684076D5881F765F03BF563D031F765F03ED -:2047AA003F2B1A6F407686A04076D5881F765D0306921F765F033E964076EBA11F765D037E -:2047CA000B920AEC018F366E1F766D033CA81F765F033C1A100082FEBE8B060002FE422B86 -:2047EA00412B4192805211674158008F80D7408F40D89492955405EC94929596BF56420117 -:20480A00410A41928052F168429211EC008F40D8809A40761FB31F7663030096A9287E3F0C -:20482A00008F40D8A828020140763F9D82FE0600BDB208FE42A8428A11D09492449642830B -:20484A00428A12D113D003569D0894CA4596428A1F767B03008DA1010C929496428A008D56 -:20486A00A201BF569403428A008DA301035645019496428A10D094924696472B4592475487 -:20488A00E9FF970046926AEC47924494E89C10523D6747924494008F80DEE89CA90E30FF1E -:2048AA000156A400AFE2C4008CE6000000770077A6BF120F008DA101A692A7FFFF90A988EB -:2048CA0003564701039CA9804206A70DA98A947E47924494008F80DEE89CA90E30FF0156C5 -:2048EA00A400AFE2C4008CE6000000770077A6BF120FA692FF90A98803564701049CA9806D -:20490A004206A70DA98A947E4E6F47924494008F80D7F09CA95894CC00FFC7FFA9880356BC -:20492A004701008DA101039CA9804206A70DA98A947E4792008F80D74494F09CA9589492A3 -:20494A00FF90A988008DA10103564701049CA9804206A70DA98A947E266F4792008F80D75F -:20496A004494A95894CC00FFC7FFA98803564701008DA101039CA9804206A70DA98A947E25 -:20498A004792008F80D74494A9589492FF90A988008DA10103564701049CA9804206A70DFA -:2049AA00A98A947E470A45924754E6FF6DFF4328FFFF008FA1014206435D0156A4000356BE -:2049CA004501039CA90E4076CDB24396008DA10103564501039CA9884206A60DA98A439282 -:2049EA00FF90949603564501049CA9884206A60DA98A4392A7FFFF90949603564501059CE2 -:204A0A00A9884206A60DA98A942B03564501069CA9884206A60DA98A942B03564501079CCD -:204A2A00A9884206A60DA98A942B03564501089CA9884206A60DA98A942B428A008D9E01F5 -:204A4A00BF569401408FA1014206428A0156A50003564501089CA90E40767F9288FEBE8B91 -:204A6A000600BDB206FE42A8452B459208521167458842060ED0A60DA98A42069480408DAE -:204A8A00A101A60DA98A9C7F450A45920852F168428A11D0949243964283428A12D113D08D -:204AAA0003569D0894CA449643584492008F80D79496428A008D9E01BF569401408FA10122 -:204ACA004206428A0156A5000A0240767F9286FEBE8B060006FE42A81F765E03209253EC41 -:204AEA00428A008DA101BF5694AA428A008DA201BF569455BF5644FF452B1B6F4593459263 -:204B0A000191C0FF008FA2D792FFA958A82D949264FFFF9043964592029C008DA101A98805 -:204B2A004206A60DA98A4392949643924472450A1F765E0303562001FF9C4554E0661F76E5 -:204B4A005E0303562001013B428A019C008DA101A9850156A40044925EFFFF909496428ABB -:204B6A00008D9E01BF569401408FA1011F765E034206428A0156A50003562001029CA98598 -:204B8A0040767F9286FE06000AFE2276008FE5A41F7635000AA81A7669FF4076B1B61F76DC -:204BAA003300221A2000237601001F765D030792025209ED1F76C4010218F0FF1F76C4012D -:204BCA000318F0FF015219ED1F76C40102CCF0FF01501F76C40102961F76C40103CCF0FFF6 -:204BEA0005501F76C40103961F76C40103CC0FFF1F76C401405003961F76C4011CCCFF3F29 -:204C0A00A91A00401F76C4011C961F76C401011A00011F76C401011A00081F76C401191AFB -:204C2A0010001F76C401001A10001F76C401001A000F1F76C4010018BFFF1F76C401011AAE -:204C4A0000401F763300BF5621011F76A001191A00081F76A00119CCFFF8A91A00041F762C -:204C6A00A00119961F76A0011ACCFFFCA91A00011F76A0011A961F76A001BF5609801F76B0 -:204C8A00A00100CC7FFCA91A00011F76A00100961F76A00100CCFFE3A91A00081F76A001AD -:204CAA0000961F76A001013B019A00CD001CD9FFA82D66FFA985441E1F76A00100CC800337 -:204CCA00C6FF0AEC1F76A00100CC8003C6FF80FFA985461E036F0102461E44871F76750303 -:204CEA0044564600421E3A06C000CFB5008FA60E42A8C000CFB5481E1F76A0014892059664 -:204D0A001F76A0010018FCFF1F765D030A921CEC02E8D01B1F767A0303E23C001F767A038D -:204D2A00BF563E0F1F767A03BF563F041F767B03BF5600091F767B03BF560114008F8A66B0 -:204D4A001F767B0304A81F765D0309921CEC02E8800B1F767A0303E23C001F767A03BF5623 -:204D6A003EFA1F767A03BF563F191F767B03BF5600961F767B03BF560114008F3E491F76CC -:204D8A007B0304A81F767B0304061F767B03021E492B499214521B63013B008FA8DE00BE4D -:204DAA0049850156A400A685A9BD120F0077408F80DEC47E0356490189E600000156A5007A -:204DCA0003E2C500490A49921452E7648AFE06001B76F0FF0500BDA8BDA0BDC2BDC3BDAB04 -:204DEA0000E2BD0003E2BD0003E2BD0103E2BD0203E2BD0330E600060AFE69FF4229165619 -:204E0A00412B1F7633002292499623760100267601011F7633002218FA001F76330021287C -:204E2A00FFFF10291F767B0302060EEC01021F767B03415602001F767B03020605ED1F76CB -:204E4A005F033C1A80001F767B0304061F767B030A19020FE4FF7C011F766D033C0615EC04 -:204E6A001F766D033C061F766D0301193C1E0DED1F765F033C18EFFF1F765F033C1A0400E4 -:204E8A001F765F033C1A80001F767A033F921F767B0306541BED1F767B03079241961F76CB -:204EAA005D0309920FEC1F766D0300921F767B030754B156410D1F767B03019C0754B15686 -:204ECA00410C419269FF4076A2AA1F767B0300921F767B030654E7FF8400472B1F765D035B -:204EEA000B9247547D651F767B03072D1F765D030B1247944896013B008F08714785015615 -:204F0A00A400C492C3FFA90EA9BD120F00770077007700778BE60000007703E24400008F11 -:204F2A0080DE035648010156A400AFE2C40120E7080000778CE600001F767B0300D4A9BFCF -:204F4A00120FA98556FF01541F767B03B856A401087C1F767B03089207EC4785008FC9DE62 -:204F6A000156A400C40A4885408FA8DE0156A50000D41F767B03009AC593B056A901005265 -:204F8A00B156A4010892A4CA25EC482D008FC0DBAFE2440069FF12350156A40040763EB57B -:204FAA0003E246001F767B0302060BEC013B008F80DE035648010156A4004406C41E0A6F3F -:204FCA00013B008F80DE035648010156A4004606C41E470A1F765D030B92475485621F76D9 -:204FEA007B03060A1F767B0306921F767A033E54E8FFAE001F767B03062B69FF40768AAA9F -:20500A00472B1F765D030B92475460651F767B03072D1F765D030B12479448964076C78C07 -:20502A001F765F033CCC0040CDFF37EC1F7675031E9233EC1F767503013B008F80DE26837D -:20504A00035648010156A4001F767503A5C4AFE2C4008CE6000001DE26C2A9BF120FC596C1 -:20506A001F766D0300921F767B03075410651F76750348852683008F98D70156A4001F769B -:20508A007503A5C401DEC49226C2C5961F76750326921F765E032F96013B008FC9DE4785EF -:2050AA000156A400408FA8DE48850156A500C492C5964785008FC9DE0156A400C42B470ADF -:2050CA001F765D030B924754A2621F767B0307921F766D03019C00931F767B03029D079665 -:2050EA00A95535621F767B03072B1F765D0303560B01013B1F766D030093019DA82D1F7696 -:20510A007503A912A985A61E24061F767503A603260F14671F765D0303560B011F766D0371 -:20512A0000931F767503019D24C4A82DA912A9854156A6001F76750326C21F765F033CCC50 -:20514A000040CDFF1F767503B0561E011F76C401011A00401F76C401191A10001F763300ED -:20516A00BF562101103B1F763300499222968AFEAFE2BE03AFE2BE02AFE2BE01AFE2BE007E -:20518A0080E2BE00BE87BEC5BEC4BE83BE8A0300F1FF177602761F76BF010F1A0080060016 -:2051AA003CFE42974196227600521DED008F006078A8008F00617AA8008FC0607CA81F767E -:2051CA00BE0109CCFFCFA91A00101F76BE0109961F76BE0109CCFF3F1F76BE01A91A0040DF -:2051EA0009961C6F008F006278A8008F00637AA8008FC0627CA81F76BE0107CCFFFCA91A9C -:20520A0000021F76BE0107961F76BE0107CCFFF31F76BE01A91A00080796788A08022AD0B6 -:20522A00941E788A2CD0941E7A8AD41E7A8A0AD0941E7A8A12D0941E788A0002C41E788AFC -:20524A00D418FEFF7A8AC41E7A8ACC1A00807A8A1F765D0301DCC4CC03E0A988035608022E -:20526A00A9080006A9CCFF0781FFA6CAC496788AD41A02007A8A08D00002941E7A8A09DC3D -:20528A00C41A00807A8A09DCC41A00401F765D03809A7A8A089481FFA9CCFF0709DC81FF90 -:2052AA00C4CD03E0A8CAC4961F7681010F8FFFFF02A8788AD41A04007A8A10D00002941EBB -:2052CA007A8A11DCC41A00807A8A11DCC41A00407A8A11DCC4CC03E0A91AF009C4961F7657 -:2052EA0081010F8FFFFF04A8788A0702C41E788A000208D00119941E788A00020CD001194B -:20530A00941E788A00021ED00119941E788A000222D00119941E788A000218D00119941E99 -:20532A000002621E621A0080621A0040621A0020621A0002621A8000621A0010788A14D0A1 -:20534A006206941E18D0788A94CC1000C3FFFCEC788A16D09406601E60CCFFFCA91A00013A -:20536A0060965FCC00FF17505F9660CC87FF3050609660CCF8FF01506096788A6006941EFB -:20538A006218FFEF788A14D06206941E18D0788A94CC1000C3FFFCED7C83088F7064C5A8BF -:2053AA007C83D5A8788A010230D0941E788A32D00002941E788A2ED0941E561E788A24D0DC -:2053CA000602941E788A26D00002941E561A0100551A0200561A0200561A0400788A20D0A3 -:2053EA005606941E1F763700008FEFA808A81F763300321A10001F763700008F5AA90AA8BF -:20540A001F763300321A2000237600011A761F7675030002121E1F767503101E1F7675039D -:20542A001C2B1F767503141EBCFE69FF06000EFE467D459744A84196008F00604CA8008FD4 -:20544A0000614EA81F7675031D920FEC4C8A08D094060190009B58FF08ED4C8A0AD094062A -:20546A000190009B58FF5EEC4C8A010208D0941E4C8A0AD0941E4592448A013B019CA985E4 -:20548A000156A4004483C4855AFF45850156A500AA180000C5853FFFABCAAACB4A1E448A6E -:2054AA004592039CA9850156A400C4855AFF448A4592029CA9850156A400AA180000C4852A -:2054CA003FFFABCAAACB481E4E8A4806F41E4E8A4A06E41E22764C8AC418FEFF4E8A4592DC -:2054EA00C4964E8A03564601A985D41E4C8AC41A01004C8A2ED00002941E1A764C8A01020A -:20550A00E41E1F767503BF561D011F765D030792055204ED4076C8A6056F1F76BF010E1A54 -:20552A0001008EFE06000CFE42A8428AF406461E428AE406481E428AC4927F904396428ABE -:20554A000129D40640FF44964392045207680752056600021F7675032C1E43920A520768CD -:20556A000D52056600021F7675032E1E48064C9748924B9646064A9746924996449209EC61 -:20558A0043928052066743584C92008F80D79496430A4492015209694392805206674358CD -:2055AA004B92008F80D79496430A44920252096943928052066743584A92008F80D7949670 -:2055CA00430A44920352096943928052066743584992008F80D794961F76BF010F1A0100BE -:2055EA008CFE06001B76F0FF0500BDA8BDA0BDC2BDC3BDAB00E2BD0003E2BD0003E2BD017F -:20560A0003E2BD0203E2BD0330E6000604FE69FF422916560102421E1F7633003292449611 -:20562A0023760001267600011F76330032921F763300322B1F7633002128FFFF10291F769B -:20564A0080011E921F904396432D42063B56421E1F76800142060C1E013B008F006169FFC2 -:20566A00035643030156A400407690A81F7633002192A9CDFFFE1F763300C7FF019001503A -:20568A00019087FFA8CA2196103B1F7633004492329684FEAFE2BE03AFE2BE02AFE2BE019A -:2056AA00AFE2BE0080E2BE00BE87BEC5BEC4BE83BE8A0300F1FF177602761B76F0FF00E244 -:2056CA00BD0030E6000602FE422916561F7633003292419623760001267600011F763300AE -:2056EA0032921F763300322B1F7633002128FFFF102901021F768001061E1F7675031C0AFF -:20570A001F7633002192A9CDFFFEC7FF1F76330001900150019087FFA8CA2196103B1F7601 -:20572A0033004192329682FE80E2BE00F1FF1776027622761F76BE011618FCFF1F76BE0193 -:20574A001818FCFF1F76BE011A1A01001F76BE011B1A01001A7669FF060022761F76BE0117 -:20576A00061800001F76BE01071800FF1F76BE0108183F001F76BE01091800FF1F76BE0114 -:20578A001618C0FC0F8F00F0ABA81F76BE01AB93AA9218C11F76BE0119C01F76BE010B18E9 -:2057AA00EFFF1F76BE010B18DFFF1F76BE010B18BFFF1F76BE011B18F7FF1A76009B1F762A -:2057CA00BF0100D409CC0800C2FF1F765D03B056A8010053B156A401087C1F76BF01009B76 -:2057EA0000D401921F765D03C5FF0190B056A8010053B156A4010356A40108721F76BF0173 -:20580A00009B00D401CC1000C3FF1F765D03B056A8010053B156A4010356A40208721F76BF -:20582A00BF01009B00D401CC2000C4FF1F765D03B056A8010053B156A4010356A403087262 -:20584A001F765D0308921F765D03019C0696055207EC065205EC075203EC085205ED1F76C5 -:20586A005D03BF560701015203EC025205ED1F765D03BF56070403521F765D03B1560702AA -:20588A001F765D03079201521F765D03B1560B021F765D03B156090102521F765D03B156BE -:2058AA000B011F765D03B1560A012276276FAA28080BAB2B1F76BE010AA9AA2813BCAB2867 -:2058CA0005001F76BE011AA91F6F088F45011F76BE010AA81F76BE01018F05001AA8146F03 -:2058EA00088F8A0B1F76BE010AA8AA2801F8AB2805001F76BE011AA9076F0152D9EC0252D0 -:20590A00F0EC0452E3EC1A76009A1F765E0310961F765E03119669FF06001F765D0307921D -:20592A00025206ED008F880A1F76BF0104A801520CEDAA28000BAB2B1F76BF0102A9128F54 -:20594A0000001F76BF010AA8060006FE41960002441E461E1F765D030792025215ED414028 -:20596A0003EE441A0008414103EE441A0002414203EE441A8000414303EE441A080044067C -:20598A001F76BF01021E1F765D03079201521DED414003EE431A0008414103EE431A0001F5 -:2059AA00414203EE431A0002414303EE451A0200414403EE451A100044061F76BF01041E8E -:2059CA001F76BF0146060C1E86FE060002FE412B1F765D030792025214ED1F76BF0109CCEF -:2059EA000400C1FF02ED410A1F76BF0109CC0200C0FF03ED4108020041921F765E03119609 -:205A0A001F765D030792015215ED1F76BF0109CC2000C4FF02ED410A1F76BF0109CC040024 -:205A2A00C1FF03ED41080200035641011F765E0311961F765D030792045245ED1F76BF01BE -:205A4A0001CC0008CAFF02ED410A1F76BF0101CC0001C7FF03ED410802001F76BF0109CC16 -:205A6A002000C4FF03ED410804001F76BF0109CC0400C1FF03ED410808001F76BF0101CCAB -:205A8A000004C9FF03ED410810001F76BF0101CC8000C6FF03ED410820001F76BF0109CCFD -:205AAA001000C3FF03ED410840001F76BF0109CC0200C0FF03ED4108800041921F765E0324 -:205ACA00019011961F76BF01009B099200D4C2FF0190B056A8010053B156A4010356A40820 -:205AEA0041721F76BF01009B00D401CC4000C5FFB056A8010053B156A4010356A4094172ED -:205B0A001F76BF01009B00D401CC1000C3FFB056A8010053B156A4010356A40A41721F761B -:205B2A00BF01009B00D401CC2000C4FFB056A8010053B156A4010356A40B41721F765E031D -:205B4A004192109682FE06001F76BF01061A010006001B76F0FF0500BDA8BDA0BDC2BDC37A -:205B6A00BDAB00E2BD0003E2BD0003E2BD0103E2BD0203E2BD0330E600060AFE69FF42298F -:205B8A001656432BBF564601BF564701227601021F766C0301560C002376391110291A76BA -:205BAA001F765F033CCC0080CEFF04ED69FF40768DAD69FF4076A1AB1F766D033A0A1F76FE -:205BCA006D033A92A90EA9BD120F00770077007700778BE60000007712E8000D14AD086449 -:205BEA001F766D033A2B1F766D03BF563B011F76750301022C07A9BD160F007702E8E03498 -:205C0A000AE800001F7675038BE60A0003E22C0194E6020014AD0765008F204E1F7675033B -:205C2A002CA8462B1F76750301022E07A9BD160F007702E8E0340AE800001F7675038BE660 -:205C4A000A0003E22E0194E6020014AD0765008F204E1F7675032EA8472B1F765E03472DB7 -:205C6A00013B0A33AB921F765E03462DA98556FFA9270412A98556FFAB93A95505631F76D6 -:205C8A005E030412056F1F765E03472D0A121F765E030096472D1F765E030B33AB921F7683 -:205CAA005E03462DA98556FFA9270512A98556FFAB93A95505631F765E030512056F1F765F -:205CCA005E03472D0B121F765E030196462D1F765E0306331F765E03472D0C121F765E031B -:205CEA00ABCA02961F765E03462D07331F765E03472D0D121F765E03ABCA03961F76750350 -:205D0A00310A1F76750331920A5204681F767503312B442B449207521463013B008FE8D79E -:205D2A0044850156A4001F767503C49231540569019A442D66FF4372440A44920752EE644A -:205D4A001F767503300A1F7675033092025204691F767503302B1F765F033C931F765E033E -:205D6A00019111920190A8CA45961F76750300D4009A3893B056A9010052B156A40145923B -:205D8A00A4CE0DEC1F7675033228F40100021F767503341E1F767503BF56360A45921F7603 -:205DAA007503389673EC1F7675033292019CA988A6BD120F0077007700771F7675038BE62E -:205DCA000000329612E8D01F14AD34641F767503322B1F767503360A1F76750336920A52C7 -:205DEA0004641F767503362B1F767503AC28E80336331F767503362D64354A1E1F76750310 -:205E0A004A92AB944A960A354A9436941F76750337961F767503340606EC00021F76750374 -:205E2A00341E086FAA28FFFFAB28FFFF1F76750334A91F767503309208ED1F76750300D45F -:205E4A0004D53785407676B11F7675033092015209ED013B1F76750301D404D53785407645 -:205E6A0076B11F76750300D502D43406407676B11F7675033092025237ED1F76750300D5F9 -:205E8A0003D43406407676B12F6F1F767503309208ED1F765E0300D400D50085407676B1A7 -:205EAA001F7675033092015209ED013B1F765E0300D501D40185407676B143921F765E03B6 -:205ECA0000D502D402CEA90E407676B11F7675033092025209ED013B1F765E0300D503D4B2 -:205EEA000385407676B18AFEAFE2BE03AFE2BE02AFE2BE01AFE2BE0080E2BE00BE87BEC581 -:205F0A00BEC4BE83BE8A0300F1FF177602764076A6AD049A029B4076AEAD407646AE06006F -:205F2A001F76C00121920F90045213ED1F76C00111CC8001C6FF02520CED22761F76C001A5 -:205F4A00BF5625551F76C001BF5625AA1A76016F060022761F76C001BF5629681A7669FFDC -:205F6A00060006FE449743961F76C00111CC0800C2FF02EC25761F76C00111CC8001C6FF5B -:205F8A0007EC22761F76C00111187FFE1A7622761F76C001111A400043921F76C0010F90BD -:205FAA0021CDF0FF1F76C001A8CA21961A764392B156A901A90E461E69FFA828C901A92877 -:205FCA0080C3AC1E44564600461E4076A6AD1F76C001119201900152FBED22761F76C001AA -:205FEA001118BFFF1A764492015203EC02520DED22761F76C001039011CD7FFE1F76C00188 -:20600A0086FFA8CA11961A7644920BED46C4013BAC281E00A60640FF2256A60741FF461E8E -:20602A00449201520BED46C4013BAC281E00A60640FF2256A60741FF461E449202520AED28 -:20604A0046C4AC281F00013BA6062256A60740FF461E439218ED4492035215ED22761F7655 -:20606A00C00111CC7FFE1F76C001A91A0001119669FF20FFDA054076DAB61F76C001111A0D -:20608A0080011A7646061F7675033A1E86FE69FF060004FE22761F76C001BF561A011F768D -:2060AA00C0011B2B1F76C0011A9206EC1F76C00103561A01026F019AA90E441E1F767503DF -:2060CA0069FF4406421E3A06C000CFB5441E1F76750344063E1E1F76C0011B9206EC1F7681 -:2060EA00C00103561B01026F019AA90E441E1F7675034406421E3A06C000CFB5441E1F7609 -:20610A00750344063C1E1F762C0035CCF8FF01501F762C0035961F762C00341A04001F761B -:20612A002C003418F7FF1F76C0011C1A0800787680001F76C0011C1A10001F76C0011C1ABD -:20614A0000041F76C0011C1A00081F76C0011C1A20001F76C0011C1A00011F76C0011C1AD8 -:20616A0000101F76C0011C1A00201F76C0011C1A00401F76C0011C1A00801F76C0011C18F7 -:20618A00FBFF1F76C0011D1A01001F76C0011D1A02001F76C0011D1A04001F76C0011D1AC0 -:2061AA0008001F76C0011D1A10001F76C0011D1A20001F76C0011C1A04001F76C0011D1A66 -:2061CA0000041F76C0011D1A00081F76C0011D1A00101F76C0011D1A00201F76C0011D1A45 -:2061EA0000011F76C0011D1A00021F76C0011D1A00401F76C0011D1A00801F76C001201A9B -:20620A0000011F76C001201A00021F76C001201A00041F76C001201A00081F76C001201A25 -:20622A0000101F76C001201A00201A7684FE69FF060002FE22761F762B002028FFFF1F76E1 -:20624A002B002128FFFF1F762B002228FFFF1F762B002328FFFF1F762B002428FFFF1F7612 -:20626A002B002528FFFF1F762B002628FFFF1F762B002728FFFF1A761F76FFCF38924196F1 -:20628A001F76FFCF399241961F76FFCF3A9241961F76FFCF3B9241961F76FFCF3C924196DA -:2062AA001F76FFCF3D9241961F76FFCF3E9241961F76FFCF3F9241961F762B002F4003EE96 -:2062CA00019A026F009A82FE69FF060022761F762C0035CCF8FF01501F762C0035961F765D -:2062EA002C003418FCFF1F762C003418F7FF1F762C00341A04001F762C00201A60001F761B -:20630A002C00201A1C001F762C00201A03001F762C00201A00301F762C00201A000E1F762A -:20632A002C00201A80011F762C00211A40001F762C00201A00401F762C00201A00801F76E5 -:20634A002C00211A03001F762C002C1A60001F762C002C1A1C001F762C002C1A03001F76A0 -:20636A002C002C1A00301F762C002C1A000E1F762C002C1A80011F762C002D1A40001F76F7 -:20638A002C002C1A00401F762C002C1A00801F762C002D1A03001F762C002E1A60001F76B1 -:2063AA002C002E1A1C001F762C002E1A03001F762C002E1A00301F762C002E1A000E1F7652 -:2063CA002C002E1A80011F762C002F1A40001F762C002E1A00401F762C002E1A00801F760D -:2063EA002C002F1A03001F762C00381A07001F762C00381A38001A7669FF407685B007F6D6 -:20640A00007769FF060022761F76BE01181A03001F76BE01181A0C001F76BE01181A300024 -:20642A001F76BE01181AC0001F76BE01181A00031F76BE01181A000C1F76BE01181A00303B -:20644A001F76BE01181A00C01F76BE01191A03001F76BE01191A0C001F76BE01191A300018 -:20646A001F76BE01191AC0001F76BE01191A00031F76BE01191A000C1F76BE01191A0030F7 -:20648A001F76BE01191A00C01F76BE01141A03001F76BE01141A0C001F76BE01141A3000E6 -:2064AA001F76BE01141AC0001F76BE01141A00031F76BE01141A000C1F76BE01141A0030CB -:2064CA001F76BE01141A00C01F76BE01151A03001F76BE01151A0C001F76BE01151A3000A8 -:2064EA001F76BE01151AC0001F76BE01151A00031F76BE01151A000C1F76BE01151A003087 -:20650A001F76BE01151A00C069FF407685B0060022761F76BE01261A03001F76BE01261A12 -:20652A000C001F76BE01261A30001F76BE01261AC0001F76BE01261A00031F76BE01261A02 -:20654A00000C1F76BE01261A00301F76BE01261A00C01F76BE01271A03001F76BE01271AE0 -:20656A000C001F76BE01271A30001F76BE01271AC0001F76BE01271A00031F76BE01271ABE -:20658A00000C1F76BE01271A00301F76BE01271A00C01F76BE01171A03001F76BE01171ABE -:2065AA000C001F76BE01171A30001F76BE01171AC0001F76BE01171A00031F76BE01171ABE -:2065CA00000C1F76BE01171A00301F76BE01171A00C01F76BE01281A03001F76BE01281A7C -:2065EA000C001F76BE01281A30001F76BE01281AC0001F76BE01281A00031F76BE01281A3A -:20660A00000C1F76BE01281A00301F76BE01281A00C01F76BE01161A00C01F76BE01091A8D -:20662A0000C01F76BE01091A00301F76BE01091A000C1F76BE01161A30001F76BE01161A2E -:20664A00C0001F76BE01161A00301F76BE01161A00031F76BE01161A000C1F76BE01091A2E -:20666A0000031A7669FF060002FE4196005206EC1F76BF01021A4000056F1F76BF01041A5C -:20668A00400082FE060002FE4196005206EC1F76BF01021A0001056F1F76BF01041A0001B5 -:2066AA0082FE0600009A407631B101024076DAB6019A407640B101024076DAB6009A4076F4 -:2066CA0040B101024076DAB6060002FE4196407640B1019A407631B101024076DAB6009ADC -:2066EA00407640B1407631B101024076DAB682FE060022FE477D461E437C5C2B5D2B5E2BE3 -:20670A00602B43920152056546064A1EEFFF0D014606B4565C01460656FF4C1E47920564A2 -:20672A000452B45660010264472B4C064E1E572B479257540B650A02421E4E06C000CFB57E -:20674A004E1E570A47925754F7624E06461E46060A655E0A0A02421E4606C000CFB5461E4A -:20676A004606F8624C06461E5C925E945F96B1565F0147925F72572B096F470B0A02421E15 -:20678A004606C000CFB5461E570A5F92FC9C5754F56247920263472B019A472D66FF5D96F8 -:2067AA00015202ED5D2B008FE80342A84606C000CFB5501E42A84606C000DEB564BE42C2F4 -:2067CA00C000CFB5521E6402421E4606C000DEB50ABE42C2C000CFB5541E0A02421E46065C -:2067EA00C000DEB5561E540656075207500704ED5D2B472B5C2B60921DECBF56570357929C -:20680A001965013BAD5C0356570196DC0156A400C40610ED479257540DECAD5C035657018F -:20682A0096DC0156A4000F02C41E016F570B5792E9625C9220ECBF565701579204521B63C4 -:20684A00013BAD5C0356570196DC0156A4000F02C40F04EC579203520AEDAD5C0356570108 -:20686A0096DC0156A4000A02C41E056F570A57920452E764572B579204522863013BAD5CC3 -:20688A000356570196DC0156A400408F1ADBA9A0C407AD5CA98396DCC585A61E0356570192 -:2068AA000156A400C4C2572D5D9264FF01900AECAD5C0356570196DC0156A40080020156F0 -:2068CA00C400570A57920452DA64540637FF5AFF5606AB1800FF621EAA2B6292FF90629635 -:2068EA00612B6292ABCA62966192AC281800AACA619652063FFF0090FF91A9276292ABCA68 -:20690A00A82762966192ABCA619650063B56085600FFA9276292ABCAA82762966192ABCA9B -:20692A00619662064A1E013B008F2ADB43850156A400C4925B96572B5792045230635B926B -:20694A0010522D62582B589208520F634A9201905996013B4A0640FF4A1E5992407662B1C0 -:20696A00580A58920852F3645B925A96582B589206520E635A92019059965A92A0FF5A9616 -:20698A005992407662B1580A58920652F4645B0A40764FB1570A57920452D264A2FE0600A6 -:2069AA0006FE461E44A8417D4606A98A81DC46A814EC4483859244A04158A0F2008F80DD18 -:2069CA00A092FF90A9584192C7FF947041964606A98A81DC46A8EEED419286FE06000CFE6B -:2069EA00461E44A8417D00024C1E46064C0F28694CCC01004796448A01294C0640FF015605 -:206A0A00A400C4924896479205ED48CC00FFC7FF49964792015204ED4892FF9049964992D1 -:206A2A004170008F80DDFF90A9584192C7FF9470419601024C074C1E46064C0FDA66419231 -:206A4A008CFE060006FE439642A84428FFFF452B4392455436694558428A9492FF9044F29A -:206A6A00462B469208521067444007EF4492C0FFA91C01A04496046F4492C0FF4496460A71 -:206A8A0046920852F2684558428A94CC00FFC7FF44F2462B469208521067444007EF449232 -:206AAA00C0FFA91C01A04496046F4492C0FF4496460A46920852F268450A43924554CC6620 -:206ACA00449286FE0600008F000C1F766C0302A8AA28FFFFAB28FFFF1F76300002A91F765D -:206AEA003000062B1F763000072B1F763000041A10001F763000041A200000021F766C0338 -:206B0A00041E1F766C03008F080C0AA81F766C03008F100C12A81F7630000AA91F7630004A -:206B2A0012A91F7630000E2B1F7630000F2B1F763000162B1F763000172B1F7630000C1A9B -:206B4A0010001F763000141A10001F7630000C1A20001F763000141A20001F766C030C1ECC -:206B6A001F766C03141E060008FE03E2460103E2440042A8428A4406E41E428A4606F41E48 -:206B8A00AFE24400AFE2460100E70800007788E60000007703E24800428AC48A4806D41E6C -:206BAA00428AC48AF42B428AC48AFC2B428AC48AE41A1000428AC48AE41A2000428AC48AD7 -:206BCA00E418FFFB428AC48AE418FFF7428AC48AE41A0040428A0002D41E88FE0600BD3A0E -:206BEA00BDB2BDAABDA202FE0129A9BF120F58FF5B61A85C7F91A8088000421EA493D6FFE0 -:206C0A00A85CA9BF160F6761A85D7F91A8088000A859A958A593D6FFA85DA493A571A818AB -:206C2A000001A697A418FF00A518FF007FDCA492A59EA7964D64A90801FF3E62A193A0921C -:206C4A0036FFA859A958420635FF0EF6A11FA95BA3010AF6A11F2D56A204A32DA03640FF3D -:206C6A000BF6A11F33FF009B30FF54FFA20CA39540FFA70801001FF677FF200940FFA70883 -:206C8A0001001FF677FF5AFFA7922265A90801FF1363A9A946FF7F91A85BA95AA625A7956A -:206CAA0096FFA20CA395A9BD120F82FEBE82BE86BE8BBE8E0600009B57FFA8087FFF5AFFB1 -:206CCA00A693F260A8280080AA71AB92ED6F20FF0000EA6F5AFFA493A818000196FFA85CB9 -:206CEA00A9A9A8087FFFA81C0080A4CBDD6F1F76C001201A0010407685B022761F762C0027 -:206D0A003518F8FF1F762C00341A03001F762C003418F7FF1F762C003418FBFF1F762C0048 -:206D2A002ECC9FFF1F762C0020502E961F762C002ECCE3FF1F762C0008502E961F762C0081 -:206D4A002ECCFCFF1F762C0001502E961F762C002ECCFFCF1F762C00A91A00102E961F76E8 -:206D6A002C002ECCFFF11F762C00A91A00062E961F762C002E187FFE1F762C002F18BFFF5B -:206D8A001F762C002E18FFBF1F762C002E18FF7F1F762C002F1A03001A7607F6007769FF26 -:206DAA00060004FE421E0129420640FF421E0002441E4206440F0A6910024076DAB6010283 -:206DCA004407441E4206440FF86684FE0600103B1F7633002018FEFF1F763300222B1F7689 -:206DEA003300242B1F763300262B1F763300282B1F7633002A2B1F7633002C2B1F763300CF -:206E0A002E2B1F763300302B1F763300322B1F763300342B1F763300362B1F763300382B4C -:206E2A001F763300232B1F763300252B1F763300272B1F763300292B1F7633002B2B1F7631 -:206E4A0033002D2B1F7633002F2B1F763300312B1F763300332B1F763300352B1F76330041 -:206E6A00372B1F763300392B69FF06001F763300201A01001F7633002128FFFF102969FF59 -:206E8A000600BDB2BDAABDA203E2BD0403E2BD0506FE03E2440042A808D00CD142C54283C8 -:206EAA00AFE2440142C4428A4286AFE2F70050E80200428212E3958B42C50ED012E3D6CC41 -:206ECA00AFE2C40000E39F4208E3E295AFE2930140E74921007710E70800007703E246005F -:206EEA00428A42830CD00ED194069D1E428A4606941E428A428308D0F406951E428A4406F1 -:206F0A00F41EAFE2460086FEAFE2BE05AFE2BE04BE82BE86BE8B0600AD28000469FF1F56CA -:206F2A0016561A5610E6000240291F76000002291B762276A928DEB6A828000001091B6166 -:206F4A00C076DEB604290F6F009BA92401DF046C0429A82401DFA61EA1F78624A706A1814C -:206F6A000109A71EA92403635CFF043BA95901DF0900ECFF1A76A928FFFFA828FFFF01095E -:206F8A000E61FF76FFFF066F01DFBDC3A71E673EBEC5A92401DFA82458FFF76040767DB633 -:206FAA0040769AB6022904295F565AFF42065F56421E00021FF617564200AB0632560229D4 -:206FCA002076022904295F565AFF420656FF421E00021FF6175642003256022920765AFF46 -:206FEA0000021FF617564200A9A920765AFF00021FF617564200207602FE208F00001F76E0 -:20700A00750322A81F767503208F00FA24A81F76750322061F767503261E1F767503282BBC -:20702A001F7675032206421E066F428AC42B01024207421E1F7675032406420FF76682FE70 -:20704A000600A85CA971A697013BA98556FFA95DA48556FFA95CA5920FF6A41FA64F026C1B -:20706A005CFF2076A696A85C013BA98556FFA95DA48556FFA95CA5920FF6A41FA64F026C2B -:20708A005DFFA89220765AFFAB92A4C5A48E07ECFF9CA988859287960E00FEFFAB92A9881D -:2070AA00A9A9A60F10ECAA930EECA9A9FF9DA85CBF76FEFF859287960E00FEFF85928796F5 -:2070CA000C00F8FFA08A060006FE008F00C044A8008F000D46A82276412B419280520D6391 -:2070EA00448A84C444A8468AA9A80209461EC4C2410A41928052F5641A7686FE69FF0600A3 -:20710A00A928FFFFAA28FFFFAB28FFFFA828FFFFAB0F04ED00D400BE0B6FA927A928FFFFD1 -:20712A00A92FA4A9C488A928FFFF0209A98AA6924076E79406000077006F1F767B03BDB2F0 -:20714A0012C5A959673E1F767B0316C5A70603ECA192673E1F767B03140603ECA71E673EBF -:20716A00407698B6BE8B060022761F76C0011C1A080069FF787680001A761F76C401BF56B1 -:20718A0018E0028FE64969FFA9A84076DAB6060002FE429741961F767B030C961F767B03B0 -:2071AA0042920B9682FE06001F767B0310A806001F767B0312A8060006000119C356FFFFEF -:0271CA000600BD -:2071CC002B0000003CC122761F762A00001A01001F762A0006CCFFF0A91A00051F762A0002 -:2071EC0006961F762A0006CCF0FF05501F762A0006961F762A0007CCE0FF08501F762A002F -:1C720C0007961F762A00041AFF011F762A00051AFF011A7607F6007769FF06009C -:207228001101000000C07188000071880000718800007188000071880000718800007188A5 -:207248000000718800007188000071880000718800007188000071880000008000000D8043 -:2072680000001A80000027800000858800003F8000004A80000055800000608000006B808F -:20728800000076800000818000008C80000097800000A2800000AD800000B8800000C38002 -:2072A8000000CE800000D9800000FA800000858800001B8100003C8100005B8100007C8166 -:2072C80000009F810000C0810000E1810000028200002382000046820000678200008588FC -:2072E80000008588000088820000A9820000CC820000EF8200001083000031830000858831 -:20730800000085880000548300007583000098830000B9830000DA830000FB83000085884A -:207328000000858800001C8400003D84000085880000858800008588000085880000858896 -:207348000000858800006084000081840000A4840000C5840000E6840000078500008588BB -:207368000000858800002A8500004B8500006C8500008D850000AE850000CF8500008588E2 -:20738800000085880000F28500001586000085880000858800003686000057860000858806 -:2073A800000085880000788600009B860000BC860000DD860000FE860000218700004487FD -:2073C80000006587000085880000858800008588000085880000858800008588000085885E -:2073E80000008588000085880000858800008588000085880000858800008588000085881D -:2074080000008588000086870000A7870000C8870000E98700000A880000858800002D8809 -:2074280000004E880000080008000A0008000800080006000A000800080008000000000014 -:08744800000033000B000A00F4 -:207450002800000068C1B69E0000D59E0000E79E0000FE9E0000149F0000279F00003B9F90 -:2074700000004E9F0000699F00008D9F0000A39F0000B69F0000C39F0000E59F0000F79FC8 -:18749000000009A000001CA000002DA000003DA0000055A000000000E0 -:00000001FF +:200220004040FFFF02DB00000000FFFF03DB00000000FFFF04DB00000000FFFF07DB0000CA +:200240001400FFFF08DB00000000FEFF12DB000000000000EEFF14DB00001BD6B738D79A92 +:20026000FC3FA84C79BF000000000000000000000000000000000000000000000000FFFF19 +:20028000C2DB00000000FFFFC3DB00000000FFFFC4DB00000000FFFFC5DB00000000F4FFF7 +:2002A000D2DB0000000000000000000097990000C5990000929900008D990000FFFF42DD95 +:2002C00000000000FFFF43DD00000000FEFF48DD000000000000FEFF4ADD000000000000BA +:2002E000FEFF4CDD000000000000FEFF4EDD000000000000F0FFA1DC00003F0006005B00A4 +:200300004F0066006D007D0007007F006F00400000000000000079000000FFFF50DD000065 +:200320000000FFFF51DD00000000FFFF52DD00000000FFFF53DD00000000FFFFF9DB000064 +:200340000000FFFFFADB00000000FFFFFBDB00000000FEFF62DD000000000000FEFF64DD7C +:20036000000000000000FEFFC6DD000078AD0000FEFFC8DD000078AD0000FEFFCADD00004D +:2003800000000000FEFFCCDD000000000000FFFFB6DC00000000FFFFB7DC00000000FBFF9C +:2003A00070DD000008000C00100000000400FFFF7ADD00000A00FFFF7BDD00000100FEFF15 +:2003C0003EDB000000000000FEFF7EDD000001000200FEFFD1DD000000000000FEFFD3DD51 +:2003E000000000000000FFFF00D000000100FFFF80DD00000000FFFF41DA00000000FFFFBC +:0A040000D0DD000000000000000045 +:20040A00822D000000801B76F0FF00E2BD0030E60006422916562576006F1B76F0FF00E225 +:20042A00BD0030E6000602FE422916561F7633003892419623760008267600003892382B2F +:20044A002128FFFF1029103B419238962576006F1B76F0FF00E2BD0030E6000602FE422976 +:20046A0016561F763300389241962376000826760000381890002128FFFF1029103B4192E2 +:20048A0038962576006F1B76F0FF00E2BD0030E6000602FE422916561F76330038924196FF +:2004AA002376000826760000381890002128FFFF1029103B419238962576006F1B76F0FF1F +:2004CA0000E2BD0030E6000602FE422916561F76330038924196237600082676000038188A +:2004EA009C002128FFFF1029103B419238962576006F1B76F0FF00E2BD0030E6000602FEA5 +:20050A00422916561F76330038924196237600082676000038189E002128FFFF1029103B9B +:20052A00419238962576006F1B76F0FF00E2BD0030E6000602FE422916561F763300229278 +:20054A00419623760101221868002128FFFF1029103B419222962576006F1B76F0FF00E2BB +:20056A00BD0030E6000602FE422916561F76330022924196237601012292222B2128FFFF8B +:20058A001029103B419222962576006F1B76F0FF00E2BD0030E6000602FE422916561F7691 +:2005AA003300229241962376010026760101221878002128FFFF1029103B41922296257698 +:2005CA00006F1B76F0FF00E2BD0030E600064229165610292576006F1B76F0FF00E2BD002E +:2005EA0030E600064229165610292576006F1B76F0FF00E2BD0030E6000642291656102970 +:20060A002576006F1B76F0FF00E2BD0030E600064229165610292576006F1B76F0FF00E20F +:20062A00BD0030E600064229165610292576006F1B76F0FF00E2BD0030E6000642291656AB +:20064A0010292576006F1B76F0FF00E2BD0030E600064229165610292576006F1B76F0FF78 +:20066A0000E2BD0030E600064229165610292576006F1B76F0FF00E2BD0030E600064229F5 +:20068A00165610292576006F1B76F0FF00E2BD0030E600064229165610292576006F1B76BB +:2006AA00F0FF00E2BD0030E600064229165:10292576006F1B76F0FF00E2BD0030E6000631 +:2006CA004229165610292576006F1B76F0FF00E2BD0030E6000602FE422916561F7633001C +:2006EA002292419623760100267601012292222B2128FFFF1029103B419222962576006FCC +:20070A001B76F0FF00E2BD0030E6000602FE422916561F7633002C9241962376200026760B +:20072A0039012C922C2B2128FFFF1029103B41922C962576006F1B76F0FF00E2BD0030E6C1 +:20074A00000602FE422916561F7633002C92419623762000267639012C1832002128FFFF09 +:20076A001029103B41922C962576006F1B76F0FF00E2BD0030E6000602FE422916561F76A5 +:20078A0033002292419623760100267601012218F8002128FFFF1029103B41922296257636 +:2007AA00006F1B76F0FF00E2BD0030E6000602FE422916561F7633002292419623760100C1 +:2007CA00267601012218FA002128FFFF1029103B419222962576006F1B76F0FF00E2BD00BE +:2007EA0030E6000602FE422916561F76330030924196237680002676000030180300212852 +:20080A00FFFF1029103B419230962576006F1B76F0FF00E2BD0030E6000602FE4229165697 +:20082A001F763300329241962376000126760001321875002128FFFF1029103B41923296EF +:20084A002576006F1B76F0FF00E2BD0030E6000602FE422916561F76330032924196237676 +:20086A000001267600013218FD002128FFFF1029103B419232962576006F1B76F0FF00E2B7 +:20092A0000E2BD0030E60006422916562376390110292576006F1B76F0FF00E2BD0030E6D0 +:20094A000006422916562576006F1B76F0FF00E2BD0030E600064229165610292576006F51 +:20096A001B76F0FF00E2BD0030E6000602FE422916561F7633002C924196237620002676A9 +:20098A0039012C1837002128FFFF1029103B41922C962576006F1B76F0FF00E2BD0030E6F9 +:2009AA00000602FE422916561F7633002C92419623762000267639012C922C2B2128FFFF08 +:2009CA001029103B41922C962576006F1B76F0FF00E2BD0030E6000602FE422916561F7643 +:2009EA0033002C92419623762000267639012C1833002128FFFF1029103B41922C96257624 +:200A0A00006F1B76F0FF00E2BD0030E6000602FE422916561F7633002C9241962376200035 +:200A2A00267639012C1822002128FFFF1029103B41922C962576006F1B76F0FF00E2BD00E7 diff --git a/Bin/UKSSTMS320F28335.map b/Bin/UKSSTMS320F28335.map index 041acb3..701e3d7 100644 --- a/Bin/UKSSTMS320F28335.map +++ b/Bin/UKSSTMS320F28335.map @@ -2,7 +2,7 @@ TMS320C2000 Hex Converter v5.2.7 ******************************************************************************** -INPUT FILE NAME: +INPUT FILE NAME: OUTPUT FORMAT: Binary PHYSICAL MEMORY PARAMETERS @@ -12,21 +12,20 @@ PHYSICAL MEMORY PARAMETERS BOOT LOADER PARAMETERS Table Type: SERIAL PORT (SCI 8 bit Mode) - Entry Point: 0x0000b589 + Entry Point: 0x0000abd0 OUTPUT TRANSLATION MAP -------------------------------------------------------------------------------- 00000000..003fffff Page=0 Memory Width=8 ROM Width=8 -------------------------------------------------------------------------------- - OUTPUT FILES: D:\project2833\GIT\UKSS_23550_2\bin\UKSSTMS320F28335.bin [b0..b7] + OUTPUT FILES: D:\project2833\GIT\UKSS_23550_2\Bin\UKSSTMS320F28335.bin [b0..b7] - CONTENTS: 00000000..000074a7 BOOT TABLE - .cinit : dest=0000b6de size=000001f7 width=00000002 - .text : dest=00008000 size=000036de width=00000002 - ramfuncs : dest=0000c13c size=0000002b width=00000002 + CONTENTS: 00000000..00006193 BOOT TABLE + .cinit : dest=0000ad82 size=000001f7 width=00000002 + .text : dest=00008000 size=00002d82 width=00000002 .econst : dest=0000c000 size=00000111 width=00000002 - .switch : dest=0000c168 size=00000028 width=00000002 + .switch : dest=0000c112 size=00000028 width=00000002 -------------------------------------------------------------------------------- 00000000..003fffff Page=1 Memory Width=8 ROM Width=8 "*DEFAULT PAGE 1*" diff --git a/Bin/UKSSTMS320F28335.out b/Bin/UKSSTMS320F28335.out index 03bbac27bf8896e6c663e6b066b6eb0982705749..7c208578d9c73307b952cf7bd5cd0a411b07c33c 100644 GIT binary patch literal 270298 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≈@^r{`g)L)*oVHF9ug%c@cxF{$!un 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 literal 334848 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 X|G>_bO#>bi4?ko!F)0anxgP@neSIs= diff --git a/Debug.lkf b/Debug.lkf new file mode 100644 index 0000000..7dbce04 --- /dev/null +++ b/Debug.lkf @@ -0,0 +1,30 @@ +-z -c -e_c_int00 -m"D:/project2833/GIT/UKSS_23550_2/UKSSTMS320F28335.map" -o"D:/project2833/GIT/UKSS_23550_2/bin/UKSSTMS320F28335.out" -stack0x3f0 -w -x -i"D:/CCStudio_v3.3PLA/C2000/xdais/lib" -i"D:/CCStudio_v3.3PLA/bios_5_33_05/packages/ti/bios/lib" -i"D:/CCStudio_v3.3PLA/bios_5_33_05/packages/ti/rtdx/lib/c2000" -i"D:/ti/cgt/C2000 Code Generation Tools 5.2.15/lib" -l"rts2800_fpu32.lib" +"D:\project2833\GIT\UKSS_23550_2\F28335.cmd" +"D:\project2833\GIT\UKSS_23550_2\Source\External\v120\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" +"D:\project2833\GIT\UKSS_23550_2\Debug\ADC.obj" +"D:\project2833\GIT\UKSS_23550_2\Debug\bios.obj" +"D:\project2833\GIT\UKSS_23550_2\Debug\cntrl_adr.obj" +"D:\project2833\GIT\UKSS_23550_2\Debug\crc16.obj" +"D:\project2833\GIT\UKSS_23550_2\Debug\DSP2833x_Adc.obj" +"D:\project2833\GIT\UKSS_23550_2\Debug\DSP2833x_ADC_cal.obj" +"D:\project2833\GIT\UKSS_23550_2\Debug\DSP2833x_CpuTimers.obj" +"D:\project2833\GIT\UKSS_23550_2\Debug\DSP2833x_GlobalVariableDefs.obj" +"D:\project2833\GIT\UKSS_23550_2\Debug\DSP2833x_PieCtrl.obj" +"D:\project2833\GIT\UKSS_23550_2\Debug\DSP2833x_SWPrioritizedDefaultIsr.obj" +"D:\project2833\GIT\UKSS_23550_2\Debug\DSP2833x_SWPrioritizedPieVect.obj" +"D:\project2833\GIT\UKSS_23550_2\Debug\DSP2833x_SysCtrl.obj" +"D:\project2833\GIT\UKSS_23550_2\Debug\DSP2833x_usDelay.obj" +"D:\project2833\GIT\UKSS_23550_2\Debug\DSP2833x_Xintf.obj" +"D:\project2833\GIT\UKSS_23550_2\Debug\ecan.obj" +"D:\project2833\GIT\UKSS_23550_2\Debug\filter_bat2.obj" +"D:\project2833\GIT\UKSS_23550_2\Debug\kanal.obj" +"D:\project2833\GIT\UKSS_23550_2\Debug\log_to_mem.obj" +"D:\project2833\GIT\UKSS_23550_2\Debug\main.obj" +"D:\project2833\GIT\UKSS_23550_2\Debug\measure.obj" +"D:\project2833\GIT\UKSS_23550_2\Debug\message.obj" +"D:\project2833\GIT\UKSS_23550_2\Debug\peripher.obj" +"D:\project2833\GIT\UKSS_23550_2\Debug\pulto.obj" +"D:\project2833\GIT\UKSS_23550_2\Debug\RS485.obj" +"D:\project2833\GIT\UKSS_23550_2\Debug\spise2p.obj" +"D:\project2833\GIT\UKSS_23550_2\Debug\tools.obj" +"D:\project2833\GIT\UKSS_23550_2\Libraries\rts2800_fpu32.lib" diff --git a/Doc/23550_2 prt_3 data stru.xls b/Doc/23550_2 prt_3 data stru.xls index f35c5789d3d143c212712ce8f04c25812ece7f7f..03bf76ed554dd5827328f4c1f07f1b203e3555b1 100644 GIT binary patch delta 3795 zcmZ8j3sh9s6+P$8n_*^v;WzwIKGsAWu>4{ssRAlS{PWY+wrSM1+E~RA5fwEcB7&j; zuJZhUFly8$Ass6&+gLSiW1}mjZGN@JRTG<~29+jiqgL&HZyp1~+_mm`cki?BIrrTA z?wjgvQ+2ngJ<-6OBG)jWU%ygA+U1x4rYBXulZZ&V&?!zE2E*}7g9Cl2toEvlp|4B3 z94D$}iUKFw+>!%z2O={yu|7Q}6C;fNy3n)pgXtbw%bB1C{m#oNtxk!Dim1=d9LGfiq=V@gK({4`eBlaQe0`rLgOHXKZG)x;gEvo2;mQ?gE zbClStp+_tO^r%RN8xR#zIE~eXrGi{34ot7pBW(*QD zGNQyk(jJNI%zSY$D^x^fgcu1EkoZZ4(-w{>iBb}gGfB#og`AlrzRXM$tr^SgMo`U$ zL{K52xe2)mM5hx(P3Al?KgD0{$?_L5Sw9x0j8ON9tW5^lT(_vgJ;9kDEB;oT7CwSj znIZT7%5fAWQ9UwTbQM1(vP*2DWZFPpCdN&3@N$t;;^0cHUn_3oxeooa;z3CQ*K6Yq zA{Ks%xIM+eTeW_h)^FGP*TmH64nBZB+P!&tRD?A5bMfZN-i}KQZp6-69bdtZZ+(6`V+bVN%rAg85 zsVBRla-xZomC{6yJoGoVnu@lsl4ufk_Z!&Dup3qpRbVUAU%}c;L^okSg;lDkifa6b23HdWqck0`ZLlj= z6V0&@y;wt(ZzUSJhG>XC(I>EHVRLGUh9bkIu(M%bTnoQI=<1-e5q$;wG3=mqL^f18 zte)sG>LkMA;!oq@fC#;9>51qM}fupbbP1VBN60!-x!xM7Llk!#eFmdtleY z-i7@a?0XxDevR|H<5i-%NTT~qL|3DT`~}gy7^1&yCOR31Q`<^(bRbc|R-$NB)U*v8 z?1`%FM5|HCrkzAHP^#H`h#aWM*}W(mD)C_((JoXV=>S$0Ks4bHR)du^9fm&=KY5gB z4H9g5gXl*{r2Z|ULL~D3+jzMUDd`w=u|!*sV_T5Gp%d5|1Ri&is0&+Kbqfyy38eg% z=&!JwVV}buK8D>7OYaaJKw_rfV+Gi=8E3#Dv3JiB{Q`+O-o;sf6|hch&BQyJf z-*4pM2&z^!4C~ye?Nb=4)5xDe}iJ^|#O_G3?&R$kjYSj~j-# zt66WN=H8Q#8g^-%mBO)8HC!WF{<|o;fy*>B6gw0|4cyb#i@0x#qu20aos9&$hI?AA zsMlEa<8q2ZDXJfPM`M@hY;-?%=6!YM3Z0GV$6mO;SME*wdEclXvUkez27~JFpMC93R0W|7*_Nz$H^*;$qNkyh;}*fo|iTwqJ>n zcnj38==7j|>T{q2*K%*GQ|1}CA#fe{w)*2TZ)3+!&eo2)m4;xFoxGESwfA`lPVX+x z(NE+Mq_|u8gORs57UJ)lnzNOXAy~)@bwM%&E4+ea2v#b!CQUF#7Yy|g42577=jjoK zLhy=`=f}T9gco#y!$;tNz{TTqfdhg?%0-W0ye>%b5v2GCQZ#|ftVK{SeRU0~K7v#q zL8>M&S@szc;NY+#zN~RJ{5`f&5iXh{}~}ECW>Jfr>rQ=*57FJy3}Xt>zMSl&I8} zb12eN%JB|PQ=xce#1j6{+K8*~ay?UBBbMRnSYN^2F|9598}ri@?rpV~*wAsNg>!-w h*Ksy=NNqgNZf;+6ZB=#HXRMST=UVRSxPP4e`2Qs^ojL#j delta 3676 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 diff --git a/Source/External/v120/DSP2833x_common/cmd/28332_RAM_lnk.cmd b/Source/External/v120/DSP2833x_common/cmd/28332_RAM_lnk.cmd deleted file mode 100644 index b3707a7..0000000 --- a/Source/External/v120/DSP2833x_common/cmd/28332_RAM_lnk.cmd +++ /dev/null @@ -1,176 +0,0 @@ -/* -// TI File $Revision: /main/9 $ -// Checkin $Date: July 9, 2008 13:43:25 $ -//########################################################################### -// -// FILE: 28332_RAM_lnk.cmd -// -// TITLE: Linker Command File For 28332 examples that run out of RAM -// -// This ONLY includes all SARAM blocks on the 28332 device. -// This does not include flash or OTP. -// -// Keep in mind that L0 and L1 are protected by the code -// security module. -// -// What this means is in most cases you will want to move to -// another memory map file which has more memory defined. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -/* ====================================================== -// For Code Composer Studio V2.2 and later -// --------------------------------------- -// In addition to this memory linker command file, -// add the header linker command file directly to the project. -// The header linker command file is required to link the -// peripheral structures to the proper locations within -// the memory map. -// -// The header linker files are found in \DSP2833x_Headers\cmd -// -// For BIOS applications add: DSP2833x_Headers_BIOS.cmd -// For nonBIOS applications add: DSP2833x_Headers_nonBIOS.cmd -========================================================= */ - -/* ====================================================== -// For Code Composer Studio prior to V2.2 -// -------------------------------------- -// 1) Use one of the following -l statements to include the -// header linker command file in the project. The header linker -// file is required to link the peripheral structures to the proper -// locations within the memory map */ - -/* Uncomment this line to include file only for non-BIOS applications */ -/* -l DSP2833x_Headers_nonBIOS.cmd */ - -/* Uncomment this line to include file only for BIOS applications */ -/* -l DSP2833x_Headers_BIOS.cmd */ - -/* 2) In your project add the path to \DSP2833x_headers\cmd to the - library search path under project->build options, linker tab, - library search path (-i). -/*========================================================= */ - -/* Define the memory block start/length for the F28332 - PAGE 0 will be used to organize program sections - PAGE 1 will be used to organize data sections - - Notes: - Memory blocks on F28332 are uniform (ie same - physical memory) in both PAGE 0 and PAGE 1. - That is the same memory region should not be - defined for both PAGE 0 and PAGE 1. - Doing so will result in corruption of program - and/or data. - - L0/L1/L2 and L3 memory blocks are mirrored - that is - they can be accessed in high memory or low memory. - For simplicity only one instance is used in this - linker file. - - Contiguous SARAM memory blocks can be combined - if required to create a larger memory block. -*/ - - -MEMORY -{ -PAGE 0 : - /* BEGIN is used for the "boot to SARAM" bootloader mode */ - /* BOOT_RSVD is used by the boot ROM for stack. */ - /* This section is only reserved to keep the BOOT ROM from */ - /* corrupting this area during the debug process */ - - BEGIN : origin = 0x000000, length = 0x000002 /* Boot to M0 will go here */ - BOOT_RSVD : origin = 0x000002, length = 0x00004E /* Part of M0, BOOT rom will use this for stack */ - RAMM0 : origin = 0x000050, length = 0x0003B0 - - RAML0 : origin = 0x008000, length = 0x001000 - RAML1 : origin = 0x009000, length = 0x001000 - RAML2 : origin = 0x00A000, length = 0x001000 - RAML3 : origin = 0x00B000, length = 0x001000 - ZONE7A : origin = 0x200000, length = 0x00FC00 /* XINTF zone 7 - program space */ - CSM_RSVD : origin = 0x33FF80, length = 0x000076 /* Part of FLASHA. Program with all 0x0000 when CSM is in use. */ - CSM_PWL : origin = 0x33FFF8, length = 0x000008 /* Part of FLASHA. CSM password locations in FLASHA */ - ADC_CAL : origin = 0x380080, length = 0x000009 - RESET : origin = 0x3FFFC0, length = 0x000002 - IQTABLES : origin = 0x3FE000, length = 0x000b50 - IQTABLES2 : origin = 0x3FEB50, length = 0x00008c - FPUTABLES : origin = 0x3FEBDC, length = 0x0006A0 - BOOTROM : origin = 0x3FF27C, length = 0x000D44 - - - - -PAGE 1 : - RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */ - RAML4 : origin = 0x00C000, length = 0x001000 - RAML5 : origin = 0x00D000, length = 0x001000 - ZONE7B : origin = 0x20FC00, length = 0x000400 /* XINTF zone 7 - data space */ -} - - -SECTIONS -{ - /* Setup for "boot to SARAM" mode: - The codestart section (found in DSP28_CodeStartBranch.asm) - re-directs execution to the start of user code. */ - codestart : > BEGIN, PAGE = 0 - ramfuncs : > RAML0, PAGE = 0 - .text : > RAML1, PAGE = 0 - .cinit : > RAML0, PAGE = 0 - .pinit : > RAML0, PAGE = 0 - .switch : > RAML0, PAGE = 0 - - .stack : > RAMM1, PAGE = 1 - .ebss : > RAML4, PAGE = 1 - .econst : > RAML5, PAGE = 1 - .esysmem : > RAMM1, PAGE = 1 - - IQmath : > RAML1, PAGE = 0 - IQmathTables : > IQTABLES, PAGE = 0, TYPE = NOLOAD - - /* Uncomment the section below if calling the IQNexp() or IQexp() - functions from the IQMath.lib library in order to utilize the - relevant IQ Math table in Boot ROM (This saves space and Boot ROM - is 1 wait-state). If this section is not uncommented, IQmathTables2 - will be loaded into other memory (SARAM, Flash, etc.) and will take - up space, but 0 wait-state is possible. - */ - /* - IQmathTables2 : > IQTABLES2, PAGE = 0, TYPE = NOLOAD - { - - IQmath.lib (IQmathTablesRam) - - } - */ - - FPUmathTables : > FPUTABLES, PAGE = 0, TYPE = NOLOAD - - DMARAML4 : > RAML4, PAGE = 1 - DMARAML5 : > RAML5, PAGE = 1 - - ZONE7DATA : > ZONE7B, PAGE = 1 - - - .reset : > RESET, PAGE = 0, TYPE = DSECT /* not used */ - csm_rsvd : > CSM_RSVD PAGE = 0, TYPE = DSECT /* not used for SARAM examples */ - csmpasswds : > CSM_PWL PAGE = 0, TYPE = DSECT /* not used for SARAM examples */ - - /* Allocate ADC_cal function (pre-programmed by factory into TI reserved memory) */ - .adc_cal : load = ADC_CAL, PAGE = 0, TYPE = NOLOAD - - -} - -/* -//=========================================================================== -// End of file. -//=========================================================================== -*/ diff --git a/Source/External/v120/DSP2833x_common/cmd/28334_RAM_lnk.cmd b/Source/External/v120/DSP2833x_common/cmd/28334_RAM_lnk.cmd deleted file mode 100644 index 25f0fc9..0000000 --- a/Source/External/v120/DSP2833x_common/cmd/28334_RAM_lnk.cmd +++ /dev/null @@ -1,178 +0,0 @@ -/* -// TI File $Revision: /main/8 $ -// Checkin $Date: July 9, 2008 13:43:30 $ -//########################################################################### -// -// FILE: 28334_RAM_lnk.cmd -// -// TITLE: Linker Command File For 28334 examples that run out of RAM -// -// This ONLY includes all SARAM blocks on the 28334 device. -// This does not include flash or OTP. -// -// Keep in mind that L0 and L1 are protected by the code -// security module. -// -// What this means is in most cases you will want to move to -// another memory map file which has more memory defined. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -/* ====================================================== -// For Code Composer Studio V2.2 and later -// --------------------------------------- -// In addition to this memory linker command file, -// add the header linker command file directly to the project. -// The header linker command file is required to link the -// peripheral structures to the proper locations within -// the memory map. -// -// The header linker files are found in \DSP2833x_Headers\cmd -// -// For BIOS applications add: DSP2833x_Headers_BIOS.cmd -// For nonBIOS applications add: DSP2833x_Headers_nonBIOS.cmd -========================================================= */ - -/* ====================================================== -// For Code Composer Studio prior to V2.2 -// -------------------------------------- -// 1) Use one of the following -l statements to include the -// header linker command file in the project. The header linker -// file is required to link the peripheral structures to the proper -// locations within the memory map */ - -/* Uncomment this line to include file only for non-BIOS applications */ -/* -l DSP2833x_Headers_nonBIOS.cmd */ - -/* Uncomment this line to include file only for BIOS applications */ -/* -l DSP2833x_Headers_BIOS.cmd */ - -/* 2) In your project add the path to \DSP2833x_headers\cmd to the - library search path under project->build options, linker tab, - library search path (-i). -/*========================================================= */ - -/* Define the memory block start/length for the F28334 - PAGE 0 will be used to organize program sections - PAGE 1 will be used to organize data sections - - Notes: - Memory blocks on F28334 are uniform (ie same - physical memory) in both PAGE 0 and PAGE 1. - That is the same memory region should not be - defined for both PAGE 0 and PAGE 1. - Doing so will result in corruption of program - and/or data. - - L0/L1/L2 and L3 memory blocks are mirrored - that is - they can be accessed in high memory or low memory. - For simplicity only one instance is used in this - linker file. - - Contiguous SARAM memory blocks can be combined - if required to create a larger memory block. -*/ - - -MEMORY -{ -PAGE 0 : - /* BEGIN is used for the "boot to SARAM" bootloader mode */ - /* BOOT_RSVD is used by the boot ROM for stack. */ - /* This section is only reserved to keep the BOOT ROM from */ - /* corrupting this area during the debug process */ - - BEGIN : origin = 0x000000, length = 0x000002 /* Boot to M0 will go here */ - BOOT_RSVD : origin = 0x000002, length = 0x00004E /* Part of M0, BOOT rom will use this for stack */ - RAMM0 : origin = 0x000050, length = 0x0003B0 - - RAML0 : origin = 0x008000, length = 0x001000 - RAML1 : origin = 0x009000, length = 0x001000 - RAML2 : origin = 0x00A000, length = 0x001000 - RAML3 : origin = 0x00B000, length = 0x001000 - ZONE7A : origin = 0x200000, length = 0x00FC00 /* XINTF zone 7 - program space */ - CSM_RSVD : origin = 0x33FF80, length = 0x000076 /* Part of FLASHA. Program with all 0x0000 when CSM is in use. */ - CSM_PWL : origin = 0x33FFF8, length = 0x000008 /* Part of FLASHA. CSM password locations in FLASHA */ - ADC_CAL : origin = 0x380080, length = 0x000009 - RESET : origin = 0x3FFFC0, length = 0x000002 - IQTABLES : origin = 0x3FE000, length = 0x000b50 - IQTABLES2 : origin = 0x3FEB50, length = 0x00008c - FPUTABLES : origin = 0x3FEBDC, length = 0x0006A0 - BOOTROM : origin = 0x3FF27C, length = 0x000D44 - - - -PAGE 1 : - RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */ - RAML4 : origin = 0x00C000, length = 0x001000 - RAML5 : origin = 0x00D000, length = 0x001000 - RAML6 : origin = 0x00E000, length = 0x001000 - RAML7 : origin = 0x00F000, length = 0x001000 - ZONE7B : origin = 0x20FC00, length = 0x000400 /* XINTF zone 7 - data space */ -} - - -SECTIONS -{ - /* Setup for "boot to SARAM" mode: - The codestart section (found in DSP28_CodeStartBranch.asm) - re-directs execution to the start of user code. */ - codestart : > BEGIN, PAGE = 0 - ramfuncs : > RAML0, PAGE = 0 - .text : > RAML1, PAGE = 0 - .cinit : > RAML0, PAGE = 0 - .pinit : > RAML0, PAGE = 0 - .switch : > RAML0, PAGE = 0 - - .stack : > RAMM1, PAGE = 1 - .ebss : > RAML4, PAGE = 1 - .econst : > RAML5, PAGE = 1 - .esysmem : > RAMM1, PAGE = 1 - - IQmath : > RAML1, PAGE = 0 - IQmathTables : > IQTABLES, PAGE = 0, TYPE = NOLOAD - - /* Uncomment the section below if calling the IQNexp() or IQexp() - functions from the IQMath.lib library in order to utilize the - relevant IQ Math table in Boot ROM (This saves space and Boot ROM - is 1 wait-state). If this section is not uncommented, IQmathTables2 - will be loaded into other memory (SARAM, Flash, etc.) and will take - up space, but 0 wait-state is possible. - */ - /* - IQmathTables2 : > IQTABLES2, PAGE = 0, TYPE = NOLOAD - { - - IQmath.lib (IQmathTablesRam) - - } - */ - - FPUmathTables : > FPUTABLES, PAGE = 0, TYPE = NOLOAD - - DMARAML4 : > RAML4, PAGE = 1 - DMARAML5 : > RAML5, PAGE = 1 - DMARAML6 : > RAML6, PAGE = 1 - DMARAML7 : > RAML7, PAGE = 1 - - ZONE7DATA : > ZONE7B, PAGE = 1 - - .reset : > RESET, PAGE = 0, TYPE = DSECT /* not used */ - csm_rsvd : > CSM_RSVD PAGE = 0, TYPE = DSECT /* not used for SARAM examples */ - csmpasswds : > CSM_PWL PAGE = 0, TYPE = DSECT /* not used for SARAM examples */ - - /* Allocate ADC_cal function (pre-programmed by factory into TI reserved memory) */ - .adc_cal : load = ADC_CAL, PAGE = 0, TYPE = NOLOAD - - -} - -/* -//=========================================================================== -// End of file. -//=========================================================================== -*/ diff --git a/Source/External/v120/DSP2833x_common/cmd/28335_RAM_lnk.cmd b/Source/External/v120/DSP2833x_common/cmd/28335_RAM_lnk.cmd deleted file mode 100644 index b469211..0000000 --- a/Source/External/v120/DSP2833x_common/cmd/28335_RAM_lnk.cmd +++ /dev/null @@ -1,176 +0,0 @@ -/* -// TI File $Revision: /main/10 $ -// Checkin $Date: July 9, 2008 13:43:36 $ -//########################################################################### -// -// FILE: 28335_RAM_lnk.cmd -// -// TITLE: Linker Command File For 28335 examples that run out of RAM -// -// This ONLY includes all SARAM blocks on the 28335 device. -// This does not include flash or OTP. -// -// Keep in mind that L0 and L1 are protected by the code -// security module. -// -// What this means is in most cases you will want to move to -// another memory map file which has more memory defined. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -/* ====================================================== -// For Code Composer Studio V2.2 and later -// --------------------------------------- -// In addition to this memory linker command file, -// add the header linker command file directly to the project. -// The header linker command file is required to link the -// peripheral structures to the proper locations within -// the memory map. -// -// The header linker files are found in \DSP2833x_Headers\cmd -// -// For BIOS applications add: DSP2833x_Headers_BIOS.cmd -// For nonBIOS applications add: DSP2833x_Headers_nonBIOS.cmd -========================================================= */ - -/* ====================================================== -// For Code Composer Studio prior to V2.2 -// -------------------------------------- -// 1) Use one of the following -l statements to include the -// header linker command file in the project. The header linker -// file is required to link the peripheral structures to the proper -// locations within the memory map */ - -/* Uncomment this line to include file only for non-BIOS applications */ -/* -l DSP2833x_Headers_nonBIOS.cmd */ - -/* Uncomment this line to include file only for BIOS applications */ -/* -l DSP2833x_Headers_BIOS.cmd */ - -/* 2) In your project add the path to \DSP2833x_headers\cmd to the - library search path under project->build options, linker tab, - library search path (-i). -/*========================================================= */ - -/* Define the memory block start/length for the F28335 - PAGE 0 will be used to organize program sections - PAGE 1 will be used to organize data sections - - Notes: - Memory blocks on F28335 are uniform (ie same - physical memory) in both PAGE 0 and PAGE 1. - That is the same memory region should not be - defined for both PAGE 0 and PAGE 1. - Doing so will result in corruption of program - and/or data. - - L0/L1/L2 and L3 memory blocks are mirrored - that is - they can be accessed in high memory or low memory. - For simplicity only one instance is used in this - linker file. - - Contiguous SARAM memory blocks can be combined - if required to create a larger memory block. -*/ - - -MEMORY -{ -PAGE 0 : - /* BEGIN is used for the "boot to SARAM" bootloader mode */ - /* BOOT_RSVD is used by the boot ROM for stack. */ - /* This section is only reserved to keep the BOOT ROM from */ - /* corrupting this area during the debug process */ - - BEGIN : origin = 0x000000, length = 0x000002 /* Boot to M0 will go here */ - BOOT_RSVD : origin = 0x000002, length = 0x00004E /* Part of M0, BOOT rom will use this for stack */ - RAMM0 : origin = 0x000050, length = 0x0003B0 - - RAML0 : origin = 0x008000, length = 0x001000 - RAML1 : origin = 0x009000, length = 0x001000 - RAML2 : origin = 0x00A000, length = 0x001000 - RAML3 : origin = 0x00B000, length = 0x001000 - ZONE7A : origin = 0x200000, length = 0x00FC00 /* XINTF zone 7 - program space */ - CSM_RSVD : origin = 0x33FF80, length = 0x000076 /* Part of FLASHA. Program with all 0x0000 when CSM is in use. */ - CSM_PWL : origin = 0x33FFF8, length = 0x000008 /* Part of FLASHA. CSM password locations in FLASHA */ - ADC_CAL : origin = 0x380080, length = 0x000009 - RESET : origin = 0x3FFFC0, length = 0x000002 - IQTABLES : origin = 0x3FE000, length = 0x000b50 - IQTABLES2 : origin = 0x3FEB50, length = 0x00008c - FPUTABLES : origin = 0x3FEBDC, length = 0x0006A0 - BOOTROM : origin = 0x3FF27C, length = 0x000D44 - - -PAGE 1 : - RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */ - RAML4 : origin = 0x00C000, length = 0x001000 - RAML5 : origin = 0x00D000, length = 0x001000 - RAML6 : origin = 0x00E000, length = 0x001000 - RAML7 : origin = 0x00F000, length = 0x001000 - ZONE7B : origin = 0x20FC00, length = 0x000400 /* XINTF zone 7 - data space */ -} - - -SECTIONS -{ - /* Setup for "boot to SARAM" mode: - The codestart section (found in DSP28_CodeStartBranch.asm) - re-directs execution to the start of user code. */ - codestart : > BEGIN, PAGE = 0 - ramfuncs : > RAML0, PAGE = 0 - .text : > RAML1, PAGE = 0 - .cinit : > RAML0, PAGE = 0 - .pinit : > RAML0, PAGE = 0 - .switch : > RAML0, PAGE = 0 - - .stack : > RAMM1, PAGE = 1 - .ebss : > RAML4, PAGE = 1 - .econst : > RAML5, PAGE = 1 - .esysmem : > RAMM1, PAGE = 1 - - IQmath : > RAML1, PAGE = 0 - IQmathTables : > IQTABLES, PAGE = 0, TYPE = NOLOAD - - /* Uncomment the section below if calling the IQNexp() or IQexp() - functions from the IQMath.lib library in order to utilize the - relevant IQ Math table in Boot ROM (This saves space and Boot ROM - is 1 wait-state). If this section is not uncommented, IQmathTables2 - will be loaded into other memory (SARAM, Flash, etc.) and will take - up space, but 0 wait-state is possible. - */ - /* - IQmathTables2 : > IQTABLES2, PAGE = 0, TYPE = NOLOAD - { - - IQmath.lib (IQmathTablesRam) - - } - */ - - FPUmathTables : > FPUTABLES, PAGE = 0, TYPE = NOLOAD - - DMARAML4 : > RAML4, PAGE = 1 - DMARAML5 : > RAML5, PAGE = 1 - DMARAML6 : > RAML6, PAGE = 1 - DMARAML7 : > RAML7, PAGE = 1 - - ZONE7DATA : > ZONE7B, PAGE = 1 - - .reset : > RESET, PAGE = 0, TYPE = DSECT /* not used */ - csm_rsvd : > CSM_RSVD PAGE = 0, TYPE = DSECT /* not used for SARAM examples */ - csmpasswds : > CSM_PWL PAGE = 0, TYPE = DSECT /* not used for SARAM examples */ - - /* Allocate ADC_cal function (pre-programmed by factory into TI reserved memory) */ - .adc_cal : load = ADC_CAL, PAGE = 0, TYPE = NOLOAD - -} - -/* -//=========================================================================== -// End of file. -//=========================================================================== -*/ diff --git a/Source/External/v120/DSP2833x_common/cmd/F28332.cmd b/Source/External/v120/DSP2833x_common/cmd/F28332.cmd deleted file mode 100644 index ecdc06e..0000000 --- a/Source/External/v120/DSP2833x_common/cmd/F28332.cmd +++ /dev/null @@ -1,197 +0,0 @@ -/* -// TI File $Revision: /main/9 $ -// Checkin $Date: July 9, 2008 13:43:41 $ -//########################################################################### -// -// FILE: F28332.cmd -// -// TITLE: Linker Command File For F28332 Device -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -/* ====================================================== -// For Code Composer Studio V2.2 and later -// --------------------------------------- -// In addition to this memory linker command file, -// add the header linker command file directly to the project. -// The header linker command file is required to link the -// peripheral structures to the proper locations within -// the memory map. -// -// The header linker files are found in \DSP2833x_Headers\cmd -// -// For BIOS applications add: DSP2833x_Headers_BIOS.cmd -// For nonBIOS applications add: DSP2833x_Headers_nonBIOS.cmd -========================================================= */ - -/* ====================================================== -// For Code Composer Studio prior to V2.2 -// -------------------------------------- -// 1) Use one of the following -l statements to include the -// header linker command file in the project. The header linker -// file is required to link the peripheral structures to the proper -// locations within the memory map */ - -/* Uncomment this line to include file only for non-BIOS applications */ -/* -l DSP2833x_Headers_nonBIOS.cmd */ - -/* Uncomment this line to include file only for BIOS applications */ -/* -l DSP2833x_Headers_BIOS.cmd */ - -/* 2) In your project add the path to \DSP2833x_headers\cmd to the - library search path under project->build options, linker tab, - library search path (-i). -/*========================================================= */ - -/* Define the memory block start/length for the F28332 - PAGE 0 will be used to organize program sections - PAGE 1 will be used to organize data sections - - Notes: - Memory blocks on F28332 are uniform (ie same - physical memory) in both PAGE 0 and PAGE 1. - That is the same memory region should not be - defined for both PAGE 0 and PAGE 1. - Doing so will result in corruption of program - and/or data. - - L0/L1/L2 and L3 memory blocks are mirrored - that is - they can be accessed in high memory or low memory. - For simplicity only one instance is used in this - linker file. - - Contiguous SARAM memory blocks can be combined - if required to create a larger memory block. - */ - - -MEMORY -{ -PAGE 0: /* Program Memory */ - /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */ - - ZONE0 : origin = 0x004000, length = 0x001000 /* XINTF zone 0 */ - RAML0 : origin = 0x008000, length = 0x001000 /* on-chip RAM block L0 */ - RAML1 : origin = 0x009000, length = 0x001000 /* on-chip RAM block L1 */ - RAML2 : origin = 0x00A000, length = 0x001000 /* on-chip RAM block L2 */ - RAML3 : origin = 0x00B000, length = 0x001000 /* on-chip RAM block L3 */ - ZONE6 : origin = 0x100000, length = 0x100000 /* XINTF zone 6 */ - ZONE7A : origin = 0x200000, length = 0x00FC00 /* XINTF zone 7 - program space */ - FLASHD : origin = 0x330000, length = 0x004000 /* on-chip FLASH */ - FLASHC : origin = 0x334000, length = 0x004000 /* on-chip FLASH */ - FLASHA : origin = 0x33C000, length = 0x003F80 /* on-chip FLASH */ - CSM_RSVD : origin = 0x33FF80, length = 0x000076 /* Part of FLASHA. Program with all 0x0000 when CSM is in use. */ - BEGIN : origin = 0x33FFF6, length = 0x000002 /* Part of FLASHA. Used for "boot to Flash" bootloader mode. */ - CSM_PWL : origin = 0x33FFF8, length = 0x000008 /* Part of FLASHA. CSM password locations in FLASHA */ - OTP : origin = 0x380400, length = 0x000400 /* on-chip OTP */ - ADC_CAL : origin = 0x380080, length = 0x000009 /* ADC_cal function in Reserved memory */ - - IQTABLES : origin = 0x3FE000, length = 0x000b50 /* IQ Math Tables in Boot ROM */ - IQTABLES2 : origin = 0x3FEB50, length = 0x00008c /* IQ Math Tables in Boot ROM */ - FPUTABLES : origin = 0x3FEBDC, length = 0x0006A0 /* FPU Tables in Boot ROM */ - ROM : origin = 0x3FF27C, length = 0x000D44 /* Boot ROM */ - RESET : origin = 0x3FFFC0, length = 0x000002 /* part of boot ROM */ - VECTORS : origin = 0x3FFFC2, length = 0x00003E /* part of boot ROM */ - -PAGE 1 : /* Data Memory */ - /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE0 for program allocation */ - /* Registers remain on PAGE1 */ - - BOOT_RSVD : origin = 0x000000, length = 0x000050 /* Part of M0, BOOT rom will use this for stack */ - RAMM0 : origin = 0x000050, length = 0x0003B0 /* on-chip RAM block M0 */ - RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */ - RAML4 : origin = 0x00C000, length = 0x001000 /* on-chip RAM block L1 */ - RAML5 : origin = 0x00D000, length = 0x001000 /* on-chip RAM block L1 */ - ZONE7B : origin = 0x20FC00, length = 0x0000400 /* XINTF zone 7 - data space */ - FLASHB : origin = 0x338000, length = 0x004000 /* on-chip FLASH */ - -} - -/* Allocate sections to memory blocks. - Note: - codestart user defined section in DSP28_CodeStartBranch.asm used to redirect code - execution when booting to flash - ramfuncs user defined section to store functions that will be copied from Flash into RAM -*/ - -SECTIONS -{ - - /* Allocate program areas: */ - .cinit : > FLASHA PAGE = 0 - .pinit : > FLASHA, PAGE = 0 - .text : > FLASHA PAGE = 0 - codestart : > BEGIN PAGE = 0 - ramfuncs : LOAD = FLASHD, - RUN = RAML0, - LOAD_START(_RamfuncsLoadStart), - LOAD_END(_RamfuncsLoadEnd), - RUN_START(_RamfuncsRunStart), - PAGE = 0 - - csmpasswds : > CSM_PWL PAGE = 0 - csm_rsvd : > CSM_RSVD PAGE = 0 - - /* Allocate uninitalized data sections: */ - .stack : > RAMM1 PAGE = 1 - .ebss : > RAML4 PAGE = 1 - .esysmem : > RAMM1 PAGE = 1 - - /* Initalized sections go in Flash */ - /* For SDFlash to program these, they must be allocated to page 0 */ - .econst : > FLASHA PAGE = 0 - .switch : > FLASHA PAGE = 0 - - /* Allocate IQ math areas: */ - IQmath : > FLASHC PAGE = 0 /* Math Code */ - IQmathTables : > IQTABLES, PAGE = 0, TYPE = NOLOAD - - /* Uncomment the section below if calling the IQNexp() or IQexp() - functions from the IQMath.lib library in order to utilize the - relevant IQ Math table in Boot ROM (This saves space and Boot ROM - is 1 wait-state). If this section is not uncommented, IQmathTables2 - will be loaded into other memory (SARAM, Flash, etc.) and will take - up space, but 0 wait-state is possible. - */ - /* - IQmathTables2 : > IQTABLES2, PAGE = 0, TYPE = NOLOAD - { - - IQmath.lib (IQmathTablesRam) - - } - */ - - FPUmathTables : > FPUTABLES, PAGE = 0, TYPE = NOLOAD - - /* Allocate DMA-accessible RAM sections: */ - DMARAML4 : > RAML4, PAGE = 1 - DMARAML5 : > RAML5, PAGE = 1 - - /* Allocate 0x400 of XINTF Zone 7 to storing data */ - ZONE7DATA : > ZONE7B, PAGE = 1 - - /* .reset is a standard section used by the compiler. It contains the */ - /* the address of the start of _c_int00 for C Code. /* - /* When using the boot ROM this section and the CPU vector */ - /* table is not needed. Thus the default type is set here to */ - /* DSECT */ - .reset : > RESET, PAGE = 0, TYPE = DSECT - vectors : > VECTORS PAGE = 0, TYPE = DSECT - - /* Allocate ADC_cal function (pre-programmed by factory into TI reserved memory) */ - .adc_cal : load = ADC_CAL, PAGE = 0, TYPE = NOLOAD - - -} - -/* -//=========================================================================== -// End of file. -//=========================================================================== -*/ - diff --git a/Source/External/v120/DSP2833x_common/cmd/F28334.cmd b/Source/External/v120/DSP2833x_common/cmd/F28334.cmd deleted file mode 100644 index ec4d6c3..0000000 --- a/Source/External/v120/DSP2833x_common/cmd/F28334.cmd +++ /dev/null @@ -1,203 +0,0 @@ -/* -// TI File $Revision: /main/9 $ -// Checkin $Date: July 9, 2008 13:43:49 $ -//########################################################################### -// -// FILE: F28334.cmd -// -// TITLE: Linker Command File For F28334 Device -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -/* ====================================================== -// For Code Composer Studio V2.2 and later -// --------------------------------------- -// In addition to this memory linker command file, -// add the header linker command file directly to the project. -// The header linker command file is required to link the -// peripheral structures to the proper locations within -// the memory map. -// -// The header linker files are found in \DSP2833x_Headers\cmd -// -// For BIOS applications add: DSP2833x_Headers_BIOS.cmd -// For nonBIOS applications add: DSP2833x_Headers_nonBIOS.cmd -========================================================= */ - -/* ====================================================== -// For Code Composer Studio prior to V2.2 -// -------------------------------------- -// 1) Use one of the following -l statements to include the -// header linker command file in the project. The header linker -// file is required to link the peripheral structures to the proper -// locations within the memory map */ - -/* Uncomment this line to include file only for non-BIOS applications */ -/* -l DSP2833x_Headers_nonBIOS.cmd */ - -/* Uncomment this line to include file only for BIOS applications */ -/* -l DSP2833x_Headers_BIOS.cmd */ - -/* 2) In your project add the path to \DSP2833x_headers\cmd to the - library search path under project->build options, linker tab, - library search path (-i). -/*========================================================= */ - -/* Define the memory block start/length for the F28334 - PAGE 0 will be used to organize program sections - PAGE 1 will be used to organize data sections - - Notes: - Memory blocks on F28334 are uniform (ie same - physical memory) in both PAGE 0 and PAGE 1. - That is the same memory region should not be - defined for both PAGE 0 and PAGE 1. - Doing so will result in corruption of program - and/or data. - - L0/L1/L2 and L3 memory blocks are mirrored - that is - they can be accessed in high memory or low memory. - For simplicity only one instance is used in this - linker file. - - Contiguous SARAM memory blocks can be combined - if required to create a larger memory block. - */ - - -MEMORY -{ -PAGE 0: /* Program Memory */ - /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */ - - ZONE0 : origin = 0x004000, length = 0x001000 /* XINTF zone 0 */ - RAML0 : origin = 0x008000, length = 0x001000 /* on-chip RAM block L0 */ - RAML1 : origin = 0x009000, length = 0x001000 /* on-chip RAM block L1 */ - RAML2 : origin = 0x00A000, length = 0x001000 /* on-chip RAM block L2 */ - RAML3 : origin = 0x00B000, length = 0x001000 /* on-chip RAM block L3 */ - ZONE6 : origin = 0x100000, length = 0x0100000 /* XINTF zone 6 */ - ZONE7A : origin = 0x200000, length = 0x000FC00 /* XINTF zone 7 - program space */ - FLASHH : origin = 0x320000, length = 0x004000 /* on-chip FLASH */ - FLASHG : origin = 0x324000, length = 0x004000 /* on-chip FLASH */ - FLASHF : origin = 0x328000, length = 0x004000 /* on-chip FLASH */ - FLASHE : origin = 0x32C000, length = 0x004000 /* on-chip FLASH */ - FLASHD : origin = 0x330000, length = 0x004000 /* on-chip FLASH */ - FLASHC : origin = 0x334000, length = 0x004000 /* on-chip FLASH */ - FLASHA : origin = 0x33C000, length = 0x003F80 /* on-chip FLASH */ - CSM_RSVD : origin = 0x33FF80, length = 0x000076 /* Part of FLASHA. Program with all 0x0000 when CSM is in use. */ - BEGIN : origin = 0x33FFF6, length = 0x000002 /* Part of FLASHA. Used for "boot to Flash" bootloader mode. */ - CSM_PWL : origin = 0x33FFF8, length = 0x000008 /* Part of FLASHA. CSM password locations in FLASHA */ - OTP : origin = 0x380400, length = 0x000400 /* on-chip OTP */ - ADC_CAL : origin = 0x380080, length = 0x000009 /* ADC_cal function in Reserved memory */ - - IQTABLES : origin = 0x3FE000, length = 0x000b50 /* IQ Math Tables in Boot ROM */ - IQTABLES2 : origin = 0x3FEB50, length = 0x00008c /* IQ Math Tables in Boot ROM */ - FPUTABLES : origin = 0x3FEBDC, length = 0x0006A0 /* FPU Tables in Boot ROM */ - ROM : origin = 0x3FF27C, length = 0x000D44 /* Boot ROM */ - RESET : origin = 0x3FFFC0, length = 0x000002 /* part of boot ROM */ - VECTORS : origin = 0x3FFFC2, length = 0x00003E /* part of boot ROM */ - -PAGE 1 : /* Data Memory */ - /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE0 for program allocation */ - /* Registers remain on PAGE1 */ - - BOOT_RSVD : origin = 0x000000, length = 0x000050 /* Part of M0, BOOT rom will use this for stack */ - RAMM0 : origin = 0x000050, length = 0x0003B0 /* on-chip RAM block M0 */ - RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */ - RAML4 : origin = 0x00C000, length = 0x001000 /* on-chip RAM block L1 */ - RAML5 : origin = 0x00D000, length = 0x001000 /* on-chip RAM block L1 */ - RAML6 : origin = 0x00E000, length = 0x001000 /* on-chip RAM block L1 */ - RAML7 : origin = 0x00F000, length = 0x001000 /* on-chip RAM block L1 */ - ZONE7B : origin = 0x20FC00, length = 0x000400 /* XINTF zone 7 - data space */ - FLASHB : origin = 0x338000, length = 0x004000 /* on-chip FLASH */ -} - -/* Allocate sections to memory blocks. - Note: - codestart user defined section in DSP28_CodeStartBranch.asm used to redirect code - execution when booting to flash - ramfuncs user defined section to store functions that will be copied from Flash into RAM -*/ - -SECTIONS -{ - - /* Allocate program areas: */ - .cinit : > FLASHA PAGE = 0 - .pinit : > FLASHA, PAGE = 0 - .text : > FLASHA PAGE = 0 - codestart : > BEGIN PAGE = 0 - ramfuncs : LOAD = FLASHD, - RUN = RAML0, - LOAD_START(_RamfuncsLoadStart), - LOAD_END(_RamfuncsLoadEnd), - RUN_START(_RamfuncsRunStart), - PAGE = 0 - - csmpasswds : > CSM_PWL PAGE = 0 - csm_rsvd : > CSM_RSVD PAGE = 0 - - /* Allocate uninitalized data sections: */ - .stack : > RAMM1 PAGE = 1 - .ebss : > RAML4 PAGE = 1 - .esysmem : > RAMM1 PAGE = 1 - - /* Initalized sections go in Flash */ - /* For SDFlash to program these, they must be allocated to page 0 */ - .econst : > FLASHA PAGE = 0 - .switch : > FLASHA PAGE = 0 - - /* Allocate IQ math areas: */ - IQmath : > FLASHC PAGE = 0 /* Math Code */ - IQmathTables : > IQTABLES, PAGE = 0, TYPE = NOLOAD - - /* Uncomment the section below if calling the IQNexp() or IQexp() - functions from the IQMath.lib library in order to utilize the - relevant IQ Math table in Boot ROM (This saves space and Boot ROM - is 1 wait-state). If this section is not uncommented, IQmathTables2 - will be loaded into other memory (SARAM, Flash, etc.) and will take - up space, but 0 wait-state is possible. - */ - /* - IQmathTables2 : > IQTABLES2, PAGE = 0, TYPE = NOLOAD - { - - IQmath.lib (IQmathTablesRam) - - } - */ - - FPUmathTables : > FPUTABLES, PAGE = 0, TYPE = NOLOAD - - /* Allocate DMA-accessible RAM sections: */ - DMARAML4 : > RAML4, PAGE = 1 - DMARAML5 : > RAML5, PAGE = 1 - DMARAML6 : > RAML6, PAGE = 1 - DMARAML7 : > RAML7, PAGE = 1 - - /* Allocate 0x400 of XINTF Zone 7 to storing data */ - ZONE7DATA : > ZONE7B, PAGE = 1 - - /* .reset is a standard section used by the compiler. It contains the */ - /* the address of the start of _c_int00 for C Code. /* - /* When using the boot ROM this section and the CPU vector */ - /* table is not needed. Thus the default type is set here to */ - /* DSECT */ - .reset : > RESET, PAGE = 0, TYPE = DSECT - vectors : > VECTORS PAGE = 0, TYPE = DSECT - - /* Allocate ADC_cal function (pre-programmed by factory into TI reserved memory) */ - .adc_cal : load = ADC_CAL, PAGE = 0, TYPE = NOLOAD - -} - -/* -//=========================================================================== -// End of file. -//=========================================================================== -*/ - diff --git a/Source/External/v120/DSP2833x_common/cmd/F28335.cmd b/Source/External/v120/DSP2833x_common/cmd/F28335.cmd deleted file mode 100644 index b00d2a5..0000000 --- a/Source/External/v120/DSP2833x_common/cmd/F28335.cmd +++ /dev/null @@ -1,203 +0,0 @@ -/* -// TI File $Revision: /main/10 $ -// Checkin $Date: July 9, 2008 13:43:56 $ -//########################################################################### -// -// FILE: F28335.cmd -// -// TITLE: Linker Command File For F28335 Device -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -/* ====================================================== -// For Code Composer Studio V2.2 and later -// --------------------------------------- -// In addition to this memory linker command file, -// add the header linker command file directly to the project. -// The header linker command file is required to link the -// peripheral structures to the proper locations within -// the memory map. -// -// The header linker files are found in \DSP2833x_Headers\cmd -// -// For BIOS applications add: DSP2833x_Headers_BIOS.cmd -// For nonBIOS applications add: DSP2833x_Headers_nonBIOS.cmd -========================================================= */ - -/* ====================================================== -// For Code Composer Studio prior to V2.2 -// -------------------------------------- -// 1) Use one of the following -l statements to include the -// header linker command file in the project. The header linker -// file is required to link the peripheral structures to the proper -// locations within the memory map */ - -/* Uncomment this line to include file only for non-BIOS applications */ -/* -l DSP2833x_Headers_nonBIOS.cmd */ - -/* Uncomment this line to include file only for BIOS applications */ -/* -l DSP2833x_Headers_BIOS.cmd */ - -/* 2) In your project add the path to \DSP2833x_headers\cmd to the - library search path under project->build options, linker tab, - library search path (-i). -/*========================================================= */ - -/* Define the memory block start/length for the F28335 - PAGE 0 will be used to organize program sections - PAGE 1 will be used to organize data sections - - Notes: - Memory blocks on F28335 are uniform (ie same - physical memory) in both PAGE 0 and PAGE 1. - That is the same memory region should not be - defined for both PAGE 0 and PAGE 1. - Doing so will result in corruption of program - and/or data. - - L0/L1/L2 and L3 memory blocks are mirrored - that is - they can be accessed in high memory or low memory. - For simplicity only one instance is used in this - linker file. - - Contiguous SARAM memory blocks can be combined - if required to create a larger memory block. - */ - - -MEMORY -{ -PAGE 0: /* Program Memory */ - /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */ - - ZONE0 : origin = 0x004000, length = 0x001000 /* XINTF zone 0 */ - RAML0 : origin = 0x008000, length = 0x001000 /* on-chip RAM block L0 */ - RAML1 : origin = 0x009000, length = 0x001000 /* on-chip RAM block L1 */ - RAML2 : origin = 0x00A000, length = 0x001000 /* on-chip RAM block L2 */ - RAML3 : origin = 0x00B000, length = 0x001000 /* on-chip RAM block L3 */ - ZONE6 : origin = 0x0100000, length = 0x100000 /* XINTF zone 6 */ - ZONE7A : origin = 0x0200000, length = 0x00FC00 /* XINTF zone 7 - program space */ - FLASHH : origin = 0x300000, length = 0x008000 /* on-chip FLASH */ - FLASHG : origin = 0x308000, length = 0x008000 /* on-chip FLASH */ - FLASHF : origin = 0x310000, length = 0x008000 /* on-chip FLASH */ - FLASHE : origin = 0x318000, length = 0x008000 /* on-chip FLASH */ - FLASHD : origin = 0x320000, length = 0x008000 /* on-chip FLASH */ - FLASHC : origin = 0x328000, length = 0x008000 /* on-chip FLASH */ - FLASHA : origin = 0x338000, length = 0x007F80 /* on-chip FLASH */ - CSM_RSVD : origin = 0x33FF80, length = 0x000076 /* Part of FLASHA. Program with all 0x0000 when CSM is in use. */ - BEGIN : origin = 0x33FFF6, length = 0x000002 /* Part of FLASHA. Used for "boot to Flash" bootloader mode. */ - CSM_PWL : origin = 0x33FFF8, length = 0x000008 /* Part of FLASHA. CSM password locations in FLASHA */ - OTP : origin = 0x380400, length = 0x000400 /* on-chip OTP */ - ADC_CAL : origin = 0x380080, length = 0x000009 /* ADC_cal function in Reserved memory */ - - IQTABLES : origin = 0x3FE000, length = 0x000b50 /* IQ Math Tables in Boot ROM */ - IQTABLES2 : origin = 0x3FEB50, length = 0x00008c /* IQ Math Tables in Boot ROM */ - FPUTABLES : origin = 0x3FEBDC, length = 0x0006A0 /* FPU Tables in Boot ROM */ - ROM : origin = 0x3FF27C, length = 0x000D44 /* Boot ROM */ - RESET : origin = 0x3FFFC0, length = 0x000002 /* part of boot ROM */ - VECTORS : origin = 0x3FFFC2, length = 0x00003E /* part of boot ROM */ - -PAGE 1 : /* Data Memory */ - /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE0 for program allocation */ - /* Registers remain on PAGE1 */ - - BOOT_RSVD : origin = 0x000000, length = 0x000050 /* Part of M0, BOOT rom will use this for stack */ - RAMM0 : origin = 0x000050, length = 0x0003B0 /* on-chip RAM block M0 */ - RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */ - RAML4 : origin = 0x00C000, length = 0x001000 /* on-chip RAM block L1 */ - RAML5 : origin = 0x00D000, length = 0x001000 /* on-chip RAM block L1 */ - RAML6 : origin = 0x00E000, length = 0x001000 /* on-chip RAM block L1 */ - RAML7 : origin = 0x00F000, length = 0x001000 /* on-chip RAM block L1 */ - ZONE7B : origin = 0x20FC00, length = 0x000400 /* XINTF zone 7 - data space */ - FLASHB : origin = 0x330000, length = 0x008000 /* on-chip FLASH */ -} - -/* Allocate sections to memory blocks. - Note: - codestart user defined section in DSP28_CodeStartBranch.asm used to redirect code - execution when booting to flash - ramfuncs user defined section to store functions that will be copied from Flash into RAM -*/ - -SECTIONS -{ - - /* Allocate program areas: */ - .cinit : > FLASHA PAGE = 0 - .pinit : > FLASHA, PAGE = 0 - .text : > FLASHA PAGE = 0 - codestart : > BEGIN PAGE = 0 - ramfuncs : LOAD = FLASHD, - RUN = RAML0, - LOAD_START(_RamfuncsLoadStart), - LOAD_END(_RamfuncsLoadEnd), - RUN_START(_RamfuncsRunStart), - PAGE = 0 - - csmpasswds : > CSM_PWL PAGE = 0 - csm_rsvd : > CSM_RSVD PAGE = 0 - - /* Allocate uninitalized data sections: */ - .stack : > RAMM1 PAGE = 1 - .ebss : > RAML4 PAGE = 1 - .esysmem : > RAMM1 PAGE = 1 - - /* Initalized sections go in Flash */ - /* For SDFlash to program these, they must be allocated to page 0 */ - .econst : > FLASHA PAGE = 0 - .switch : > FLASHA PAGE = 0 - - /* Allocate IQ math areas: */ - IQmath : > FLASHC PAGE = 0 /* Math Code */ - IQmathTables : > IQTABLES, PAGE = 0, TYPE = NOLOAD - - /* Uncomment the section below if calling the IQNexp() or IQexp() - functions from the IQMath.lib library in order to utilize the - relevant IQ Math table in Boot ROM (This saves space and Boot ROM - is 1 wait-state). If this section is not uncommented, IQmathTables2 - will be loaded into other memory (SARAM, Flash, etc.) and will take - up space, but 0 wait-state is possible. - */ - /* - IQmathTables2 : > IQTABLES2, PAGE = 0, TYPE = NOLOAD - { - - IQmath.lib (IQmathTablesRam) - - } - */ - - FPUmathTables : > FPUTABLES, PAGE = 0, TYPE = NOLOAD - - /* Allocate DMA-accessible RAM sections: */ - DMARAML4 : > RAML4, PAGE = 1 - DMARAML5 : > RAML5, PAGE = 1 - DMARAML6 : > RAML6, PAGE = 1 - DMARAML7 : > RAML7, PAGE = 1 - - /* Allocate 0x400 of XINTF Zone 7 to storing data */ - ZONE7DATA : > ZONE7B, PAGE = 1 - - /* .reset is a standard section used by the compiler. It contains the */ - /* the address of the start of _c_int00 for C Code. /* - /* When using the boot ROM this section and the CPU vector */ - /* table is not needed. Thus the default type is set here to */ - /* DSECT */ - .reset : > RESET, PAGE = 0, TYPE = DSECT - vectors : > VECTORS PAGE = 0, TYPE = DSECT - - /* Allocate ADC_cal function (pre-programmed by factory into TI reserved memory) */ - .adc_cal : load = ADC_CAL, PAGE = 0, TYPE = NOLOAD - -} - -/* -//=========================================================================== -// End of file. -//=========================================================================== -*/ - diff --git a/Source/External/v120/DSP2833x_common/gel/f28232.gel b/Source/External/v120/DSP2833x_common/gel/f28232.gel deleted file mode 100644 index 9ad95bf..0000000 --- a/Source/External/v120/DSP2833x_common/gel/f28232.gel +++ /dev/null @@ -1,2822 +0,0 @@ -/********************************************************************/ -/* f28232.gel */ -/* Version 3.30.2 */ -/* */ -/* This GEL file is to be used with the TMS320F28232 DSP. */ -/* Changes may be required to support specific hardware designs. */ -/* */ -/* Code Composer Studio supports six reserved GEL functions that */ -/* automatically get executed if they are defined. They are: */ -/* */ -/* StartUp() - Executed whenever CCS is invoked */ -/* OnReset() - Executed after Debug->Reset CPU */ -/* OnRestart() - Executed after Debug->Restart */ -/* OnPreFileLoaded() - Executed before File->Load Program */ -/* OnFileLoaded() - Executed after File->Load Program */ -/* OnTargetConnect() - Executed after Debug->Connect */ -/* */ -/********************************************************************/ - -StartUp() -{ - -/* The next line automatically loads the .gel file that comes */ -/* with the DSP2833x Peripheral Header Files download. To use, */ -/* uncomment, and adjust the directory path as needed. */ -// GEL_LoadGel("c:\\CCStudio_v3.3\\cc\\gel\\DSP2833x_Peripheral.gel"); - -} - -OnReset(int nErrorCode) -{ - C28x_Mode(); - Unlock_CSM(); - ADC_Cal(); -} - -OnRestart(int nErrorCode) -{ -/* CCS will call OnRestart() when you do a Debug->Restart and */ -/* after you load a new file. Between running interrupt based */ -/* programs, this function will clear interrupts and help keep */ -/* the processor from going off into invalid memory. */ - C28x_Mode(); - IER = 0; - IFR = 0; - ADC_Cal(); -} - -int TxtOutCtl=0; -OnPreFileLoaded() -{ - XINTF_Enable(); - if (TxtOutCtl==0) - { - GEL_TextOut("\nNOTES:\nGel will enable XINTFx16 during Debug only.\nEnable XINTF in code prior to use."); - TxtOutCtl=1; - } -} - -OnFileLoaded(int nErrorCode, int bSymbolsOnly) -{ - ADC_Cal(); -} - -OnTargetConnect() -{ - C28x_Mode(); - F28232_Memory_Map(); /* Initialize the CCS memory map */ - -/* Check to see if CCS has been started-up with the DSP already */ -/* running in real-time mode. The user can add whatever */ -/* custom initialization stuff they want to each case. */ - - if (GEL_IsInRealtimeMode()) /* Do real-time mode target initialization */ - { - - } - else /* Do stop-mode target initialization */ - { - GEL_Reset(); /* Reset DSP */ - } - -} - - -/********************************************************************/ -/* These functions are launched by the GEL_Toolbar button plugin */ -/********************************************************************/ -GEL_Toolbar1() -{ - Run_Realtime_with_Reset(); -} -GEL_Toolbar2() -{ - Run_Realtime_with_Restart(); -} -GEL_Toolbar3() -{ - Full_Halt(); -} -GEL_Toolbar4() -{ - Full_Halt_with_Reset(); -} - -int GEL_Toolbar5_Toggle = 0; -GEL_Toolbar5() -{ - if(GEL_Toolbar5_Toggle == 0) - { - GEL_Toolbar5_Toggle = 1; - GEL_OpenWindow("GEL_Buttons",1,4); - GEL_TextOut("Button 1: Run_Realtime_with_Reset()","GEL_Buttons",0,0); - GEL_TextOut("Button 2: Run_Realtime_with_Restart()","GEL_Buttons",0,1); - GEL_TextOut("Button 3: Full_Halt()", "GEL_Buttons",0,2); - GEL_TextOut("Button 4: Full_Halt_with_Reset()","GEL_Buttons",0,3); - } - else - { - GEL_Toolbar5_Toggle = 0; - GEL_CloseWindow("GEL_Buttons"); - } -} - - -/********************************************************************/ -/* These functions are useful to engage/dis-enagage realtime */ -/* emulation mode during debug. They save the user from having to */ -/* manually perform these steps in CCS. */ -/********************************************************************/ -menuitem "Realtime Emulation Control"; - -hotmenu Run_Realtime_with_Reset() -{ - GEL_Reset(); /* Reset the DSP */ - ST1 = ST1 & 0xFFFD; /* clear DBGM bit in ST1 */ - GEL_EnableRealtime(); /* Enable Realtime mode */ - GEL_Run(); /* Run the DSP */ -} -hotmenu Run_Realtime_with_Restart() -{ - GEL_Restart(); /* Reset the DSP */ - ST1 = ST1 & 0xFFFD; /* clear DBGM bit in ST1 */ - GEL_EnableRealtime(); /* Enable Realtime mode */ - GEL_Run(); /* Run the DSP */ -} -hotmenu Full_Halt() -{ - GEL_DisableRealtime(); /* Disable Realtime mode */ - GEL_Halt(); /* Halt the DSP */ -} -hotmenu Full_Halt_with_Reset() -{ - GEL_DisableRealtime(); /* Disable Realtime mode */ - GEL_Halt(); /* Halt the DSP */ - GEL_Reset(); /* Reset the DSP */ -} - - -/********************************************************************/ -/* F28232 Memory Map */ -/* */ -/* Note: M0M1MAP and VMAP signals tied high on F28232 core */ -/* */ -/* 0x000000 - 0x0003ff M0 SARAM (Prog and Data) */ -/* 0x000400 - 0x0007ff M1 SARAM (Prog and Data) */ -/* 0x000800 - 0x001fff Peripheral Frame0 (PF0) (Data only) */ -/* 0x004000 - 0x004fff XINTF Zone 0 (Prog and Data) */ -/* 0x005000 - 0x005fff Peripheral Frame3 (PF3) (Data only) */ -/* 0x006000 - 0x006fff Peripheral Frame1 (PF1) (Data only) */ -/* 0x007000 - 0x007fff Peripheral Frame2 (PF2) (Data only) */ -/* 0x008000 - 0x008fff L0 SARAM (Prog and Data) */ -/* 0x009000 - 0x009fff L1 SARAM (Prog and Data) */ -/* 0x00A000 - 0x00Afff L2 SARAM (Prog and Data) */ -/* 0x00B000 - 0x00Bfff L3 SARAM (Prog and Data) */ -/* 0x00C000 - 0x00Cfff L4 SARAM (Prog and Data) */ -/* 0x00D000 - 0x00Dfff L5 SARAM (Prog and Data) */ -/* 0x100000 - 0x1fffff XINTF Zone 6 (Prog and Data) */ -/* 0x200000 - 0x2fffff XINTF Zone 7 (Prog and Data) */ -/* 0x330000 - 0x33ffff Flash (Prog and Data) */ -/* 0x380080 - 0x380088 ADC_cal function (Prog and Data) */ -/* 0x380090 - 0x380090 PARTID value (Prog and Data) */ -/* 0x380400 - 0x3807ff OTP (Prog and Data) */ -/* 0x3f8000 - 0x3f8fff L0 SARAM (Prog and Data) */ -/* 0x3f9000 - 0x3f9fff L1 SARAM (Prog and Data) */ -/* 0x3fA000 - 0x3fAfff L2 SARAM (Prog and Data) */ -/* 0x3fB000 - 0x3fBfff L3 SARAM (Prog and Data) */ -/* 0x3fe000 - 0x3fffff BOOT ROM (Prog and Data) */ -/********************************************************************/ -menuitem "Initialize Memory Map"; - -hotmenu F28232_Memory_Map() -{ - GEL_MapReset(); - GEL_MapOn(); - - /* Program memory map */ - GEL_MapAdd(0x0,0,0x400,1,1); /* M0 SARAM */ - GEL_MapAdd(0x400,0,0x400,1,1); /* M1 SARAM */ - GEL_MapAdd(0x4000,0,0x1000,1,1); /* Zone 0 */ - GEL_MapAdd(0x8000,0,0x1000,1,1); /* L0 SARAM */ - GEL_MapAdd(0x9000,0,0x1000,1,1); /* L1 SARAM */ - GEL_MapAdd(0xA000,0,0x1000,1,1); /* L2 SARAM */ - GEL_MapAdd(0xB000,0,0x1000,1,1); /* L3 SARAM */ - GEL_MapAdd(0xC000,0,0x1000,1,1); /* L4 SARAM */ - GEL_MapAdd(0xD000,0,0x1000,1,1); /* L5 SARAM */ - GEL_MapAdd(0x100000,0,0x100000,1,1); /* Zone 6 */ - GEL_MapAdd(0x200000,0,0x100000,1,1); /* Zone 7 */ - GEL_MapAdd(0x330000,0,0x10000,1,0); /* FLASH */ - GEL_MapAdd(0x380080,0,0x00009,1,0); /* ADC_cal function*/ - GEL_MapAdd(0x380090,0,0x00001,1,0); /* PARTID value */ - GEL_MapAdd(0x380400,0,0x00400,1,0); /* OTP */ - GEL_MapAdd(0x3f8000,0,0x1000,1,1); /* L0 SARAM Mirror */ - GEL_MapAdd(0x3f9000,0,0x1000,1,1); /* L1 SARAM Mirror */ - GEL_MapAdd(0x3fA000,0,0x1000,1,1); /* L2 SARAM Mirror */ - GEL_MapAdd(0x3fb000,0,0x1000,1,1); /* L3 SARAM Mirror */ - GEL_MapAdd(0x3fe000,0,0x2000,1,0); /* BOOT ROM */ - - /* Data memory map */ - GEL_MapAdd(0x000,1,0x400,1,1); /* M0 SARAM */ - GEL_MapAdd(0x400,1,0x400,1,1); /* M1 SARAM */ - GEL_MapAdd(0x800,1,0x1800,1,1); /* PF0 */ - GEL_MapAdd(0x4000,1,0x1000,1,1); /* Zone 0 */ - GEL_MapAdd(0x5000,1,0x1000,1,1); /* PF3 */ - GEL_MapAdd(0x6000,1,0x1000,1,1); /* PF1 */ - GEL_MapAddStr(0x7000,1,0x1000,"R|W|AS2",0); /* PF2 */ - GEL_MapAdd(0x8000,1,0x1000,1,1); /* L0 SARAM */ - GEL_MapAdd(0x9000,1,0x1000,1,1); /* L1 SARAM */ - GEL_MapAdd(0xA000,1,0x1000,1,1); /* L2 SARAM */ - GEL_MapAdd(0xB000,1,0x1000,1,1); /* L3 SARAM */ - GEL_MapAdd(0xC000,1,0x1000,1,1); /* L4 SARAM */ - GEL_MapAdd(0xD000,1,0x1000,1,1); /* L5 SARAM */ - GEL_MapAdd(0x100000,1,0x100000,1,1); /* Zone 6 */ - GEL_MapAdd(0x200000,1,0x100000,1,1); /* Zone 7 */ - GEL_MapAdd(0x330000,1,0x10000,1,0); /* FLASH */ - GEL_MapAdd(0x380080,1,0x00009,1,0); /* ADC_cal function*/ - GEL_MapAdd(0x380090,1,0x00001,1,0); /* PARTID value */ - GEL_MapAdd(0x380400,1,0x00400,1,0); /* OTP */ - GEL_MapAdd(0x3f8000,1,0x1000,1,1); /* L0 SARAM Mirror */ - GEL_MapAdd(0x3f9000,1,0x1000,1,1); /* L1 SARAM Mirror */ - GEL_MapAdd(0x3fA000,1,0x1000,1,1); /* L2 SARAM Mirror */ - GEL_MapAdd(0x3fb000,1,0x1000,1,1); /* L3 SARAM Mirror */ - GEL_MapAdd(0x3fe000,1,0x2000,1,0); /* BOOT ROM */ -} - - -/********************************************************************/ -/* The ESTOP0 fill functions are useful for debug. They fill the */ -/* RAM with software breakpoints that will trap runaway code. */ -/********************************************************************/ -hotmenu Fill_F28232_RAM_with_ESTOP0() -{ - GEL_MemoryFill(0x000000,1,0x000800,0x7625); /* Fill M0/M1 */ - GEL_MemoryFill(0x008000,1,0x002000,0x7625); /* Fill L0/L1 */ - GEL_MemoryFill(0x00A000,1,0x002000,0x7625); /* Fill L2/L3 */ - GEL_MemoryFill(0x00C000,1,0x002000,0x7625); /* Fill L4/L5 */ -} - - -/********************************************************************/ -menuitem "Watchdog"; -hotmenu Disable_WD() -{ - *0x7029 = *0x7029 | 0x0068; /* Set the WDDIS bit */ - *0x7025 = 0x0055; /* Service the WD */ - *0x7025 = 0x00AA; /* once to be safe. */ - GEL_TextOut("\nWatchdog Timer Disabled"); -} - - -/********************************************************************/ -menuitem "Code Security Module" -hotmenu Unlock_CSM() -{ - /* Perform dummy reads of the password locations */ - XAR0 = *0x33FFF8; - XAR0 = *0x33FFF9; - XAR0 = *0x33FFFA; - XAR0 = *0x33FFFB; - XAR0 = *0x33FFFC; - XAR0 = *0x33FFFD; - XAR0 = *0x33FFFE; - XAR0 = *0x33FFFF; - - /* Write passwords to the KEY registers. 0xFFFF's are dummy passwords. - User should replace them with the correct password for their DSP */ - *0xAE0 = 0xFFFF; - *0xAE1 = 0xFFFF; - *0xAE2 = 0xFFFF; - *0xAE3 = 0xFFFF; - *0xAE4 = 0xFFFF; - *0xAE5 = 0xFFFF; - *0xAE6 = 0xFFFF; - *0xAE7 = 0xFFFF; -} - - -/********************************************************************/ -menuitem "Addressing Modes"; -hotmenu C28x_Mode() -{ - ST1 = ST1 & (~0x0100); /* AMODE = 0 */ - ST1 = ST1 | 0x0200; /* OBJMODE = 1 */ -} -hotmenu C24x_Mode() -{ - ST1 = ST1 | 0x0100; /* AMODE = 1 */ - ST1 = ST1 | 0x0200; /* OBJMODE = 1 */ -} -hotmenu C27x_Mode() -{ - ST1 = ST1 & (~0x0100); /* AMODE = 0 */ - ST1 = ST1 & (~0x0200); /* OBJMODE = 0 */ -} - - -/********************************************************************/ -/* PLL Ratios */ -/* */ -/* The following table describes the PLL clocking ratios (0..10) */ -/* */ -/* Ratio CLKIN Description */ -/* ----- -------------- ------------ */ -/* 0 OSCCLK/2 PLL bypassed */ -/* 1 (OSCCLK * 1)/2 10 Mhz for 20 Mhz CLKIN */ -/* 2 (OSCCLK * 2)/2 20 Mhz for 20 Mhz CLKIN */ -/* 3 (OSCCLK * 3)/2 30 Mhz for 20 Mhz CLKIN */ -/* 4 (OSCCLK * 4)/2 40 Mhz for 20 Mhz CLKIN */ -/* 5 (OSCCLK * 5)/2 50 Mhz for 20 Mhz CLKIN */ -/* 6 (OSCCLK * 6)/2 60 Mhz for 20 Mhz CLKIN */ -/* 7 (OSCCLK * 7)/2 70 Mhz for 20 Mhz CLKIN */ -/* 8 (OSCCLK * 8)/2 80 Mhz for 20 Mhz CLKIN */ -/* 9 (OSCCLK * 9)/2 90 Mhz for 20 Mhz CLKIN */ -/* 10 (OSCCLK * 10)/2 100 Mhz for 20 Mhz CLKIN */ -/********************************************************************/ -menuitem "Set PLL Ratio"; - -hotmenu Bypass() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 0; /* CLKIN = OSCCLK/2, PLL is bypassed */ - PLL_Wait(); -} -hotmenu OSCCLK_x1_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 1; /* CLKIN = (OSCCLK * 1)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x2_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 2; /* CLKIN = (OSCCLK * 2)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x3_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 3; /* CLKIN = (OSCCLK * 3)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x4_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 4; /* CLKIN = (OSCCLK * 4)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x5_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 5; /* CLKIN = (OSCCLK * 5)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x6_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 6; /* CLKIN = (OSCCLK * 6)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x7_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 7; /* CLKIN = (OSCCLK * 7)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x8_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 8; /* CLKIN = (OSCCLK * 8)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x9_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 9; /* CLKIN = (OSCCLK * 9)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x10_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 10; /* CLKIN = (OSCCLK * 10)/2 */ - PLL_Wait(); -} -// hotmenu OSCCLK_x1_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 1; /* CLKIN = (OSCCLK * 1)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x2_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 2; /* CLKIN = (OSCCLK * 2)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x3_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 3; /* CLKIN = (OSCCLK * 3)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x4_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 4; /* CLKIN = (OSCCLK * 4)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x5_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 5; /* CLKIN = (OSCCLK * 5)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x6_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 6; /* CLKIN = (OSCCLK * 6)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x7_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 7; /* CLKIN = (OSCCLK * 7)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x8_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 8; /* CLKIN = (OSCCLK * 8)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x9_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 9; /* CLKIN = (OSCCLK * 9)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x10_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 10; /* CLKIN = (OSCCLK * 10)/1 */ -// PLL_Wait(); -// } - - - -/********************************************************************/ -/* For F2823x devices, DIVSEL is 1/4 by default. Switch it to 1/2 */ -/********************************************************************/ - -DIVSEL_div2() -{ - int temp; - int PLLSTS; - - PLLSTS = 0x7011; - - temp = *PLLSTS; - temp &= 0xFE7F; /* Clear bits 7 & 8 */ - temp |= 2 << 7; /* Set bit 8 */ - *PLLSTS = temp; /* Switch to 1/2 */ -} - - - -/********************************************************************/ -/* For F2823x devices, DIVSEL is 1/4 by default. Switch it to /1 */ -/********************************************************************/ - -DIVSEL_div1() -{ - int temp; - int PLLSTS; - - PLLSTS = 0x7011; - - DIVSEL_div2(); /* First switch DIVSEL to 1/2 and wait */ - wait(); - temp = *PLLSTS; - temp |= 3 << 7; /* Set bits 7 & 8 */ - *PLLSTS = temp; /* Switch to 1/2 */ -} - -wait() -{ - int delay = 0; - for (delay = 0; delay <= 5; delay ++) - {} -} - -/********************************************************************/ -/* For F2823x devices, check the PLLOCKS bit for PLL lock. */ -/********************************************************************/ -PLL_Wait() -{ - int PLLSTS; - int delay = 0; - - PLLSTS = 0x7011; - - - while ( ( (unsigned int)*PLLSTS & 0x0001) != 0x0001) - { - delay++; - GEL_TextOut("Waiting for PLL Lock, PLLSTS = %x\n",,,,,(unsigned int)*PLLSTS); - } - GEL_TextOut("\nPLL lock complete, PLLSTS = %x\n",,,,,(unsigned int)*PLLSTS); -} - - -/********************************************************************/ -/* Load the ADC Calibration values from TI OTP */ -/********************************************************************/ -menuitem "ADC Calibration" -hotmenu ADC_Cal() -{ - /* Perform dummy reads of the password locations */ - XAR0 = *0x33FFF8; - XAR0 = *0x33FFF9; - XAR0 = *0x33FFFA; - XAR0 = *0x33FFFB; - XAR0 = *0x33FFFC; - XAR0 = *0x33FFFD; - XAR0 = *0x33FFFE; - XAR0 = *0x33FFFF; - - if(((*0x0AEF) & 0x0001) == 0) - { - XAR0 = *0x701C; - *0x701C |= 0x0008; - *0x711C = *0x380083; - *0x711D = *0x380085; - *0x701C = XAR0; - XAR0 = 0; - - } - else - { - GEL_TextOut("\nADC Calibration not complete, device is secure"); - } -} - -/********************************************************************/ -/* Enable the XINTF and configure GPIOs for XINTF function */ -/********************************************************************/ -menuitem "XINTF Enable" -hotmenu XINTF_Enable() -{ - - /* enable XINTF clock (XTIMCLK) */ - - *0x7020 = 0x3700; - /* GPBMUX1: XA0-XA7, XA16, XZCS0, */ - /* XZCS7, XREADY, XRNW, XWE0 */ - /* GPAMUX2: XA17-XA19, XZCS6 */ - /* GPCMUX2: XA8-XA15 */ - /* GPCMUX1: XD0-XD15 */ - *(unsigned long *)0x6F96 = 0xFFFFFFC0; /* GPBMUX1 */ - *(unsigned long *)0x6f88 = 0xFF000000; /* GPAMUX2 */ - *(unsigned long *)0x6FA8 = 0x0000AAAA; /* GPCMUX2 */ - *(unsigned long *)0x6FA6 = 0xAAAAAAAA; /* GPCMUX1 */ - - /* Uncomment for x32 data bus */ - /* GPBMUX2: XD16-XD31 */ -// *(unsigned long *)0x6F98 = 0xFFFFFFFF; /* GPBMUX2 */ - - /* Zone timing. - /* Each zone can be configured seperately */ - /* Uncomment the x16 or the x32 timing */ - /* depending on the data bus width for */ - /* the zone */ - - /* x16 Timing */ - *(unsigned long *)0x0B20 = 0x0043FFFF; /* Zone0 */ - *(unsigned long *)0x0B2C = 0x0043FFFF; /* Zone6 */ - *(unsigned long *)0x0B2E = 0x0043FFFF; /* Zone7 */ - - /* x32 Timing: -// *(unsigned long *)0x0B20 = 0x0041FFFF; /* x32 */ -// *(unsigned long *)0x0B2C = 0x0041FFFF; /* x32 */ -// *(unsigned long *)0x0B2E = 0x0041FFFF; /* x32 */ - -} - -/********************************************************************/ -/* The below are used to display the symbolic names of the F28232 */ -/* memory mapped registers in the watch window. To view these */ -/* registers, click on the GEL menu button in Code Composer Studio, */ -/* then select which registers or groups of registers you want to */ -/* view. They will appear in the watch window under the Watch1 tab. */ -/********************************************************************/ - -/* Add a space line to the GEL menu */ -menuitem "______________________________________"; -hotmenu __() {} - -/********************************************************************/ -/* A/D Converter Registers */ -/********************************************************************/ -menuitem "Watch ADC Registers"; - -hotmenu All_ADC_Regs() -{ - GEL_WatchAdd("*0x7100,x","ADCTRL1"); - GEL_WatchAdd("*0x7101,x","ADCTRL2"); - GEL_WatchAdd("*0x7102,x","ADCMAXCONV"); - GEL_WatchAdd("*0x7103,x","ADCCHSELSEQ1"); - GEL_WatchAdd("*0x7104,x","ADCCHSELSEQ2"); - GEL_WatchAdd("*0x7105,x","ADCCHSELSEQ3"); - GEL_WatchAdd("*0x7106,x","ADCCHSELSEQ4"); - GEL_WatchAdd("*0x7107,x","ADCASEQSR"); - GEL_WatchAdd("*0x7108,x","ADCRESULT0"); - GEL_WatchAdd("*0x7109,x","ADCRESULT1"); - GEL_WatchAdd("*0x710A,x","ADCRESULT2"); - GEL_WatchAdd("*0x710B,x","ADCRESULT3"); - GEL_WatchAdd("*0x710C,x","ADCRESULT4"); - GEL_WatchAdd("*0x710D,x","ADCRESULT5"); - GEL_WatchAdd("*0x710E,x","ADCRESULT6"); - GEL_WatchAdd("*0x710F,x","ADCRESULT7"); - GEL_WatchAdd("*0x7110,x","ADCRESULT8"); - GEL_WatchAdd("*0x7111,x","ADCRESULT9"); - GEL_WatchAdd("*0x7112,x","ADCRESULT10"); - GEL_WatchAdd("*0x7113,x","ADCRESULT11"); - GEL_WatchAdd("*0x7114,x","ADCRESULT12"); - GEL_WatchAdd("*0x7115,x","ADCRESULT13"); - GEL_WatchAdd("*0x7116,x","ADCRESULT14"); - GEL_WatchAdd("*0x7117,x","ADCRESULT15"); - GEL_WatchAdd("*0x7118,x","ADCTRL3"); - GEL_WatchAdd("*0x7119,x","ADCST"); - GEL_WatchAdd("*0x711C,x","ADCREFSEL"); - GEL_WatchAdd("*0x711D,x","ADCOFFTRIM"); - - GEL_WatchAdd("*0x0B00,x","ADCRESULT0 Mirror"); - GEL_WatchAdd("*0x0B01,x","ADCRESULT1 Mirror"); - GEL_WatchAdd("*0x0B02,x","ADCRESULT2 Mirror"); - GEL_WatchAdd("*0x0B03,x","ADCRESULT3 Mirror"); - GEL_WatchAdd("*0x0B04,x","ADCRESULT4 Mirror"); - GEL_WatchAdd("*0x0B05,x","ADCRESULT5 Mirror"); - GEL_WatchAdd("*0x0B06,x","ADCRESULT6 Mirror"); - GEL_WatchAdd("*0x0B07,x","ADCRESULT7 Mirror"); - GEL_WatchAdd("*0x0B08,x","ADCRESULT8 Mirror"); - GEL_WatchAdd("*0x0B09,x","ADCRESULT9 Mirror"); - GEL_WatchAdd("*0x0B0A,x","ADCRESULT10 Mirror"); - GEL_WatchAdd("*0x0B0B,x","ADCRESULT11 Mirror"); - GEL_WatchAdd("*0x0B0C,x","ADCRESULT12 Mirror"); - GEL_WatchAdd("*0x0B0D,x","ADCRESULT13 Mirror"); - GEL_WatchAdd("*0x0B0E,x","ADCRESULT14 Mirror"); - GEL_WatchAdd("*0x0B0F,x","ADCRESULT15 Mirror"); -} -hotmenu ADC_Control_Regs() -{ - GEL_WatchAdd("*0x7100,x","ADCTRL1"); - GEL_WatchAdd("*0x7101,x","ADCTRL2"); - GEL_WatchAdd("*0x7102,x","ADCMAXCONV"); - GEL_WatchAdd("*0x7107,x","ADCASEQSR"); - GEL_WatchAdd("*0x7118,x","ADCTRL3"); - GEL_WatchAdd("*0x7119,x","ADCST"); - GEL_WatchAdd("*0x711C,x","ADCREFSEL"); - GEL_WatchAdd("*0x711D,x","ADCOFFTRIM"); -} -hotmenu ADCCHSELSEQx_Regs() -{ - GEL_WatchAdd("*0x7103,x","ADCCHSELSEQ1"); - GEL_WatchAdd("*0x7104,x","ADCCHSELSEQ2"); - GEL_WatchAdd("*0x7105,x","ADCCHSELSEQ3"); - GEL_WatchAdd("*0x7106,x","ADCCHSELSEQ4"); -} -hotmenu ADCRESULT_0_to_7() -{ - GEL_WatchAdd("*0x7108,x","ADCRESULT0"); - GEL_WatchAdd("*0x7109,x","ADCRESULT1"); - GEL_WatchAdd("*0x710A,x","ADCRESULT2"); - GEL_WatchAdd("*0x710B,x","ADCRESULT3"); - GEL_WatchAdd("*0x710C,x","ADCRESULT4"); - GEL_WatchAdd("*0x710D,x","ADCRESULT5"); - GEL_WatchAdd("*0x710E,x","ADCRESULT6"); - GEL_WatchAdd("*0x710F,x","ADCRESULT7"); -} -hotmenu ADCRESULT_8_to_15() -{ - GEL_WatchAdd("*0x7110,x","ADCRESULT8"); - GEL_WatchAdd("*0x7111,x","ADCRESULT9"); - GEL_WatchAdd("*0x7112,x","ADCRESULT10"); - GEL_WatchAdd("*0x7113,x","ADCRESULT11"); - GEL_WatchAdd("*0x7114,x","ADCRESULT12"); - GEL_WatchAdd("*0x7115,x","ADCRESULT13"); - GEL_WatchAdd("*0x7116,x","ADCRESULT14"); - GEL_WatchAdd("*0x7117,x","ADCRESULT15"); -} -hotmenu ADCRESULT_Mirror_0_to_7() -{ - GEL_WatchAdd("*0x0B00,x","ADCRESULT0 Mirror"); - GEL_WatchAdd("*0x0B01,x","ADCRESULT1 Mirror"); - GEL_WatchAdd("*0x0B02,x","ADCRESULT2 Mirror"); - GEL_WatchAdd("*0x0B03,x","ADCRESULT3 Mirror"); - GEL_WatchAdd("*0x0B04,x","ADCRESULT4 Mirror"); - GEL_WatchAdd("*0x0B05,x","ADCRESULT5 Mirror"); - GEL_WatchAdd("*0x0B06,x","ADCRESULT6 Mirror"); - GEL_WatchAdd("*0x0B07,x","ADCRESULT7 Mirror"); -} -hotmenu ADCRESULT_Mirror_8_to_15() -{ - GEL_WatchAdd("*0x0B08,x","ADCRESULT8 Mirror"); - GEL_WatchAdd("*0x0B09,x","ADCRESULT9 Mirror"); - GEL_WatchAdd("*0x0B0A,x","ADCRESULT10 Mirror"); - GEL_WatchAdd("*0x0B0B,x","ADCRESULT11 Mirror"); - GEL_WatchAdd("*0x0B0C,x","ADCRESULT12 Mirror"); - GEL_WatchAdd("*0x0B0D,x","ADCRESULT13 Mirror"); - GEL_WatchAdd("*0x0B0E,x","ADCRESULT14 Mirror"); - GEL_WatchAdd("*0x0B0F,x","ADCRESULT15 Mirror"); -} - - -/********************************************************************/ -/* Clocking and Low-Power Registers */ -/********************************************************************/ -menuitem "Watch Clocking and Low-Power Registers"; - -hotmenu All_Clocking_and_Low_Power_Regs() -{ - GEL_WatchAdd("*0x7010,x","XCLK"); - GEL_WatchAdd("*0x7011,x","PLLSTS"); - GEL_WatchAdd("*0x701A,x","HISPCP"); - GEL_WatchAdd("*0x701B,x","LOSPCP"); - GEL_WatchAdd("*0x701C,x","PCLKCR0"); - GEL_WatchAdd("*0x701D,x","PCLKCR1"); - GEL_WatchAdd("*0x701E,x","LPMCR0"); - GEL_WatchAdd("*0x7020,x","PCLKCR3"); - GEL_WatchAdd("*0x7021,x","PLLCR"); -} - -/********************************************************************/ -/* Code Security Module Registers */ -/********************************************************************/ -menuitem "Watch Code Security Module Registers"; - -hotmenu CSMSCR() -{ - GEL_WatchAdd("*0x0AEF,x","CSMSCR"); - GEL_WatchAdd("(*0x0AEF>>15)&1,d"," FORCESEC bit"); - GEL_WatchAdd("(*0x0AEF)&1,d"," SECURE bit"); -} -hotmenu PWL_Locations() -{ - GEL_WatchAdd("*0x33FFF8,x","PWL0"); - GEL_WatchAdd("*0x33FFF9,x","PWL1"); - GEL_WatchAdd("*0x33FFFA,x","PWL2"); - GEL_WatchAdd("*0x33FFFB,x","PWL3"); - GEL_WatchAdd("*0x33FFFC,x","PWL4"); - GEL_WatchAdd("*0x33FFFD,x","PWL5"); - GEL_WatchAdd("*0x33FFFE,x","PWL6"); - GEL_WatchAdd("*0x33FFFF,x","PWL7"); -} - - -/********************************************************************/ -/* CPU Timer Registers */ -/********************************************************************/ -menuitem "Watch CPU Timer Registers"; - -hotmenu All_CPU_Timer0_Regs() -{ - GEL_WatchAdd("*0x0C00,x","TIMER0TIM"); - GEL_WatchAdd("*0x0C01,x","TIMER0TIMH"); - GEL_WatchAdd("*0x0C02,x","TIMER0PRD"); - GEL_WatchAdd("*0x0C03,x","TIMER0PRDH"); - GEL_WatchAdd("*0x0C04,x","TIMER0TCR"); - GEL_WatchAdd("*0x0C06,x","TIMER0TPR"); - GEL_WatchAdd("*0x0C07,x","TIMER0TPRH"); -} -hotmenu All_CPU_Timer1_Regs() -{ - GEL_WatchAdd("*0x0C08,x","TIMER1TIM"); - GEL_WatchAdd("*0x0C09,x","TIMER1TIMH"); - GEL_WatchAdd("*0x0C0A,x","TIMER1PRD"); - GEL_WatchAdd("*0x0C0B,x","TIMER1PRDH"); - GEL_WatchAdd("*0x0C0C,x","TIMER1TCR"); - GEL_WatchAdd("*0x0C0E,x","TIMER1TPR"); - GEL_WatchAdd("*0x0C0F,x","TIMER1TPRH"); -} -hotmenu All_CPU_Timer2_Regs() -{ - GEL_WatchAdd("*0x0C10,x","TIMER2TIM"); - GEL_WatchAdd("*0x0C11,x","TIMER2TIMH"); - GEL_WatchAdd("*0x0C12,x","TIMER2PRD"); - GEL_WatchAdd("*0x0C13,x","TIMER2PRDH"); - GEL_WatchAdd("*0x0C14,x","TIMER2TCR"); - GEL_WatchAdd("*0x0C16,x","TIMER2TPR"); - GEL_WatchAdd("*0x0C17,x","TIMER2TPRH"); -} - - -/********************************************************************/ -/* Device Emulation Registers */ -/********************************************************************/ -menuitem "Watch Device Emulation Registers"; - -hotmenu All_Emulation_Regs() -{ - GEL_WatchAdd("*(long *)0x0880,x","DEVICECNF"); - GEL_WatchAdd("*0x0882,x","CLASSID"); - GEL_WatchAdd("*0x0883,x","REVID"); - GEL_WatchAdd("*0x0884,x","PROTSTART"); - GEL_WatchAdd("*0x0885,x","PROTRANGE"); - GEL_WatchAdd("*0x380090,x","PARTID"); -} -/********************************************************************/ -/* DMA Registers */ -/********************************************************************/ -menuitem "Watch DMA Registers"; - -hotmenu All_DMA_Regs() -{ - GEL_WatchAdd("*0x1000,x","DMACTRL"); - GEL_WatchAdd("*0x1001,x","DEBUGCTRL"); - GEL_WatchAdd("*0x1002,x","REVISION"); - GEL_WatchAdd("*0x1004,x","PRIORITYCTRL1"); - GEL_WatchAdd("*0x1006,x","PRIORITYSTAT"); - - GEL_WatchAdd("*0x1020,x","DMA Ch1 MODE"); - GEL_WatchAdd("*0x1021,x","DMA Ch1 CONTROL"); - GEL_WatchAdd("*0x1022,x","DMA Ch1 BURST_SIZE"); - GEL_WatchAdd("*0x1023,x","DMA Ch1 BURST_COUNT"); - GEL_WatchAdd("*0x1024,x","DMA Ch1 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1025,x","DMA Ch1 DST_BURST_STEP"); - GEL_WatchAdd("*0x1026,x","DMA Ch1 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1027,x","DMA Ch1 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1028,x","DMA Ch1 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1029,x","DMA Ch1 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x102A,x","DMA Ch1 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x102B,x","DMA Ch1 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x102C,x","DMA Ch1 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x102D,x","DMA Ch1 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x102E,x","DMA Ch1 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x102F,x","DMA Ch1 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1030,x","DMA Ch1 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1032,x","DMA Ch1 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1034,x","DMA Ch1 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1036,x","DMA Ch1 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1038,x","DMA Ch1 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x103A,x","DMA Ch1 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x103C,x","DMA Ch1 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x103E,x","DMA Ch1 DST_ADDR_ACTIVE"); - - GEL_WatchAdd("*0x1040,x","DMA Ch2 MODE"); - GEL_WatchAdd("*0x1041,x","DMA Ch2 CONTROL"); - GEL_WatchAdd("*0x1042,x","DMA Ch2 BURST_SIZE"); - GEL_WatchAdd("*0x1043,x","DMA Ch2 BURST_COUNT"); - GEL_WatchAdd("*0x1044,x","DMA Ch2 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1045,x","DMA Ch2 DST_BURST_STEP"); - GEL_WatchAdd("*0x1046,x","DMA Ch2 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1047,x","DMA Ch2 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1048,x","DMA Ch2 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1049,x","DMA Ch2 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x104A,x","DMA Ch2 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x104B,x","DMA Ch2 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x104C,x","DMA Ch2 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x104D,x","DMA Ch2 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x104E,x","DMA Ch2 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x104F,x","DMA Ch2 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1050,x","DMA Ch2 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1052,x","DMA Ch2 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1054,x","DMA Ch2 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1056,x","DMA Ch2 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1058,x","DMA Ch2 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x105A,x","DMA Ch2 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x105C,x","DMA Ch2 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x105E,x","DMA Ch2 DST_ADDR_ACTIVE"); - - GEL_WatchAdd("*0x1060,x","DMA Ch3 MODE"); - GEL_WatchAdd("*0x1061,x","DMA Ch3 CONTROL"); - GEL_WatchAdd("*0x1062,x","DMA Ch3 BURST_SIZE"); - GEL_WatchAdd("*0x1063,x","DMA Ch3 BURST_COUNT"); - GEL_WatchAdd("*0x1064,x","DMA Ch3 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1065,x","DMA Ch3 DST_BURST_STEP"); - GEL_WatchAdd("*0x1066,x","DMA Ch3 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1067,x","DMA Ch3 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1068,x","DMA Ch3 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1069,x","DMA Ch3 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x106A,x","DMA Ch3 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x106B,x","DMA Ch3 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x106C,x","DMA Ch3 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x106D,x","DMA Ch3 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x106E,x","DMA Ch3 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x106F,x","DMA Ch3 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1070,x","DMA Ch3 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1072,x","DMA Ch3 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1074,x","DMA Ch3 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1076,x","DMA Ch3 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1078,x","DMA Ch3 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x107A,x","DMA Ch3 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x107C,x","DMA Ch3 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x107E,x","DMA Ch3 DST_ADDR_ACTIVE"); - - GEL_WatchAdd("*0x1080,x","DMA Ch4 MODE"); - GEL_WatchAdd("*0x1081,x","DMA Ch4 CONTROL"); - GEL_WatchAdd("*0x1082,x","DMA Ch4 BURST_SIZE"); - GEL_WatchAdd("*0x1083,x","DMA Ch4 BURST_COUNT"); - GEL_WatchAdd("*0x1084,x","DMA Ch4 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1085,x","DMA Ch4 DST_BURST_STEP"); - GEL_WatchAdd("*0x1086,x","DMA Ch4 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1087,x","DMA Ch4 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1088,x","DMA Ch4 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1089,x","DMA Ch4 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x108A,x","DMA Ch4 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x108B,x","DMA Ch4 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x108C,x","DMA Ch4 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x108D,x","DMA Ch4 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x108E,x","DMA Ch4 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x108F,x","DMA Ch4 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1090,x","DMA Ch4 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1092,x","DMA Ch4 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1094,x","DMA Ch4 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1096,x","DMA Ch4 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1098,x","DMA Ch4 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x109A,x","DMA Ch4 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x109C,x","DMA Ch4 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x109E,x","DMA Ch4 DST_ADDR_ACTIVE"); - - GEL_WatchAdd("*0x10A0,x","DMA Ch5 MODE"); - GEL_WatchAdd("*0x10A1,x","DMA Ch5 CONTROL"); - GEL_WatchAdd("*0x10A2,x","DMA Ch5 BURST_SIZE"); - GEL_WatchAdd("*0x10A3,x","DMA Ch5 BURST_COUNT"); - GEL_WatchAdd("*0x10A4,x","DMA Ch5 SRC_BURST_STEP"); - GEL_WatchAdd("*0x10A5,x","DMA Ch5 DST_BURST_STEP"); - GEL_WatchAdd("*0x10A6,x","DMA Ch5 TRANSFER_SIZE"); - GEL_WatchAdd("*0x10A7,x","DMA Ch5 TRANSFER_COUNT"); - GEL_WatchAdd("*0x10A8,x","DMA Ch5 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x10A9,x","DMA Ch5 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x10AA,x","DMA Ch5 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x10AB,x","DMA Ch5 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x10AC,x","DMA Ch5 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x10AD,x","DMA Ch5 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x10AE,x","DMA Ch5 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x10AF,x","DMA Ch5 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x10B0,x","DMA Ch5 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10B2,x","DMA Ch5 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10B4,x","DMA Ch5 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10B6,x","DMA Ch5 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10B8,x","DMA Ch5 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10BA,x","DMA Ch5 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10BC,x","DMA Ch5 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10BE,x","DMA Ch5 DST_ADDR_ACTIVE"); - - GEL_WatchAdd("*0x10C0,x","DMA Ch6 MODE"); - GEL_WatchAdd("*0x10C1,x","DMA Ch6 CONTROL"); - GEL_WatchAdd("*0x10C2,x","DMA Ch6 BURST_SIZE"); - GEL_WatchAdd("*0x10C3,x","DMA Ch6 BURST_COUNT"); - GEL_WatchAdd("*0x10C4,x","DMA Ch6 SRC_BURST_STEP"); - GEL_WatchAdd("*0x10C5,x","DMA Ch6 DST_BURST_STEP"); - GEL_WatchAdd("*0x10C6,x","DMA Ch6 TRANSFER_SIZE"); - GEL_WatchAdd("*0x10C7,x","DMA Ch6 TRANSFER_COUNT"); - GEL_WatchAdd("*0x10C8,x","DMA Ch6 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x10C9,x","DMA Ch6 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x10CA,x","DMA Ch6 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x10CB,x","DMA Ch6 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x10CC,x","DMA Ch6 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x10CD,x","DMA Ch6 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x10CE,x","DMA Ch6 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x10CF,x","DMA Ch6 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x10D0,x","DMA Ch6 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10D2,x","DMA Ch6 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10D4,x","DMA Ch6 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10D6,x","DMA Ch6 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10D8,x","DMA Ch6 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10DA,x","DMA Ch6 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10DC,x","DMA Ch6 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10DE,x","DMA Ch6 DST_ADDR_ACTIVE"); - - -} -hotmenu DMA_Channel_1_regs() -{ - GEL_WatchAdd("*0x1020,x","DMA Ch1 MODE"); - GEL_WatchAdd("*0x1021,x","DMA Ch1 CONTROL"); - GEL_WatchAdd("*0x1022,x","DMA Ch1 BURST_SIZE"); - GEL_WatchAdd("*0x1023,x","DMA Ch1 BURST_COUNT"); - GEL_WatchAdd("*0x1024,x","DMA Ch1 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1025,x","DMA Ch1 DST_BURST_STEP"); - GEL_WatchAdd("*0x1026,x","DMA Ch1 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1027,x","DMA Ch1 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1028,x","DMA Ch1 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1029,x","DMA Ch1 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x102A,x","DMA Ch1 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x102B,x","DMA Ch1 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x102C,x","DMA Ch1 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x102D,x","DMA Ch1 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x102E,x","DMA Ch1 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x102F,x","DMA Ch1 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1030,x","DMA Ch1 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1032,x","DMA Ch1 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1034,x","DMA Ch1 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1036,x","DMA Ch1 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1038,x","DMA Ch1 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x103A,x","DMA Ch1 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x103C,x","DMA Ch1 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x103E,x","DMA Ch1 DST_ADDR_ACTIVE"); -} - -hotmenu DMA_Channel_2_regs() -{ - GEL_WatchAdd("*0x1040,x","DMA Ch2 MODE"); - GEL_WatchAdd("*0x1041,x","DMA Ch2 CONTROL"); - GEL_WatchAdd("*0x1042,x","DMA Ch2 BURST_SIZE"); - GEL_WatchAdd("*0x1043,x","DMA Ch2 BURST_COUNT"); - GEL_WatchAdd("*0x1044,x","DMA Ch2 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1045,x","DMA Ch2 DST_BURST_STEP"); - GEL_WatchAdd("*0x1046,x","DMA Ch2 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1047,x","DMA Ch2 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1048,x","DMA Ch2 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1049,x","DMA Ch2 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x104A,x","DMA Ch2 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x104B,x","DMA Ch2 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x104C,x","DMA Ch2 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x104D,x","DMA Ch2 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x104E,x","DMA Ch2 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x104F,x","DMA Ch2 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1050,x","DMA Ch2 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1052,x","DMA Ch2 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1054,x","DMA Ch2 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1056,x","DMA Ch2 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1058,x","DMA Ch2 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x105A,x","DMA Ch2 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x105C,x","DMA Ch2 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x105E,x","DMA Ch2 DST_ADDR_ACTIVE"); -} -hotmenu DMA_Channel_3_regs() -{ - GEL_WatchAdd("*0x1060,x","DMA Ch3 MODE"); - GEL_WatchAdd("*0x1061,x","DMA Ch3 CONTROL"); - GEL_WatchAdd("*0x1062,x","DMA Ch3 BURST_SIZE"); - GEL_WatchAdd("*0x1063,x","DMA Ch3 BURST_COUNT"); - GEL_WatchAdd("*0x1064,x","DMA Ch3 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1065,x","DMA Ch3 DST_BURST_STEP"); - GEL_WatchAdd("*0x1066,x","DMA Ch3 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1067,x","DMA Ch3 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1068,x","DMA Ch3 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1069,x","DMA Ch3 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x106A,x","DMA Ch3 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x106B,x","DMA Ch3 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x106C,x","DMA Ch3 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x106D,x","DMA Ch3 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x106E,x","DMA Ch3 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x106F,x","DMA Ch3 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1070,x","DMA Ch3 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1072,x","DMA Ch3 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1074,x","DMA Ch3 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1076,x","DMA Ch3 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1078,x","DMA Ch3 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x107A,x","DMA Ch3 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x107C,x","DMA Ch3 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x107E,x","DMA Ch3 DST_ADDR_ACTIVE"); -} -hotmenu DMA_Channel_4_regs() -{ - GEL_WatchAdd("*0x1080,x","DMA Ch4 MODE"); - GEL_WatchAdd("*0x1081,x","DMA Ch4 CONTROL"); - GEL_WatchAdd("*0x1082,x","DMA Ch4 BURST_SIZE"); - GEL_WatchAdd("*0x1083,x","DMA Ch4 BURST_COUNT"); - GEL_WatchAdd("*0x1084,x","DMA Ch4 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1085,x","DMA Ch4 DST_BURST_STEP"); - GEL_WatchAdd("*0x1086,x","DMA Ch4 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1087,x","DMA Ch4 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1088,x","DMA Ch4 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1089,x","DMA Ch4 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x108A,x","DMA Ch4 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x108B,x","DMA Ch4 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x108C,x","DMA Ch4 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x108D,x","DMA Ch4 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x108E,x","DMA Ch4 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x108F,x","DMA Ch4 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1090,x","DMA Ch4 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1092,x","DMA Ch4 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1094,x","DMA Ch4 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1096,x","DMA Ch4 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1098,x","DMA Ch4 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x109A,x","DMA Ch4 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x109C,x","DMA Ch4 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x109E,x","DMA Ch4 DST_ADDR_ACTIVE"); -} -hotmenu DMA_Channel_5_regs() -{ - GEL_WatchAdd("*0x10A0,x","DMA Ch5 MODE"); - GEL_WatchAdd("*0x10A1,x","DMA Ch5 CONTROL"); - GEL_WatchAdd("*0x10A2,x","DMA Ch5 BURST_SIZE"); - GEL_WatchAdd("*0x10A3,x","DMA Ch5 BURST_COUNT"); - GEL_WatchAdd("*0x10A4,x","DMA Ch5 SRC_BURST_STEP"); - GEL_WatchAdd("*0x10A5,x","DMA Ch5 DST_BURST_STEP"); - GEL_WatchAdd("*0x10A6,x","DMA Ch5 TRANSFER_SIZE"); - GEL_WatchAdd("*0x10A7,x","DMA Ch5 TRANSFER_COUNT"); - GEL_WatchAdd("*0x10A8,x","DMA Ch5 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x10A9,x","DMA Ch5 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x10AA,x","DMA Ch5 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x10AB,x","DMA Ch5 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x10AC,x","DMA Ch5 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x10AD,x","DMA Ch5 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x10AE,x","DMA Ch5 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x10AF,x","DMA Ch5 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x10B0,x","DMA Ch5 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10B2,x","DMA Ch5 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10B4,x","DMA Ch5 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10B6,x","DMA Ch5 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10B8,x","DMA Ch5 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10BA,x","DMA Ch5 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10BC,x","DMA Ch5 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10BE,x","DMA Ch5 DST_ADDR_ACTIVE"); -} -hotmenu DMA_Channel_6_regs() -{ - GEL_WatchAdd("*0x10C0,x","DMA Ch6 MODE"); - GEL_WatchAdd("*0x10C1,x","DMA Ch6 CONTROL"); - GEL_WatchAdd("*0x10C2,x","DMA Ch6 BURST_SIZE"); - GEL_WatchAdd("*0x10C3,x","DMA Ch6 BURST_COUNT"); - GEL_WatchAdd("*0x10C4,x","DMA Ch6 SRC_BURST_STEP"); - GEL_WatchAdd("*0x10C5,x","DMA Ch6 DST_BURST_STEP"); - GEL_WatchAdd("*0x10C6,x","DMA Ch6 TRANSFER_SIZE"); - GEL_WatchAdd("*0x10C7,x","DMA Ch6 TRANSFER_COUNT"); - GEL_WatchAdd("*0x10C8,x","DMA Ch6 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x10C9,x","DMA Ch6 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x10CA,x","DMA Ch6 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x10CB,x","DMA Ch6 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x10CC,x","DMA Ch6 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x10CD,x","DMA Ch6 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x10CE,x","DMA Ch6 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x10CF,x","DMA Ch6 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x10D0,x","DMA Ch6 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10D2,x","DMA Ch6 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10D4,x","DMA Ch6 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10D6,x","DMA Ch6 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10D8,x","DMA Ch6 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10DA,x","DMA Ch6 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10DC,x","DMA Ch6 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10DE,x","DMA Ch6 DST_ADDR_ACTIVE"); -} - -/********************************************************************/ -/* eCAN Registers */ -/********************************************************************/ -menuitem "Watch eCAN Registers"; - -hotmenu eCAN_A_Global_Regs() -{ - GEL_WatchAdd("*(long *)0x6000,x","eCANA CANME"); - GEL_WatchAdd("*(long *)0x6002,x","eCANA CANMD"); - GEL_WatchAdd("*(long *)0x6004,x","eCANA CANTRS"); - GEL_WatchAdd("*(long *)0x6006,x","eCANA CANTRR"); - GEL_WatchAdd("*(long *)0x6008,x","eCANA CANTA"); - GEL_WatchAdd("*(long *)0x600A,x","eCANA CANAA"); - GEL_WatchAdd("*(long *)0x600C,x","eCANA CANRMP"); - GEL_WatchAdd("*(long *)0x600E,x","eCANA CANRML"); - GEL_WatchAdd("*(long *)0x6010,x","eCANA CANRFP"); - GEL_WatchAdd("*(long *)0x6014,x","eCANA CANMC"); - GEL_WatchAdd("*(long *)0x6016,x","eCANA CANBTC"); - GEL_WatchAdd("*(long *)0x6018,x","eCANA CANES"); - GEL_WatchAdd("*(long *)0x601A,x","eCANA CANTEC"); - GEL_WatchAdd("*(long *)0x601C,x","eCANA CANREC"); - GEL_WatchAdd("*(long *)0x601E,x","eCANA CANGIF0"); - GEL_WatchAdd("*(long *)0x6020,x","eCANA CANGIM"); - GEL_WatchAdd("*(long *)0x6022,x","eCANA CANGIF1"); - GEL_WatchAdd("*(long *)0x6024,x","eCANA CANMIM"); - GEL_WatchAdd("*(long *)0x6026,x","eCANA CANMIL"); - GEL_WatchAdd("*(long *)0x6028,x","eCANA CANOPC"); - GEL_WatchAdd("*(long *)0x602A,x","eCANA CANTIOC"); - GEL_WatchAdd("*(long *)0x602C,x","eCANA CANRIOC"); - GEL_WatchAdd("*(long *)0x602E,x","eCANA CANLNT"); - GEL_WatchAdd("*(long *)0x6030,x","eCANA CANTOC"); - GEL_WatchAdd("*(long *)0x6032,x","eCANA CANTOS"); -} -hotmenu eCAN_A_Mailbox_0_to_1_Regs() -{ - GEL_WatchAdd("*(long *)0x6040,x","eCANA LAM0"); - GEL_WatchAdd("*(long *)0x6080,x","eCANA MOTS0"); - GEL_WatchAdd("*(long *)0x60C0,x","eCANA MOTO0"); - GEL_WatchAdd("*(long *)0x6100,x","eCANA MID0"); - GEL_WatchAdd("*(long *)0x6102,x","eCANA MCF0"); - GEL_WatchAdd("*(long *)0x6104,x","eCANA MDL0"); - GEL_WatchAdd("*(long *)0x6106,x","eCANA MDH0"); - - GEL_WatchAdd("*(long *)0x6042,x","eCANA LAM1"); - GEL_WatchAdd("*(long *)0x6082,x","eCANA MOTS1"); - GEL_WatchAdd("*(long *)0x60C2,x","eCANA MOTO1"); - GEL_WatchAdd("*(long *)0x6108,x","eCANA MID1"); - GEL_WatchAdd("*(long *)0x610A,x","eCANA MCF1"); - GEL_WatchAdd("*(long *)0x610C,x","eCANA MDL1"); - GEL_WatchAdd("*(long *)0x610E,x","eCANA MDH1"); -} -hotmenu eCAN_A_Mailbox_2_to_3_Regs() -{ - GEL_WatchAdd("*(long *)0x6044,x","eCANA LAM2"); - GEL_WatchAdd("*(long *)0x6084,x","eCANA MOTS2"); - GEL_WatchAdd("*(long *)0x60C4,x","eCANA MOTO2"); - GEL_WatchAdd("*(long *)0x6110,x","eCANA MID2"); - GEL_WatchAdd("*(long *)0x6112,x","eCANA MCF2"); - GEL_WatchAdd("*(long *)0x6114,x","eCANA MDL2"); - GEL_WatchAdd("*(long *)0x6116,x","eCANA MDH2"); - - GEL_WatchAdd("*(long *)0x6046,x","eCANA LAM3"); - GEL_WatchAdd("*(long *)0x6086,x","eCANA MOTS3"); - GEL_WatchAdd("*(long *)0x60C6,x","eCANA MOTO3"); - GEL_WatchAdd("*(long *)0x6118,x","eCANA MID3"); - GEL_WatchAdd("*(long *)0x611A,x","eCANA MCF3"); - GEL_WatchAdd("*(long *)0x611C,x","eCANA MDL3"); - GEL_WatchAdd("*(long *)0x611E,x","eCANA MDH3"); -} -hotmenu eCAN_A_Mailbox_4_to_5_Regs() -{ - GEL_WatchAdd("*(long *)0x6048,x","eCANA LAM4"); - GEL_WatchAdd("*(long *)0x6088,x","eCANA MOTS4"); - GEL_WatchAdd("*(long *)0x60C8,x","eCANA MOTO4"); - GEL_WatchAdd("*(long *)0x6120,x","eCANA MID4"); - GEL_WatchAdd("*(long *)0x6122,x","eCANA MCF4"); - GEL_WatchAdd("*(long *)0x6124,x","eCANA MDL4"); - GEL_WatchAdd("*(long *)0x6126,x","eCANA MDH4"); - - GEL_WatchAdd("*(long *)0x604A,x","eCANA LAM5"); - GEL_WatchAdd("*(long *)0x608A,x","eCANA MOTS5"); - GEL_WatchAdd("*(long *)0x60CA,x","eCANA MOTO5"); - GEL_WatchAdd("*(long *)0x6128,x","eCANA MID5"); - GEL_WatchAdd("*(long *)0x612A,x","eCANA MCF5"); - GEL_WatchAdd("*(long *)0x612C,x","eCANA MDL5"); - GEL_WatchAdd("*(long *)0x612E,x","eCANA MDH5"); -} -hotmenu eCAN_A_Mailbox_6_to_7_Regs() -{ - GEL_WatchAdd("*(long *)0x604C,x","eCANA LAM6"); - GEL_WatchAdd("*(long *)0x608C,x","eCANA MOTS6"); - GEL_WatchAdd("*(long *)0x60CC,x","eCANA MOTO6"); - GEL_WatchAdd("*(long *)0x6130,x","eCANA MID6"); - GEL_WatchAdd("*(long *)0x6132,x","eCANA MCF6"); - GEL_WatchAdd("*(long *)0x6134,x","eCANA MDL6"); - GEL_WatchAdd("*(long *)0x6136,x","eCANA MDH6"); - - GEL_WatchAdd("*(long *)0x604E,x","eCANA LAM7"); - GEL_WatchAdd("*(long *)0x608E,x","eCANA MOTS7"); - GEL_WatchAdd("*(long *)0x60CE,x","eCANA MOTO7"); - GEL_WatchAdd("*(long *)0x6138,x","eCANA MID7"); - GEL_WatchAdd("*(long *)0x613A,x","eCANA MCF7"); - GEL_WatchAdd("*(long *)0x613C,x","eCANA MDL7"); - GEL_WatchAdd("*(long *)0x613E,x","eCANA MDH7"); -} -hotmenu eCAN_A_Mailbox_8_to_9_Regs() -{ - GEL_WatchAdd("*(long *)0x6050,x","eCANA LAM8"); - GEL_WatchAdd("*(long *)0x6090,x","eCANA MOTS8"); - GEL_WatchAdd("*(long *)0x60D0,x","eCANA MOTO8"); - GEL_WatchAdd("*(long *)0x6140,x","eCANA MID8"); - GEL_WatchAdd("*(long *)0x6142,x","eCANA MCF8"); - GEL_WatchAdd("*(long *)0x6144,x","eCANA MDL8"); - GEL_WatchAdd("*(long *)0x6146,x","eCANA MDH8"); - - GEL_WatchAdd("*(long *)0x6052,x","eCANA LAM9"); - GEL_WatchAdd("*(long *)0x6092,x","eCANA MOTS9"); - GEL_WatchAdd("*(long *)0x60D2,x","eCANA MOTO9"); - GEL_WatchAdd("*(long *)0x6148,x","eCANA MID9"); - GEL_WatchAdd("*(long *)0x614A,x","eCANA MCF9"); - GEL_WatchAdd("*(long *)0x614C,x","eCANA MDL9"); - GEL_WatchAdd("*(long *)0x614E,x","eCANA MDH9"); -} -hotmenu eCAN_A_Mailbox_10_to_11_Regs() -{ - GEL_WatchAdd("*(long *)0x6054,x","eCANA LAM10"); - GEL_WatchAdd("*(long *)0x6094,x","eCANA MOTS10"); - GEL_WatchAdd("*(long *)0x60D4,x","eCANA MOTO10"); - GEL_WatchAdd("*(long *)0x6150,x","eCANA MID10"); - GEL_WatchAdd("*(long *)0x6152,x","eCANA MCF10"); - GEL_WatchAdd("*(long *)0x6154,x","eCANA MDL10"); - GEL_WatchAdd("*(long *)0x6156,x","eCANA MDH10"); - - GEL_WatchAdd("*(long *)0x6056,x","eCANA LAM11"); - GEL_WatchAdd("*(long *)0x6096,x","eCANA MOTS11"); - GEL_WatchAdd("*(long *)0x60D6,x","eCANA MOTO11"); - GEL_WatchAdd("*(long *)0x6158,x","eCANA MID11"); - GEL_WatchAdd("*(long *)0x615A,x","eCANA MCF11"); - GEL_WatchAdd("*(long *)0x615C,x","eCANA MDL11"); - GEL_WatchAdd("*(long *)0x615E,x","eCANA MDH11"); -} -hotmenu eCAN_A_Mailbox_12_to_13_Regs() -{ - GEL_WatchAdd("*(long *)0x6058,x","eCANA LAM12"); - GEL_WatchAdd("*(long *)0x6098,x","eCANA MOTS12"); - GEL_WatchAdd("*(long *)0x60D8,x","eCANA MOTO12"); - GEL_WatchAdd("*(long *)0x6160,x","eCANA MID12"); - GEL_WatchAdd("*(long *)0x6162,x","eCANA MCF12"); - GEL_WatchAdd("*(long *)0x6164,x","eCANA MDL12"); - GEL_WatchAdd("*(long *)0x6166,x","eCANA MDH12"); - - GEL_WatchAdd("*(long *)0x605A,x","eCANA LAM13"); - GEL_WatchAdd("*(long *)0x609A,x","eCANA MOTS13"); - GEL_WatchAdd("*(long *)0x60DA,x","eCANA MOTO13"); - GEL_WatchAdd("*(long *)0x6168,x","eCANA MID13"); - GEL_WatchAdd("*(long *)0x616A,x","eCANA MCF13"); - GEL_WatchAdd("*(long *)0x616C,x","eCANA MDL13"); - GEL_WatchAdd("*(long *)0x616E,x","eCANA MDH13"); -} -hotmenu eCAN_A_Mailbox_14_to_15_Regs() -{ - GEL_WatchAdd("*(long *)0x605C,x","eCANA LAM14"); - GEL_WatchAdd("*(long *)0x609C,x","eCANA MOTS14"); - GEL_WatchAdd("*(long *)0x60DC,x","eCANA MOTO14"); - GEL_WatchAdd("*(long *)0x6170,x","eCANA MID14"); - GEL_WatchAdd("*(long *)0x6172,x","eCANA MCF14"); - GEL_WatchAdd("*(long *)0x6174,x","eCANA MDL14"); - GEL_WatchAdd("*(long *)0x6176,x","eCANA MDH14"); - - GEL_WatchAdd("*(long *)0x605E,x","eCANA LAM15"); - GEL_WatchAdd("*(long *)0x609E,x","eCANA MOTS15"); - GEL_WatchAdd("*(long *)0x60DE,x","eCANA MOTO15"); - GEL_WatchAdd("*(long *)0x6178,x","eCANA MID15"); - GEL_WatchAdd("*(long *)0x617A,x","eCANA MCF15"); - GEL_WatchAdd("*(long *)0x617C,x","eCANA MDL15"); - GEL_WatchAdd("*(long *)0x617E,x","eCANA MDH15"); -} -hotmenu eCAN_A_Mailbox_16_to_17_Regs() -{ - GEL_WatchAdd("*(long *)0x6060,x","eCANA LAM16"); - GEL_WatchAdd("*(long *)0x60A0,x","eCANA MOTS16"); - GEL_WatchAdd("*(long *)0x60E0,x","eCANA MOTO16"); - GEL_WatchAdd("*(long *)0x6180,x","eCANA MID16"); - GEL_WatchAdd("*(long *)0x6182,x","eCANA MCF16"); - GEL_WatchAdd("*(long *)0x6184,x","eCANA MDL16"); - GEL_WatchAdd("*(long *)0x6186,x","eCANA MDH16"); - - GEL_WatchAdd("*(long *)0x6062,x","eCANA LAM17"); - GEL_WatchAdd("*(long *)0x60A2,x","eCANA MOTS17"); - GEL_WatchAdd("*(long *)0x60E2,x","eCANA MOTO17"); - GEL_WatchAdd("*(long *)0x6188,x","eCANA MID17"); - GEL_WatchAdd("*(long *)0x618A,x","eCANA MCF17"); - GEL_WatchAdd("*(long *)0x618C,x","eCANA MDL17"); - GEL_WatchAdd("*(long *)0x618E,x","eCANA MDH17"); -} -hotmenu eCAN_A_Mailbox_18_to_19_Regs() -{ - GEL_WatchAdd("*(long *)0x6064,x","eCANA LAM18"); - GEL_WatchAdd("*(long *)0x60A4,x","eCANA MOTS18"); - GEL_WatchAdd("*(long *)0x60E4,x","eCANA MOTO18"); - GEL_WatchAdd("*(long *)0x6190,x","eCANA MID18"); - GEL_WatchAdd("*(long *)0x6192,x","eCANA MCF18"); - GEL_WatchAdd("*(long *)0x6194,x","eCANA MDL18"); - GEL_WatchAdd("*(long *)0x6196,x","eCANA MDH18"); - - GEL_WatchAdd("*(long *)0x6066,x","eCANA LAM19"); - GEL_WatchAdd("*(long *)0x60A6,x","eCANA MOTS19"); - GEL_WatchAdd("*(long *)0x60E6,x","eCANA MOTO19"); - GEL_WatchAdd("*(long *)0x6198,x","eCANA MID19"); - GEL_WatchAdd("*(long *)0x619A,x","eCANA MCF19"); - GEL_WatchAdd("*(long *)0x619C,x","eCANA MDL19"); - GEL_WatchAdd("*(long *)0x619E,x","eCANA MDH19"); -} -hotmenu eCAN_A_Mailbox_20_to_21_Regs() -{ - GEL_WatchAdd("*(long *)0x6068,x","eCANA LAM20"); - GEL_WatchAdd("*(long *)0x60A8,x","eCANA MOTS20"); - GEL_WatchAdd("*(long *)0x60E8,x","eCANA MOTO20"); - GEL_WatchAdd("*(long *)0x61A0,x","eCANA MID20"); - GEL_WatchAdd("*(long *)0x61A2,x","eCANA MCF20"); - GEL_WatchAdd("*(long *)0x61A4,x","eCANA MDL20"); - GEL_WatchAdd("*(long *)0x61A6,x","eCANA MDH20"); - - GEL_WatchAdd("*(long *)0x606A,x","eCANA LAM21"); - GEL_WatchAdd("*(long *)0x60AA,x","eCANA MOTS21"); - GEL_WatchAdd("*(long *)0x60EA,x","eCANA MOTO21"); - GEL_WatchAdd("*(long *)0x61A8,x","eCANA MID21"); - GEL_WatchAdd("*(long *)0x61AA,x","eCANA MCF21"); - GEL_WatchAdd("*(long *)0x61AC,x","eCANA MDL21"); - GEL_WatchAdd("*(long *)0x61AE,x","eCANA MDH21"); -} -hotmenu eCAN_A_Mailbox_22_to_23_Regs() -{ - GEL_WatchAdd("*(long *)0x606C,x","eCANA LAM22"); - GEL_WatchAdd("*(long *)0x60AC,x","eCANA MOTS22"); - GEL_WatchAdd("*(long *)0x60EC,x","eCANA MOTO22"); - GEL_WatchAdd("*(long *)0x61B0,x","eCANA MID22"); - GEL_WatchAdd("*(long *)0x61B2,x","eCANA MCF22"); - GEL_WatchAdd("*(long *)0x61B4,x","eCANA MDL22"); - GEL_WatchAdd("*(long *)0x61B6,x","eCANA MDH22"); - - GEL_WatchAdd("*(long *)0x606E,x","eCANA LAM23"); - GEL_WatchAdd("*(long *)0x60AE,x","eCANA MOTS23"); - GEL_WatchAdd("*(long *)0x60EE,x","eCANA MOTO23"); - GEL_WatchAdd("*(long *)0x61B8,x","eCANA MID23"); - GEL_WatchAdd("*(long *)0x61BA,x","eCANA MCF23"); - GEL_WatchAdd("*(long *)0x61BC,x","eCANA MDL23"); - GEL_WatchAdd("*(long *)0x61BE,x","eCANA MDH23"); -} -hotmenu eCAN_A_Mailbox_24_to_25_Regs() -{ - GEL_WatchAdd("*(long *)0x6070,x","eCANA LAM24"); - GEL_WatchAdd("*(long *)0x60B0,x","eCANA MOTS24"); - GEL_WatchAdd("*(long *)0x60F0,x","eCANA MOTO24"); - GEL_WatchAdd("*(long *)0x61C0,x","eCANA MID24"); - GEL_WatchAdd("*(long *)0x61C2,x","eCANA MCF24"); - GEL_WatchAdd("*(long *)0x61C4,x","eCANA MDL24"); - GEL_WatchAdd("*(long *)0x61C6,x","eCANA MDH24"); - - GEL_WatchAdd("*(long *)0x6072,x","eCANA LAM25"); - GEL_WatchAdd("*(long *)0x60B2,x","eCANA MOTS25"); - GEL_WatchAdd("*(long *)0x60F2,x","eCANA MOTO25"); - GEL_WatchAdd("*(long *)0x61C8,x","eCANA MID25"); - GEL_WatchAdd("*(long *)0x61CA,x","eCANA MCF25"); - GEL_WatchAdd("*(long *)0x61CC,x","eCANA MDL25"); - GEL_WatchAdd("*(long *)0x61CE,x","eCANA MDH25"); -} -hotmenu eCAN_A_Mailbox_26_to_27_Regs() -{ - GEL_WatchAdd("*(long *)0x6074,x","eCANA LAM26"); - GEL_WatchAdd("*(long *)0x60B4,x","eCANA MOTS26"); - GEL_WatchAdd("*(long *)0x60F4,x","eCANA MOTO26"); - GEL_WatchAdd("*(long *)0x61D0,x","eCANA MID26"); - GEL_WatchAdd("*(long *)0x61D2,x","eCANA MCF26"); - GEL_WatchAdd("*(long *)0x61D4,x","eCANA MDL26"); - GEL_WatchAdd("*(long *)0x61D6,x","eCANA MDH26"); - - GEL_WatchAdd("*(long *)0x6076,x","eCANA LAM27"); - GEL_WatchAdd("*(long *)0x60B6,x","eCANA MOTS27"); - GEL_WatchAdd("*(long *)0x60F6,x","eCANA MOTO27"); - GEL_WatchAdd("*(long *)0x61D8,x","eCANA MID27"); - GEL_WatchAdd("*(long *)0x61DA,x","eCANA MCF27"); - GEL_WatchAdd("*(long *)0x61DC,x","eCANA MDL27"); - GEL_WatchAdd("*(long *)0x61DE,x","eCANA MDH27"); -} -hotmenu eCAN_A_Mailbox_28_to_29_Regs() -{ - GEL_WatchAdd("*(long *)0x6078,x","eCANA LAM28"); - GEL_WatchAdd("*(long *)0x60B8,x","eCANA MOTS28"); - GEL_WatchAdd("*(long *)0x60F8,x","eCANA MOTO28"); - GEL_WatchAdd("*(long *)0x61E0,x","eCANA MID28"); - GEL_WatchAdd("*(long *)0x61E2,x","eCANA MCF28"); - GEL_WatchAdd("*(long *)0x61E4,x","eCANA MDL28"); - GEL_WatchAdd("*(long *)0x61E6,x","eCANA MDH28"); - - GEL_WatchAdd("*(long *)0x607A,x","eCANA LAM29"); - GEL_WatchAdd("*(long *)0x60BA,x","eCANA MOTS29"); - GEL_WatchAdd("*(long *)0x60FA,x","eCANA MOTO29"); - GEL_WatchAdd("*(long *)0x61E8,x","eCANA MID29"); - GEL_WatchAdd("*(long *)0x61EA,x","eCANA MCF29"); - GEL_WatchAdd("*(long *)0x61EC,x","eCANA MDL29"); - GEL_WatchAdd("*(long *)0x61EE,x","eCANA MDH29"); -} -hotmenu eCAN_A_Mailbox_30_to_31_Regs() -{ - GEL_WatchAdd("*(long *)0x607C,x","eCANA LAM30"); - GEL_WatchAdd("*(long *)0x60BC,x","eCANA MOTS30"); - GEL_WatchAdd("*(long *)0x60FC,x","eCANA MOTO30"); - GEL_WatchAdd("*(long *)0x61F0,x","eCANA MID30"); - GEL_WatchAdd("*(long *)0x61F2,x","eCANA MCF30"); - GEL_WatchAdd("*(long *)0x61F4,x","eCANA MDL30"); - GEL_WatchAdd("*(long *)0x61F6,x","eCANA MDH30"); - - GEL_WatchAdd("*(long *)0x607E,x","eCANA LAM31"); - GEL_WatchAdd("*(long *)0x60BE,x","eCANA MOTS31"); - GEL_WatchAdd("*(long *)0x60FE,x","eCANA MOTO31"); - GEL_WatchAdd("*(long *)0x61F8,x","eCANA MID31"); - GEL_WatchAdd("*(long *)0x61FA,x","eCANA MCF31"); - GEL_WatchAdd("*(long *)0x61FC,x","eCANA MDL31"); - GEL_WatchAdd("*(long *)0x61FE,x","eCANA MDH31"); -} -hotmenu eCAN_B_Global_Regs() -{ - GEL_WatchAdd("*(long *)0x6200,x","eCANB CANME"); - GEL_WatchAdd("*(long *)0x6202,x","eCANB CANMD"); - GEL_WatchAdd("*(long *)0x6204,x","eCANB CANTRS"); - GEL_WatchAdd("*(long *)0x6206,x","eCANB CANTRR"); - GEL_WatchAdd("*(long *)0x6208,x","eCANB CANTA"); - GEL_WatchAdd("*(long *)0x620A,x","eCANB CANAA"); - GEL_WatchAdd("*(long *)0x620C,x","eCANB CANRMP"); - GEL_WatchAdd("*(long *)0x620E,x","eCANB CANRML"); - GEL_WatchAdd("*(long *)0x6210,x","eCANB CANRFP"); - GEL_WatchAdd("*(long *)0x6214,x","eCANB CANMC"); - GEL_WatchAdd("*(long *)0x6216,x","eCANB CANBTC"); - GEL_WatchAdd("*(long *)0x6218,x","eCANB CANES"); - GEL_WatchAdd("*(long *)0x621A,x","eCANB CANTEC"); - GEL_WatchAdd("*(long *)0x621C,x","eCANB CANREC"); - GEL_WatchAdd("*(long *)0x621E,x","eCANB CANGIF0"); - GEL_WatchAdd("*(long *)0x6220,x","eCANB CANGIM"); - GEL_WatchAdd("*(long *)0x6222,x","eCANB CANGIF1"); - GEL_WatchAdd("*(long *)0x6224,x","eCANB CANMIM"); - GEL_WatchAdd("*(long *)0x6226,x","eCANB CANMIL"); - GEL_WatchAdd("*(long *)0x6228,x","eCANB CANOPC"); - GEL_WatchAdd("*(long *)0x622A,x","eCANB CANTIOC"); - GEL_WatchAdd("*(long *)0x622C,x","eCANB CANRIOC"); - GEL_WatchAdd("*(long *)0x622E,x","eCANB CANLNT"); - GEL_WatchAdd("*(long *)0x6230,x","eCANB CANTOC"); - GEL_WatchAdd("*(long *)0x6232,x","eCANB CANTOS"); -} -hotmenu eCAN_B_Mailbox_0_to_1_Regs() -{ - GEL_WatchAdd("*(long *)0x6240,x","eCANB LAM0"); - GEL_WatchAdd("*(long *)0x6280,x","eCANB MOTS0"); - GEL_WatchAdd("*(long *)0x62C0,x","eCANB MOTO0"); - GEL_WatchAdd("*(long *)0x6300,x","eCANB MID0"); - GEL_WatchAdd("*(long *)0x6302,x","eCANB MCF0"); - GEL_WatchAdd("*(long *)0x6304,x","eCANB MDL0"); - GEL_WatchAdd("*(long *)0x6306,x","eCANB MDH0"); - - GEL_WatchAdd("*(long *)0x6242,x","eCANB LAM1"); - GEL_WatchAdd("*(long *)0x6282,x","eCANB MOTS1"); - GEL_WatchAdd("*(long *)0x62C2,x","eCANB MOTO1"); - GEL_WatchAdd("*(long *)0x6308,x","eCANB MID1"); - GEL_WatchAdd("*(long *)0x630A,x","eCANB MCF1"); - GEL_WatchAdd("*(long *)0x630C,x","eCANB MDL1"); - GEL_WatchAdd("*(long *)0x630E,x","eCANB MDH1"); -} -hotmenu eCAN_B_Mailbox_2_to_3_Regs() -{ - GEL_WatchAdd("*(long *)0x6244,x","eCANB LAM2"); - GEL_WatchAdd("*(long *)0x6284,x","eCANB MOTS2"); - GEL_WatchAdd("*(long *)0x62C4,x","eCANB MOTO2"); - GEL_WatchAdd("*(long *)0x6310,x","eCANB MID2"); - GEL_WatchAdd("*(long *)0x6312,x","eCANB MCF2"); - GEL_WatchAdd("*(long *)0x6314,x","eCANB MDL2"); - GEL_WatchAdd("*(long *)0x6316,x","eCANB MDH2"); - - GEL_WatchAdd("*(long *)0x6246,x","eCANB LAM3"); - GEL_WatchAdd("*(long *)0x6286,x","eCANB MOTS3"); - GEL_WatchAdd("*(long *)0x62C6,x","eCANB MOTO3"); - GEL_WatchAdd("*(long *)0x6318,x","eCANB MID3"); - GEL_WatchAdd("*(long *)0x631A,x","eCANB MCF3"); - GEL_WatchAdd("*(long *)0x631C,x","eCANB MDL3"); - GEL_WatchAdd("*(long *)0x631E,x","eCANB MDH3"); -} -hotmenu eCAN_B_Mailbox_4_to_5_Regs() -{ - GEL_WatchAdd("*(long *)0x6248,x","eCANB LAM4"); - GEL_WatchAdd("*(long *)0x6288,x","eCANB MOTS4"); - GEL_WatchAdd("*(long *)0x62C8,x","eCANB MOTO4"); - GEL_WatchAdd("*(long *)0x6320,x","eCANB MID4"); - GEL_WatchAdd("*(long *)0x6322,x","eCANB MCF4"); - GEL_WatchAdd("*(long *)0x6324,x","eCANB MDL4"); - GEL_WatchAdd("*(long *)0x6326,x","eCANB MDH4"); - - GEL_WatchAdd("*(long *)0x624A,x","eCANB LAM5"); - GEL_WatchAdd("*(long *)0x628A,x","eCANB MOTS5"); - GEL_WatchAdd("*(long *)0x62CA,x","eCANB MOTO5"); - GEL_WatchAdd("*(long *)0x6328,x","eCANB MID5"); - GEL_WatchAdd("*(long *)0x632A,x","eCANB MCF5"); - GEL_WatchAdd("*(long *)0x632C,x","eCANB MDL5"); - GEL_WatchAdd("*(long *)0x632E,x","eCANB MDH5"); -} -hotmenu eCAN_B_Mailbox_6_to_7_Regs() -{ - GEL_WatchAdd("*(long *)0x624C,x","eCANB LAM6"); - GEL_WatchAdd("*(long *)0x628C,x","eCANB MOTS6"); - GEL_WatchAdd("*(long *)0x62CC,x","eCANB MOTO6"); - GEL_WatchAdd("*(long *)0x6330,x","eCANB MID6"); - GEL_WatchAdd("*(long *)0x6332,x","eCANB MCF6"); - GEL_WatchAdd("*(long *)0x6334,x","eCANB MDL6"); - GEL_WatchAdd("*(long *)0x6336,x","eCANB MDH6"); - - GEL_WatchAdd("*(long *)0x624E,x","eCANB LAM7"); - GEL_WatchAdd("*(long *)0x628E,x","eCANB MOTS7"); - GEL_WatchAdd("*(long *)0x62CE,x","eCANB MOTO7"); - GEL_WatchAdd("*(long *)0x6338,x","eCANB MID7"); - GEL_WatchAdd("*(long *)0x633A,x","eCANB MCF7"); - GEL_WatchAdd("*(long *)0x633C,x","eCANB MDL7"); - GEL_WatchAdd("*(long *)0x633E,x","eCANB MDH7"); -} -hotmenu eCAN_B_Mailbox_8_to_9_Regs() -{ - GEL_WatchAdd("*(long *)0x6250,x","eCANB LAM8"); - GEL_WatchAdd("*(long *)0x6290,x","eCANB MOTS8"); - GEL_WatchAdd("*(long *)0x62D0,x","eCANB MOTO8"); - GEL_WatchAdd("*(long *)0x6340,x","eCANB MID8"); - GEL_WatchAdd("*(long *)0x6342,x","eCANB MCF8"); - GEL_WatchAdd("*(long *)0x6344,x","eCANB MDL8"); - GEL_WatchAdd("*(long *)0x6346,x","eCANB MDH8"); - - GEL_WatchAdd("*(long *)0x6252,x","eCANB LAM9"); - GEL_WatchAdd("*(long *)0x6292,x","eCANB MOTS9"); - GEL_WatchAdd("*(long *)0x62D2,x","eCANB MOTO9"); - GEL_WatchAdd("*(long *)0x6348,x","eCANB MID9"); - GEL_WatchAdd("*(long *)0x634A,x","eCANB MCF9"); - GEL_WatchAdd("*(long *)0x634C,x","eCANB MDL9"); - GEL_WatchAdd("*(long *)0x634E,x","eCANB MDH9"); -} -hotmenu eCAN_B_Mailbox_10_to_11_Regs() -{ - GEL_WatchAdd("*(long *)0x6254,x","eCANB LAM10"); - GEL_WatchAdd("*(long *)0x6294,x","eCANB MOTS10"); - GEL_WatchAdd("*(long *)0x62D4,x","eCANB MOTO10"); - GEL_WatchAdd("*(long *)0x6350,x","eCANB MID10"); - GEL_WatchAdd("*(long *)0x6352,x","eCANB MCF10"); - GEL_WatchAdd("*(long *)0x6354,x","eCANB MDL10"); - GEL_WatchAdd("*(long *)0x6356,x","eCANB MDH10"); - - GEL_WatchAdd("*(long *)0x6256,x","eCANB LAM11"); - GEL_WatchAdd("*(long *)0x6296,x","eCANB MOTS11"); - GEL_WatchAdd("*(long *)0x62D6,x","eCANB MOTO11"); - GEL_WatchAdd("*(long *)0x6358,x","eCANB MID11"); - GEL_WatchAdd("*(long *)0x635A,x","eCANB MCF11"); - GEL_WatchAdd("*(long *)0x635C,x","eCANB MDL11"); - GEL_WatchAdd("*(long *)0x635E,x","eCANB MDH11"); -} -hotmenu eCAN_B_Mailbox_12_to_13_Regs() -{ - GEL_WatchAdd("*(long *)0x6258,x","eCANB LAM12"); - GEL_WatchAdd("*(long *)0x6298,x","eCANB MOTS12"); - GEL_WatchAdd("*(long *)0x62D8,x","eCANB MOTO12"); - GEL_WatchAdd("*(long *)0x6360,x","eCANB MID12"); - GEL_WatchAdd("*(long *)0x6362,x","eCANB MCF12"); - GEL_WatchAdd("*(long *)0x6364,x","eCANB MDL12"); - GEL_WatchAdd("*(long *)0x6366,x","eCANB MDH12"); - - GEL_WatchAdd("*(long *)0x625A,x","eCANB LAM13"); - GEL_WatchAdd("*(long *)0x629A,x","eCANB MOTS13"); - GEL_WatchAdd("*(long *)0x62DA,x","eCANB MOTO13"); - GEL_WatchAdd("*(long *)0x6368,x","eCANB MID13"); - GEL_WatchAdd("*(long *)0x636A,x","eCANB MCF13"); - GEL_WatchAdd("*(long *)0x636C,x","eCANB MDL13"); - GEL_WatchAdd("*(long *)0x636E,x","eCANB MDH13"); -} -hotmenu eCAN_B_Mailbox_14_to_15_Regs() -{ - GEL_WatchAdd("*(long *)0x625C,x","eCANB LAM14"); - GEL_WatchAdd("*(long *)0x629C,x","eCANB MOTS14"); - GEL_WatchAdd("*(long *)0x62DC,x","eCANB MOTO14"); - GEL_WatchAdd("*(long *)0x6370,x","eCANB MID14"); - GEL_WatchAdd("*(long *)0x6372,x","eCANB MCF14"); - GEL_WatchAdd("*(long *)0x6374,x","eCANB MDL14"); - GEL_WatchAdd("*(long *)0x6376,x","eCANB MDH14"); - - GEL_WatchAdd("*(long *)0x625E,x","eCANB LAM15"); - GEL_WatchAdd("*(long *)0x629E,x","eCANB MOTS15"); - GEL_WatchAdd("*(long *)0x62DE,x","eCANB MOTO15"); - GEL_WatchAdd("*(long *)0x6378,x","eCANB MID15"); - GEL_WatchAdd("*(long *)0x637A,x","eCANB MCF15"); - GEL_WatchAdd("*(long *)0x637C,x","eCANB MDL15"); - GEL_WatchAdd("*(long *)0x637E,x","eCANB MDH15"); -} -hotmenu eCAN_B_Mailbox_16_to_17_Regs() -{ - GEL_WatchAdd("*(long *)0x6260,x","eCANB LAM16"); - GEL_WatchAdd("*(long *)0x62A0,x","eCANB MOTS16"); - GEL_WatchAdd("*(long *)0x62E0,x","eCANB MOTO16"); - GEL_WatchAdd("*(long *)0x6380,x","eCANB MID16"); - GEL_WatchAdd("*(long *)0x6382,x","eCANB MCF16"); - GEL_WatchAdd("*(long *)0x6384,x","eCANB MDL16"); - GEL_WatchAdd("*(long *)0x6386,x","eCANB MDH16"); - - GEL_WatchAdd("*(long *)0x6262,x","eCANB LAM17"); - GEL_WatchAdd("*(long *)0x62A2,x","eCANB MOTS17"); - GEL_WatchAdd("*(long *)0x62E2,x","eCANB MOTO17"); - GEL_WatchAdd("*(long *)0x6388,x","eCANB MID17"); - GEL_WatchAdd("*(long *)0x638A,x","eCANB MCF17"); - GEL_WatchAdd("*(long *)0x638C,x","eCANB MDL17"); - GEL_WatchAdd("*(long *)0x638E,x","eCANB MDH17"); -} -hotmenu eCAN_B_Mailbox_18_to_19_Regs() -{ - GEL_WatchAdd("*(long *)0x6264,x","eCANB LAM18"); - GEL_WatchAdd("*(long *)0x62A4,x","eCANB MOTS18"); - GEL_WatchAdd("*(long *)0x62E4,x","eCANB MOTO18"); - GEL_WatchAdd("*(long *)0x6390,x","eCANB MID18"); - GEL_WatchAdd("*(long *)0x6392,x","eCANB MCF18"); - GEL_WatchAdd("*(long *)0x6394,x","eCANB MDL18"); - GEL_WatchAdd("*(long *)0x6396,x","eCANB MDH18"); - - GEL_WatchAdd("*(long *)0x6266,x","eCANB LAM19"); - GEL_WatchAdd("*(long *)0x62A6,x","eCANB MOTS19"); - GEL_WatchAdd("*(long *)0x62E6,x","eCANB MOTO19"); - GEL_WatchAdd("*(long *)0x6398,x","eCANB MID19"); - GEL_WatchAdd("*(long *)0x639A,x","eCANB MCF19"); - GEL_WatchAdd("*(long *)0x639C,x","eCANB MDL19"); - GEL_WatchAdd("*(long *)0x639E,x","eCANB MDH19"); -} -hotmenu eCAN_B_Mailbox_20_to_21_Regs() -{ - GEL_WatchAdd("*(long *)0x6268,x","eCANB LAM20"); - GEL_WatchAdd("*(long *)0x62A8,x","eCANB MOTS20"); - GEL_WatchAdd("*(long *)0x62E8,x","eCANB MOTO20"); - GEL_WatchAdd("*(long *)0x63A0,x","eCANB MID20"); - GEL_WatchAdd("*(long *)0x63A2,x","eCANB MCF20"); - GEL_WatchAdd("*(long *)0x63A4,x","eCANB MDL20"); - GEL_WatchAdd("*(long *)0x63A6,x","eCANB MDH20"); - - GEL_WatchAdd("*(long *)0x626A,x","eCANB LAM21"); - GEL_WatchAdd("*(long *)0x62AA,x","eCANB MOTS21"); - GEL_WatchAdd("*(long *)0x62EA,x","eCANB MOTO21"); - GEL_WatchAdd("*(long *)0x63A8,x","eCANB MID21"); - GEL_WatchAdd("*(long *)0x63AA,x","eCANB MCF21"); - GEL_WatchAdd("*(long *)0x63AC,x","eCANB MDL21"); - GEL_WatchAdd("*(long *)0x63AE,x","eCANB MDH21"); -} -hotmenu eCAN_B_Mailbox_22_to_23_Regs() -{ - GEL_WatchAdd("*(long *)0x626C,x","eCANB LAM22"); - GEL_WatchAdd("*(long *)0x62AC,x","eCANB MOTS22"); - GEL_WatchAdd("*(long *)0x62EC,x","eCANB MOTO22"); - GEL_WatchAdd("*(long *)0x63B0,x","eCANB MID22"); - GEL_WatchAdd("*(long *)0x63B2,x","eCANB MCF22"); - GEL_WatchAdd("*(long *)0x63B4,x","eCANB MDL22"); - GEL_WatchAdd("*(long *)0x63B6,x","eCANB MDH22"); - - GEL_WatchAdd("*(long *)0x626E,x","eCANB LAM23"); - GEL_WatchAdd("*(long *)0x62AE,x","eCANB MOTS23"); - GEL_WatchAdd("*(long *)0x62EE,x","eCANB MOTO23"); - GEL_WatchAdd("*(long *)0x63B8,x","eCANB MID23"); - GEL_WatchAdd("*(long *)0x63BA,x","eCANB MCF23"); - GEL_WatchAdd("*(long *)0x63BC,x","eCANB MDL23"); - GEL_WatchAdd("*(long *)0x63BE,x","eCANB MDH23"); -} -hotmenu eCAN_B_Mailbox_24_to_25_Regs() -{ - GEL_WatchAdd("*(long *)0x6270,x","eCANB LAM24"); - GEL_WatchAdd("*(long *)0x62B0,x","eCANB MOTS24"); - GEL_WatchAdd("*(long *)0x62F0,x","eCANB MOTO24"); - GEL_WatchAdd("*(long *)0x63C0,x","eCANB MID24"); - GEL_WatchAdd("*(long *)0x63C2,x","eCANB MCF24"); - GEL_WatchAdd("*(long *)0x63C4,x","eCANB MDL24"); - GEL_WatchAdd("*(long *)0x63C6,x","eCANB MDH24"); - - GEL_WatchAdd("*(long *)0x6272,x","eCANB LAM25"); - GEL_WatchAdd("*(long *)0x62B2,x","eCANB MOTS25"); - GEL_WatchAdd("*(long *)0x62F2,x","eCANB MOTO25"); - GEL_WatchAdd("*(long *)0x63C8,x","eCANB MID25"); - GEL_WatchAdd("*(long *)0x63CA,x","eCANB MCF25"); - GEL_WatchAdd("*(long *)0x63CC,x","eCANB MDL25"); - GEL_WatchAdd("*(long *)0x63CE,x","eCANB MDH25"); -} -hotmenu eCAN_B_Mailbox_26_to_27_Regs() -{ - GEL_WatchAdd("*(long *)0x6274,x","eCANB LAM26"); - GEL_WatchAdd("*(long *)0x62B4,x","eCANB MOTS26"); - GEL_WatchAdd("*(long *)0x62F4,x","eCANB MOTO26"); - GEL_WatchAdd("*(long *)0x63D0,x","eCANB MID26"); - GEL_WatchAdd("*(long *)0x63D2,x","eCANB MCF26"); - GEL_WatchAdd("*(long *)0x63D4,x","eCANB MDL26"); - GEL_WatchAdd("*(long *)0x63D6,x","eCANB MDH26"); - - GEL_WatchAdd("*(long *)0x6276,x","eCANB LAM27"); - GEL_WatchAdd("*(long *)0x62B6,x","eCANB MOTS27"); - GEL_WatchAdd("*(long *)0x62F6,x","eCANB MOTO27"); - GEL_WatchAdd("*(long *)0x63D8,x","eCANB MID27"); - GEL_WatchAdd("*(long *)0x63DA,x","eCANB MCF27"); - GEL_WatchAdd("*(long *)0x63DC,x","eCANB MDL27"); - GEL_WatchAdd("*(long *)0x63DE,x","eCANB MDH27"); -} -hotmenu eCAN_B_Mailbox_28_to_29_Regs() -{ - GEL_WatchAdd("*(long *)0x6278,x","eCANB LAM28"); - GEL_WatchAdd("*(long *)0x62B8,x","eCANB MOTS28"); - GEL_WatchAdd("*(long *)0x62F8,x","eCANB MOTO28"); - GEL_WatchAdd("*(long *)0x63E0,x","eCANB MID28"); - GEL_WatchAdd("*(long *)0x63E2,x","eCANB MCF28"); - GEL_WatchAdd("*(long *)0x63E4,x","eCANB MDL28"); - GEL_WatchAdd("*(long *)0x63E6,x","eCANB MDH28"); - - GEL_WatchAdd("*(long *)0x627A,x","eCANB LAM29"); - GEL_WatchAdd("*(long *)0x62BA,x","eCANB MOTS29"); - GEL_WatchAdd("*(long *)0x62FA,x","eCANB MOTO29"); - GEL_WatchAdd("*(long *)0x63E8,x","eCANB MID29"); - GEL_WatchAdd("*(long *)0x63EA,x","eCANB MCF29"); - GEL_WatchAdd("*(long *)0x63EC,x","eCANB MDL29"); - GEL_WatchAdd("*(long *)0x63EE,x","eCANB MDH29"); -} -hotmenu eCAN_B_Mailbox_30_to_31_Regs() -{ - GEL_WatchAdd("*(long *)0x627C,x","eCANB LAM30"); - GEL_WatchAdd("*(long *)0x62BC,x","eCANB MOTS30"); - GEL_WatchAdd("*(long *)0x62FC,x","eCANB MOTO30"); - GEL_WatchAdd("*(long *)0x63F0,x","eCANB MID30"); - GEL_WatchAdd("*(long *)0x63F2,x","eCANB MCF30"); - GEL_WatchAdd("*(long *)0x63F4,x","eCANB MDL30"); - GEL_WatchAdd("*(long *)0x63F6,x","eCANB MDH30"); - - GEL_WatchAdd("*(long *)0x627E,x","eCANB LAM31"); - GEL_WatchAdd("*(long *)0x62BE,x","eCANB MOTS31"); - GEL_WatchAdd("*(long *)0x62FE,x","eCANB MOTO31"); - GEL_WatchAdd("*(long *)0x63F8,x","eCANB MID31"); - GEL_WatchAdd("*(long *)0x63FA,x","eCANB MCF31"); - GEL_WatchAdd("*(long *)0x63FC,x","eCANB MDL31"); - GEL_WatchAdd("*(long *)0x63FE,x","eCANB MDH31"); -} - - -/********************************************************************/ -/* Enhanced Capture Registers */ -/********************************************************************/ -menuitem "Watch eCAP Registers"; - -hotmenu eCAP1_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6A00,x","eCAP1 TSCNT"); - GEL_WatchAdd("*(long *)0x6A02,x","eCAP1 CNTPHS"); - GEL_WatchAdd("*(long *)0x6A04,x","eCAP1 CAP1"); - GEL_WatchAdd("*(long *)0x6A06,x","eCAP1 CAP2"); - GEL_WatchAdd("*(long *)0x6A08,x","eCAP1 CAP3"); - GEL_WatchAdd("*(long *)0x6A0A,x","eCAP1 CAP4"); - GEL_WatchAdd("*0x6A14,x","eCAP1 ECCTL1"); - GEL_WatchAdd("*0x6A15,x","eCAP1 ECCTL2"); - GEL_WatchAdd("*0x6A16,x","eCAP1 ECEINT"); - GEL_WatchAdd("*0x6A17,x","eCAP1 ECFLG"); - GEL_WatchAdd("*0x6A18,x","eCAP1 ECCLR"); - GEL_WatchAdd("*0x6A19,x","eCAP1 ECFRC"); -} -hotmenu eCAP2_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6A20,x","eCAP2 TSCNT"); - GEL_WatchAdd("*(long *)0x6A22,x","eCAP2 CNTPHS"); - GEL_WatchAdd("*(long *)0x6A24,x","eCAP2 CAP1"); - GEL_WatchAdd("*(long *)0x6A26,x","eCAP2 CAP2"); - GEL_WatchAdd("*(long *)0x6A28,x","eCAP2 CAP3"); - GEL_WatchAdd("*(long *)0x6A2A,x","eCAP2 CAP4"); - GEL_WatchAdd("*0x6A34,x","eCAP2 ECCTL1"); - GEL_WatchAdd("*0x6A35,x","eCAP2 ECCTL2"); - GEL_WatchAdd("*0x6A36,x","eCAP2 ECEINT"); - GEL_WatchAdd("*0x6A37,x","eCAP2 ECFLG"); - GEL_WatchAdd("*0x6A38,x","eCAP2 ECCLR"); - GEL_WatchAdd("*0x6A39,x","eCAP2 ECFRC"); -} -hotmenu eCAP3_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6A40,x","eCAP3 TSCNT"); - GEL_WatchAdd("*(long *)0x6A42,x","eCAP3 CNTPHS"); - GEL_WatchAdd("*(long *)0x6A44,x","eCAP3 CAP1"); - GEL_WatchAdd("*(long *)0x6A46,x","eCAP3 CAP2"); - GEL_WatchAdd("*(long *)0x6A48,x","eCAP3 CAP3"); - GEL_WatchAdd("*(long *)0x6A4A,x","eCAP3 CAP4"); - GEL_WatchAdd("*0x6A54,x","eCAP3 ECCTL1"); - GEL_WatchAdd("*0x6A55,x","eCAP3 ECCTL2"); - GEL_WatchAdd("*0x6A56,x","eCAP3 ECEINT"); - GEL_WatchAdd("*0x6A57,x","eCAP3 ECFLG"); - GEL_WatchAdd("*0x6A58,x","eCAP3 ECCLR"); - GEL_WatchAdd("*0x6A59,x","eCAP3 ECFRC"); -} -hotmenu eCAP4_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6A60,x","eCAP4 TSCNT"); - GEL_WatchAdd("*(long *)0x6A62,x","eCAP4 CNTPHS"); - GEL_WatchAdd("*(long *)0x6A64,x","eCAP4 CAP1"); - GEL_WatchAdd("*(long *)0x6A66,x","eCAP4 CAP2"); - GEL_WatchAdd("*(long *)0x6A68,x","eCAP4 CAP3"); - GEL_WatchAdd("*(long *)0x6A6A,x","eCAP4 CAP4"); - GEL_WatchAdd("*0x6A74,x","eCAP4 ECCTL1"); - GEL_WatchAdd("*0x6A75,x","eCAP4 ECCTL2"); - GEL_WatchAdd("*0x6A76,x","eCAP4 ECEINT"); - GEL_WatchAdd("*0x6A77,x","eCAP4 ECFLG"); - GEL_WatchAdd("*0x6A78,x","eCAP4 ECCLR"); - GEL_WatchAdd("*0x6A79,x","eCAP4 ECFRC"); -} - -/********************************************************************/ -/* Enhanced PWM Registers */ -/********************************************************************/ -menuitem "Watch ePWM Registers"; - -hotmenu ePWM1_All_Regs() -{ - GEL_WatchAdd("*0x6800,x","ePWM1 TBCTL"); - GEL_WatchAdd("*0x6801,x","ePWM1 TBSTS"); - GEL_WatchAdd("*0x6802,x","ePWM1 TBPHSHR"); - GEL_WatchAdd("*0x6803,x","ePWM1 TBPHS"); - GEL_WatchAdd("*0x6804,x","ePWM1 TBCTR"); - GEL_WatchAdd("*0x6805,x","ePWM1 TBPRD"); - GEL_WatchAdd("*0x6807,x","ePWM1 CMPCTL"); - GEL_WatchAdd("*0x6808,x","ePWM1 CMPAHR"); - GEL_WatchAdd("*0x6809,x","ePWM1 CMPA"); - GEL_WatchAdd("*0x680A,x","ePWM1 CMPB"); - GEL_WatchAdd("*0x680B,x","ePWM1 AQCTLA"); - GEL_WatchAdd("*0x680C,x","ePWM1 AQCTLB"); - GEL_WatchAdd("*0x680D,x","ePWM1 AQSFRC"); - GEL_WatchAdd("*0x680E,x","ePWM1 AQCSFRC"); - GEL_WatchAdd("*0x680F,x","ePWM1 DBCTL"); - GEL_WatchAdd("*0x6810,x","ePWM1 DBRED"); - GEL_WatchAdd("*0x6811,x","ePWM1 DBFED"); - GEL_WatchAdd("*0x6812,x","ePWM1 TZSEL"); - GEL_WatchAdd("*0x6813,x","ePWM1 TZDCSEL"); - GEL_WatchAdd("*0x6814,x","ePWM1 TZCTL"); - GEL_WatchAdd("*0x6815,x","ePWM1 TZEINT"); - GEL_WatchAdd("*0x6816,x","ePWM1 TZFLG"); - GEL_WatchAdd("*0x6817,x","ePWM1 TZCLR"); - GEL_WatchAdd("*0x6818,x","ePWM1 TZFRC"); - GEL_WatchAdd("*0x6819,x","ePWM1 ETSEL"); - GEL_WatchAdd("*0x681A,x","ePWM1 ETPS"); - GEL_WatchAdd("*0x681B,x","ePWM1 ETFLG"); - GEL_WatchAdd("*0x681C,x","ePWM1 ETCLR"); - GEL_WatchAdd("*0x681D,x","ePWM1 ETFRC"); - GEL_WatchAdd("*0x681E,x","ePWM1 PCCTL"); - GEL_WatchAdd("*0x6820,x","ePWM1 HRCNFG"); -} -hotmenu ePWM1_TB_Regs() -{ - GEL_WatchAdd("*0x6800,x","ePWM1 TBCTL"); - GEL_WatchAdd("*0x6801,x","ePWM1 TBSTS"); - GEL_WatchAdd("*0x6802,x","ePWM1 TBPHSHR"); - GEL_WatchAdd("*0x6803,x","ePWM1 TBPHS"); - GEL_WatchAdd("*0x6804,x","ePWM1 TBCTR"); - GEL_WatchAdd("*0x6805,x","ePWM1 TBPRD"); -} -hotmenu ePWM1_CMP_Regs() -{ - GEL_WatchAdd("*0x6807,x","ePWM1 CMPCTL"); - GEL_WatchAdd("*0x6808,x","ePWM1 CMPAHR"); - GEL_WatchAdd("*0x6809,x","ePWM1 CMPA"); - GEL_WatchAdd("*0x680A,x","ePWM1 CMPB"); -} -hotmenu ePWM1_AQ_Regs() -{ - GEL_WatchAdd("*0x680B,x","ePWM1 AQCTLA"); - GEL_WatchAdd("*0x680C,x","ePWM1 AQCTLB"); - GEL_WatchAdd("*0x680D,x","ePWM1 AQSFRC"); - GEL_WatchAdd("*0x680E,x","ePWM1 AQCSFRC"); -} -hotmenu ePWM1_DB_Regs() -{ - GEL_WatchAdd("*0x680F,x","ePWM1 DBCTL"); - GEL_WatchAdd("*0x6810,x","ePWM1 DBRED"); - GEL_WatchAdd("*0x6811,x","ePWM1 DBFED"); -} -hotmenu ePWM1_TZ_Regs() -{ - GEL_WatchAdd("*0x6812,x","ePWM1 TZSEL"); - GEL_WatchAdd("*0x6814,x","ePWM1 TZCTL"); - GEL_WatchAdd("*0x6815,x","ePWM1 TZEINT"); - GEL_WatchAdd("*0x6816,x","ePWM1 TZFLG"); - GEL_WatchAdd("*0x6817,x","ePWM1 TZCLR"); - GEL_WatchAdd("*0x6818,x","ePWM1 TZFRC"); -} -hotmenu ePWM1_ET_Regs() -{ - GEL_WatchAdd("*0x6819,x","ePWM1 ETSEL"); - GEL_WatchAdd("*0x681A,x","ePWM1 ETPS"); - GEL_WatchAdd("*0x681B,x","ePWM1 ETFLG"); - GEL_WatchAdd("*0x681C,x","ePWM1 ETCLR"); - GEL_WatchAdd("*0x681D,x","ePWM1 ETFRC"); -} -hotmenu ePWM2_All_Regs() -{ - GEL_WatchAdd("*0x6840,x","ePWM2 TBCTL"); - GEL_WatchAdd("*0x6841,x","ePWM2 TBSTS"); - GEL_WatchAdd("*0x6842,x","ePWM2 TBPHSHR"); - GEL_WatchAdd("*0x6843,x","ePWM2 TBPHS"); - GEL_WatchAdd("*0x6844,x","ePWM2 TBCTR"); - GEL_WatchAdd("*0x6845,x","ePWM2 TBPRD"); - GEL_WatchAdd("*0x6847,x","ePWM2 CMPCTL"); - GEL_WatchAdd("*0x6848,x","ePWM2 CMPAHR"); - GEL_WatchAdd("*0x6849,x","ePWM2 CMPA"); - GEL_WatchAdd("*0x684A,x","ePWM2 CMPB"); - GEL_WatchAdd("*0x684B,x","ePWM2 AQCTLA"); - GEL_WatchAdd("*0x684C,x","ePWM2 AQCTLB"); - GEL_WatchAdd("*0x684D,x","ePWM2 AQSFRC"); - GEL_WatchAdd("*0x684E,x","ePWM2 AQCSFRC"); - GEL_WatchAdd("*0x684F,x","ePWM2 DBCTL"); - GEL_WatchAdd("*0x6850,x","ePWM2 DBRED"); - GEL_WatchAdd("*0x6851,x","ePWM2 DBFED"); - GEL_WatchAdd("*0x6852,x","ePWM2 TZSEL"); - GEL_WatchAdd("*0x6853,x","ePWM2 TZDCSEL"); - GEL_WatchAdd("*0x6854,x","ePWM2 TZCTL"); - GEL_WatchAdd("*0x6855,x","ePWM2 TZEINT"); - GEL_WatchAdd("*0x6856,x","ePWM2 TZFLG"); - GEL_WatchAdd("*0x6857,x","ePWM2 TZCLR"); - GEL_WatchAdd("*0x6858,x","ePWM2 TZFRC"); - GEL_WatchAdd("*0x6859,x","ePWM2 ETSEL"); - GEL_WatchAdd("*0x685A,x","ePWM2 ETPS"); - GEL_WatchAdd("*0x685B,x","ePWM2 ETFLG"); - GEL_WatchAdd("*0x685C,x","ePWM2 ETCLR"); - GEL_WatchAdd("*0x685D,x","ePWM2 ETFRC"); - GEL_WatchAdd("*0x685E,x","ePWM2 PCCTL"); - GEL_WatchAdd("*0x6860,x","ePWM2 HRCNFG"); -} -hotmenu ePWM2_TB_Regs() -{ - GEL_WatchAdd("*0x6840,x","ePWM2 TBCTL"); - GEL_WatchAdd("*0x6841,x","ePWM2 TBSTS"); - GEL_WatchAdd("*0x6842,x","ePWM2 TBPHSHR"); - GEL_WatchAdd("*0x6843,x","ePWM2 TBPHS"); - GEL_WatchAdd("*0x6844,x","ePWM2 TBCTR"); - GEL_WatchAdd("*0x6845,x","ePWM2 TBPRD"); -} -hotmenu ePWM2_CMP_Regs() -{ - GEL_WatchAdd("*0x6847,x","ePWM2 CMPCTL"); - GEL_WatchAdd("*0x6848,x","ePWM2 CMPAHR"); - GEL_WatchAdd("*0x6849,x","ePWM2 CMPA"); - GEL_WatchAdd("*0x684A,x","ePWM2 CMPB"); -} -hotmenu ePWM2_AQ_Regs() -{ - GEL_WatchAdd("*0x684B,x","ePWM2 AQCTLA"); - GEL_WatchAdd("*0x684C,x","ePWM2 AQCTLB"); - GEL_WatchAdd("*0x684D,x","ePWM2 AQSFRC"); - GEL_WatchAdd("*0x684E,x","ePWM2 AQCSFRC"); -} -hotmenu ePWM2_DB_Regs() -{ - GEL_WatchAdd("*0x684F,x","ePWM2 DBCTL"); - GEL_WatchAdd("*0x6850,x","ePWM2 DBRED"); - GEL_WatchAdd("*0x6851,x","ePWM2 DBFED"); -} -hotmenu ePWM2_TZ_Regs() -{ - GEL_WatchAdd("*0x6852,x","ePWM2 TZSEL"); - GEL_WatchAdd("*0x6854,x","ePWM2 TZCTL"); - GEL_WatchAdd("*0x6855,x","ePWM2 TZEINT"); - GEL_WatchAdd("*0x6856,x","ePWM2 TZFLG"); - GEL_WatchAdd("*0x6857,x","ePWM2 TZCLR"); - GEL_WatchAdd("*0x6858,x","ePWM2 TZFRC"); -} -hotmenu ePWM2_ET_Regs() -{ - GEL_WatchAdd("*0x6859,x","ePWM2 ETSEL"); - GEL_WatchAdd("*0x685A,x","ePWM2 ETPS"); - GEL_WatchAdd("*0x685B,x","ePWM2 ETFLG"); - GEL_WatchAdd("*0x685C,x","ePWM2 ETCLR"); - GEL_WatchAdd("*0x685D,x","ePWM2 ETFRC"); -} -hotmenu ePWM3_All_Regs() -{ - GEL_WatchAdd("*0x6880,x","ePWM3 TBCTL"); - GEL_WatchAdd("*0x6881,x","ePWM3 TBSTS"); - GEL_WatchAdd("*0x6882,x","ePWM3 TBPHSHR"); - GEL_WatchAdd("*0x6883,x","ePWM3 TBPHS"); - GEL_WatchAdd("*0x6884,x","ePWM3 TBCTR"); - GEL_WatchAdd("*0x6885,x","ePWM3 TBPRD"); - GEL_WatchAdd("*0x6887,x","ePWM3 CMPCTL"); - GEL_WatchAdd("*0x6888,x","ePWM3 CMPAHR"); - GEL_WatchAdd("*0x6889,x","ePWM3 CMPA"); - GEL_WatchAdd("*0x688A,x","ePWM3 CMPB"); - GEL_WatchAdd("*0x688B,x","ePWM3 AQCTLA"); - GEL_WatchAdd("*0x688C,x","ePWM3 AQCTLB"); - GEL_WatchAdd("*0x688D,x","ePWM3 AQSFRC"); - GEL_WatchAdd("*0x688E,x","ePWM3 AQCSFRC"); - GEL_WatchAdd("*0x688F,x","ePWM3 DBCTL"); - GEL_WatchAdd("*0x6890,x","ePWM3 DBRED"); - GEL_WatchAdd("*0x6891,x","ePWM3 DBFED"); - GEL_WatchAdd("*0x6892,x","ePWM3 TZSEL"); - GEL_WatchAdd("*0x6893,x","ePWM3 TZDCSEL"); - GEL_WatchAdd("*0x6894,x","ePWM3 TZCTL"); - GEL_WatchAdd("*0x6895,x","ePWM3 TZEINT"); - GEL_WatchAdd("*0x6896,x","ePWM3 TZFLG"); - GEL_WatchAdd("*0x6897,x","ePWM3 TZCLR"); - GEL_WatchAdd("*0x6898,x","ePWM3 TZFRC"); - GEL_WatchAdd("*0x6899,x","ePWM3 ETSEL"); - GEL_WatchAdd("*0x689A,x","ePWM3 ETPS"); - GEL_WatchAdd("*0x689B,x","ePWM3 ETFLG"); - GEL_WatchAdd("*0x689C,x","ePWM3 ETCLR"); - GEL_WatchAdd("*0x689D,x","ePWM3 ETFRC"); - GEL_WatchAdd("*0x689E,x","ePWM3 PCCTL"); - GEL_WatchAdd("*0x68A0,x","ePWM3 HRCNFG"); -} -hotmenu ePWM3_TB_Regs() -{ - GEL_WatchAdd("*0x6880,x","ePWM3 TBCTL"); - GEL_WatchAdd("*0x6881,x","ePWM3 TBSTS"); - GEL_WatchAdd("*0x6882,x","ePWM3 TBPHSHR"); - GEL_WatchAdd("*0x6883,x","ePWM3 TBPHS"); - GEL_WatchAdd("*0x6884,x","ePWM3 TBCTR"); - GEL_WatchAdd("*0x6885,x","ePWM3 TBPRD"); -} -hotmenu ePWM3_CMP_Regs() -{ - GEL_WatchAdd("*0x6887,x","ePWM3 CMPCTL"); - GEL_WatchAdd("*0x6888,x","ePWM3 CMPAHR"); - GEL_WatchAdd("*0x6889,x","ePWM3 CMPA"); - GEL_WatchAdd("*0x688A,x","ePWM3 CMPB"); -} -hotmenu ePWM3_AQ_Regs() -{ - GEL_WatchAdd("*0x688B,x","ePWM3 AQCTLA"); - GEL_WatchAdd("*0x688C,x","ePWM3 AQCTLB"); - GEL_WatchAdd("*0x688D,x","ePWM3 AQSFRC"); - GEL_WatchAdd("*0x688E,x","ePWM3 AQCSFRC"); -} -hotmenu ePWM3_DB_Regs() -{ - GEL_WatchAdd("*0x688F,x","ePWM3 DBCTL"); - GEL_WatchAdd("*0x6890,x","ePWM3 DBRED"); - GEL_WatchAdd("*0x6891,x","ePWM3 DBFED"); -} -hotmenu ePWM3_TZ_Regs() -{ - GEL_WatchAdd("*0x6892,x","ePWM3 TZSEL"); - GEL_WatchAdd("*0x6894,x","ePWM3 TZCTL"); - GEL_WatchAdd("*0x6895,x","ePWM3 TZEINT"); - GEL_WatchAdd("*0x6896,x","ePWM3 TZFLG"); - GEL_WatchAdd("*0x6897,x","ePWM3 TZCLR"); - GEL_WatchAdd("*0x6898,x","ePWM3 TZFRC"); -} -hotmenu ePWM3_ET_Regs() -{ - GEL_WatchAdd("*0x6899,x","ePWM3 ETSEL"); - GEL_WatchAdd("*0x689A,x","ePWM3 ETPS"); - GEL_WatchAdd("*0x689B,x","ePWM3 ETFLG"); - GEL_WatchAdd("*0x689C,x","ePWM3 ETCLR"); - GEL_WatchAdd("*0x689D,x","ePWM3 ETFRC"); -} -hotmenu ePWM4_All_Regs() -{ - GEL_WatchAdd("*0x68C0,x","ePWM4 TBCTL"); - GEL_WatchAdd("*0x68C1,x","ePWM4 TBSTS"); - GEL_WatchAdd("*0x68C2,x","ePWM4 TBPHSHR"); - GEL_WatchAdd("*0x68C3,x","ePWM4 TBPHS"); - GEL_WatchAdd("*0x68C4,x","ePWM4 TBCTR"); - GEL_WatchAdd("*0x68C5,x","ePWM4 TBPRD"); - GEL_WatchAdd("*0x68C7,x","ePWM4 CMPCTL"); - GEL_WatchAdd("*0x68C8,x","ePWM4 CMPAHR"); - GEL_WatchAdd("*0x68C9,x","ePWM4 CMPA"); - GEL_WatchAdd("*0x68CA,x","ePWM4 CMPB"); - GEL_WatchAdd("*0x68CB,x","ePWM4 AQCTLA"); - GEL_WatchAdd("*0x68CC,x","ePWM4 AQCTLB"); - GEL_WatchAdd("*0x68CD,x","ePWM4 AQSFRC"); - GEL_WatchAdd("*0x68CE,x","ePWM4 AQCSFRC"); - GEL_WatchAdd("*0x68CF,x","ePWM4 DBCTL"); - GEL_WatchAdd("*0x68D0,x","ePWM4 DBRED"); - GEL_WatchAdd("*0x68D1,x","ePWM4 DBFED"); - GEL_WatchAdd("*0x68D2,x","ePWM4 TZSEL"); - GEL_WatchAdd("*0x68D3,x","ePWM4 TZDCSEL"); - GEL_WatchAdd("*0x68D4,x","ePWM4 TZCTL"); - GEL_WatchAdd("*0x68D5,x","ePWM4 TZEINT"); - GEL_WatchAdd("*0x68D6,x","ePWM4 TZFLG"); - GEL_WatchAdd("*0x68D7,x","ePWM4 TZCLR"); - GEL_WatchAdd("*0x68D8,x","ePWM4 TZFRC"); - GEL_WatchAdd("*0x68D9,x","ePWM4 ETSEL"); - GEL_WatchAdd("*0x68DA,x","ePWM4 ETPS"); - GEL_WatchAdd("*0x68DB,x","ePWM4 ETFLG"); - GEL_WatchAdd("*0x68DC,x","ePWM4 ETCLR"); - GEL_WatchAdd("*0x68DD,x","ePWM4 ETFRC"); - GEL_WatchAdd("*0x68DE,x","ePWM4 PCCTL"); - GEL_WatchAdd("*0x68E0,x","ePWM4 HRCNFG"); -} -hotmenu ePWM4_TB_Regs() -{ - GEL_WatchAdd("*0x68C0,x","ePWM4 TBCTL"); - GEL_WatchAdd("*0x68C1,x","ePWM4 TBSTS"); - GEL_WatchAdd("*0x68C2,x","ePWM4 TBPHSHR"); - GEL_WatchAdd("*0x68C3,x","ePWM4 TBPHS"); - GEL_WatchAdd("*0x68C4,x","ePWM4 TBCTR"); - GEL_WatchAdd("*0x68C5,x","ePWM4 TBPRD"); -} -hotmenu ePWM4_CMP_Regs() -{ - GEL_WatchAdd("*0x68C7,x","ePWM4 CMPCTL"); - GEL_WatchAdd("*0x68C8,x","ePWM4 CMPAHR"); - GEL_WatchAdd("*0x68C9,x","ePWM4 CMPA"); - GEL_WatchAdd("*0x68CA,x","ePWM4 CMPB"); -} -hotmenu ePWM4_AQ_Regs() -{ - GEL_WatchAdd("*0x68CB,x","ePWM4 AQCTLA"); - GEL_WatchAdd("*0x68CC,x","ePWM4 AQCTLB"); - GEL_WatchAdd("*0x68CD,x","ePWM4 AQSFRC"); - GEL_WatchAdd("*0x68CE,x","ePWM4 AQCSFRC"); -} -hotmenu ePWM4_DB_Regs() -{ - GEL_WatchAdd("*0x68CF,x","ePWM4 DBCTL"); - GEL_WatchAdd("*0x68D0,x","ePWM4 DBRED"); - GEL_WatchAdd("*0x68D1,x","ePWM4 DBFED"); -} -hotmenu ePWM4_TZ_Regs() -{ - GEL_WatchAdd("*0x68D2,x","ePWM4 TZSEL"); - GEL_WatchAdd("*0x68D4,x","ePWM4 TZCTL"); - GEL_WatchAdd("*0x68D5,x","ePWM4 TZEINT"); - GEL_WatchAdd("*0x68D6,x","ePWM4 TZFLG"); - GEL_WatchAdd("*0x68D7,x","ePWM4 TZCLR"); - GEL_WatchAdd("*0x68D8,x","ePWM4 TZFRC"); -} -hotmenu ePWM4_ET_Regs() -{ - GEL_WatchAdd("*0x68D9,x","ePWM4 ETSEL"); - GEL_WatchAdd("*0x68DA,x","ePWM4 ETPS"); - GEL_WatchAdd("*0x68DB,x","ePWM4 ETFLG"); - GEL_WatchAdd("*0x68DC,x","ePWM4 ETCLR"); - GEL_WatchAdd("*0x68DD,x","ePWM4 ETFRC"); -} -hotmenu ePWM5_All_Regs() -{ - GEL_WatchAdd("*0x6900,x","ePWM5 TBCTL"); - GEL_WatchAdd("*0x6901,x","ePWM5 TBSTS"); - GEL_WatchAdd("*0x6903,x","ePWM5 TBPHS"); - GEL_WatchAdd("*0x6904,x","ePWM5 TBCTR"); - GEL_WatchAdd("*0x6905,x","ePWM5 TBPRD"); - GEL_WatchAdd("*0x6907,x","ePWM5 CMPCTL"); - GEL_WatchAdd("*0x6909,x","ePWM5 CMPA"); - GEL_WatchAdd("*0x690A,x","ePWM5 CMPB"); - GEL_WatchAdd("*0x690B,x","ePWM5 AQCTLA"); - GEL_WatchAdd("*0x690C,x","ePWM5 AQCTLB"); - GEL_WatchAdd("*0x690D,x","ePWM5 AQSFRC"); - GEL_WatchAdd("*0x690E,x","ePWM5 AQCSFRC"); - GEL_WatchAdd("*0x690F,x","ePWM5 DBCTL"); - GEL_WatchAdd("*0x6910,x","ePWM5 DBRED"); - GEL_WatchAdd("*0x6911,x","ePWM5 DBFED"); - GEL_WatchAdd("*0x6912,x","ePWM5 TZSEL"); - GEL_WatchAdd("*0x6913,x","ePWM5 TZDCSEL"); - GEL_WatchAdd("*0x6914,x","ePWM5 TZCTL"); - GEL_WatchAdd("*0x6915,x","ePWM5 TZEINT"); - GEL_WatchAdd("*0x6916,x","ePWM5 TZFLG"); - GEL_WatchAdd("*0x6917,x","ePWM5 TZCLR"); - GEL_WatchAdd("*0x6918,x","ePWM5 TZFRC"); - GEL_WatchAdd("*0x6919,x","ePWM5 ETSEL"); - GEL_WatchAdd("*0x691A,x","ePWM5 ETPS"); - GEL_WatchAdd("*0x691B,x","ePWM5 ETFLG"); - GEL_WatchAdd("*0x691C,x","ePWM5 ETCLR"); - GEL_WatchAdd("*0x691D,x","ePWM5 ETFRC"); - GEL_WatchAdd("*0x691E,x","ePWM5 PCCTL"); -} -hotmenu ePWM5_TB_Regs() -{ - GEL_WatchAdd("*0x6900,x","ePWM5 TBCTL"); - GEL_WatchAdd("*0x6901,x","ePWM5 TBSTS"); - GEL_WatchAdd("*0x6903,x","ePWM5 TBPHS"); - GEL_WatchAdd("*0x6904,x","ePWM5 TBCTR"); - GEL_WatchAdd("*0x6905,x","ePWM5 TBPRD"); -} -hotmenu ePWM5_CMP_Regs() -{ - GEL_WatchAdd("*0x6907,x","ePWM5 CMPCTL"); - GEL_WatchAdd("*0x6909,x","ePWM5 CMPA"); - GEL_WatchAdd("*0x690A,x","ePWM5 CMPB"); -} -hotmenu ePWM5_AQ_Regs() -{ - GEL_WatchAdd("*0x690B,x","ePWM5 AQCTLA"); - GEL_WatchAdd("*0x690C,x","ePWM5 AQCTLB"); - GEL_WatchAdd("*0x690D,x","ePWM5 AQSFRC"); - GEL_WatchAdd("*0x690E,x","ePWM5 AQCSFRC"); -} -hotmenu ePWM5_DB_Regs() -{ - GEL_WatchAdd("*0x690F,x","ePWM5 DBCTL"); - GEL_WatchAdd("*0x6910,x","ePWM5 DBRED"); - GEL_WatchAdd("*0x6911,x","ePWM5 DBFED"); -} -hotmenu ePWM5_TZ_Regs() -{ - GEL_WatchAdd("*0x6912,x","ePWM5 TZSEL"); - GEL_WatchAdd("*0x6914,x","ePWM5 TZCTL"); - GEL_WatchAdd("*0x6915,x","ePWM5 TZEINT"); - GEL_WatchAdd("*0x6916,x","ePWM5 TZFLG"); - GEL_WatchAdd("*0x6917,x","ePWM5 TZCLR"); - GEL_WatchAdd("*0x6918,x","ePWM5 TZFRC"); -} -hotmenu ePWM5_ET_Regs() -{ - GEL_WatchAdd("*0x6919,x","ePWM5 ETSEL"); - GEL_WatchAdd("*0x691A,x","ePWM5 ETPS"); - GEL_WatchAdd("*0x691B,x","ePWM5 ETFLG"); - GEL_WatchAdd("*0x691C,x","ePWM5 ETCLR"); - GEL_WatchAdd("*0x691D,x","ePWM5 ETFRC"); -} -hotmenu ePWM6_All_Regs() -{ - GEL_WatchAdd("*0x6940,x","ePWM6 TBCTL"); - GEL_WatchAdd("*0x6941,x","ePWM6 TBSTS"); - GEL_WatchAdd("*0x6943,x","ePWM6 TBPHS"); - GEL_WatchAdd("*0x6944,x","ePWM6 TBCTR"); - GEL_WatchAdd("*0x6945,x","ePWM6 TBPRD"); - GEL_WatchAdd("*0x6947,x","ePWM6 CMPCTL"); - GEL_WatchAdd("*0x6949,x","ePWM6 CMPA"); - GEL_WatchAdd("*0x694A,x","ePWM6 CMPB"); - GEL_WatchAdd("*0x694B,x","ePWM6 AQCTLA"); - GEL_WatchAdd("*0x694C,x","ePWM6 AQCTLB"); - GEL_WatchAdd("*0x694D,x","ePWM6 AQSFRC"); - GEL_WatchAdd("*0x694E,x","ePWM6 AQCSFRC"); - GEL_WatchAdd("*0x694F,x","ePWM6 DBCTL"); - GEL_WatchAdd("*0x6950,x","ePWM6 DBRED"); - GEL_WatchAdd("*0x6951,x","ePWM6 DBFED"); - GEL_WatchAdd("*0x6952,x","ePWM6 TZSEL"); - GEL_WatchAdd("*0x6953,x","ePWM6 TZDCSEL"); - GEL_WatchAdd("*0x6954,x","ePWM6 TZCTL"); - GEL_WatchAdd("*0x6955,x","ePWM6 TZEINT"); - GEL_WatchAdd("*0x6956,x","ePWM6 TZFLG"); - GEL_WatchAdd("*0x6957,x","ePWM6 TZCLR"); - GEL_WatchAdd("*0x6958,x","ePWM6 TZFRC"); - GEL_WatchAdd("*0x6959,x","ePWM6 ETSEL"); - GEL_WatchAdd("*0x695A,x","ePWM6 ETPS"); - GEL_WatchAdd("*0x695B,x","ePWM6 ETFLG"); - GEL_WatchAdd("*0x695C,x","ePWM6 ETCLR"); - GEL_WatchAdd("*0x695D,x","ePWM6 ETFRC"); - GEL_WatchAdd("*0x695E,x","ePWM6 PCCTL"); - -} -hotmenu ePWM6_TB_Regs() -{ - GEL_WatchAdd("*0x6940,x","ePWM6 TBCTL"); - GEL_WatchAdd("*0x6941,x","ePWM6 TBSTS"); - GEL_WatchAdd("*0x6943,x","ePWM6 TBPHS"); - GEL_WatchAdd("*0x6944,x","ePWM6 TBCTR"); - GEL_WatchAdd("*0x6945,x","ePWM6 TBPRD"); -} -hotmenu ePWM6_CMP_Regs() -{ - GEL_WatchAdd("*0x6947,x","ePWM6 CMPCTL"); - GEL_WatchAdd("*0x6949,x","ePWM6 CMPA"); - GEL_WatchAdd("*0x694A,x","ePWM6 CMPB"); -} -hotmenu ePWM6_AQ_Regs() -{ - GEL_WatchAdd("*0x694B,x","ePWM6 AQCTLA"); - GEL_WatchAdd("*0x694C,x","ePWM6 AQCTLB"); - GEL_WatchAdd("*0x694D,x","ePWM6 AQSFRC"); - GEL_WatchAdd("*0x694E,x","ePWM6 AQCSFRC"); -} -hotmenu ePWM6_DB_Regs() -{ - GEL_WatchAdd("*0x694F,x","ePWM6 DBCTL"); - GEL_WatchAdd("*0x6950,x","ePWM6 DBRED"); - GEL_WatchAdd("*0x6951,x","ePWM6 DBFED"); -} -hotmenu ePWM6_TZ_Regs() -{ - GEL_WatchAdd("*0x6952,x","ePWM6 TZSEL"); - GEL_WatchAdd("*0x6954,x","ePWM6 TZCTL"); - GEL_WatchAdd("*0x6955,x","ePWM6 TZEINT"); - GEL_WatchAdd("*0x6956,x","ePWM6 TZFLG"); - GEL_WatchAdd("*0x6957,x","ePWM6 TZCLR"); - GEL_WatchAdd("*0x6958,x","ePWM6 TZFRC"); -} -hotmenu ePWM6_ET_Regs() -{ - GEL_WatchAdd("*0x6959,x","ePWM6 ETSEL"); - GEL_WatchAdd("*0x695A,x","ePWM6 ETPS"); - GEL_WatchAdd("*0x695B,x","ePWM6 ETFLG"); - GEL_WatchAdd("*0x695C,x","ePWM6 ETCLR"); - GEL_WatchAdd("*0x695D,x","ePWM6 ETFRC"); -} - - -/********************************************************************/ -/* Enhanced EQEP Registers */ -/********************************************************************/ -menuitem "Watch eQEP" - -hotmenu eQEP1_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6B00,x","eQEP1 QPOSCNT"); - GEL_WatchAdd("*(long *)0x6B02,x","eQEP1 QPOSINIT"); - GEL_WatchAdd("*(long *)0x6B04,x","eQEP1 QPOSMAX"); - GEL_WatchAdd("*(long *)0x6B06,x","eQEP1 QPOSCMP"); - GEL_WatchAdd("*(long *)0x6B08,x","eQEP1 QPOSILAT"); - GEL_WatchAdd("*(long *)0x6B0A,x","eQEP1 QPOSSLAT"); - GEL_WatchAdd("*(long *)0x6B0C,x","eQEP1 QPOSLAT"); - GEL_WatchAdd("*(long *)0x6B0E,x","eQEP1 QUTMR"); - GEL_WatchAdd("*(long *)0x6B10,x","eQEP1 QUPRD"); - GEL_WatchAdd("*0x6B12,x","eQEP1 QWDTMR"); - GEL_WatchAdd("*0x6B13,x","eQEP1 QWDPRD"); - GEL_WatchAdd("*0x6B14,x","eQEP1 QDECCTL"); - GEL_WatchAdd("*0x6B15,x","eQEP1 QEPCTL"); - GEL_WatchAdd("*0x6B16,x","eQEP1 QCAPCTL"); - GEL_WatchAdd("*0x6B17,x","eQEP1 QPOSCTL"); - GEL_WatchAdd("*0x6B18,x","eQEP1 QEINT"); - GEL_WatchAdd("*0x6B19,x","eQEP1 QFLG"); - GEL_WatchAdd("*0x6B1A,x","eQEP1 QCLR"); - GEL_WatchAdd("*0x6B1B,x","eQEP1 QFRC"); - GEL_WatchAdd("*0x6B1C,x","eQEP1 QEPSTS"); - GEL_WatchAdd("*0x6B1D,x","eQEP1 QCTMR"); - GEL_WatchAdd("*0x6B1E,x","eQEP1 QCPRD"); - GEL_WatchAdd("*0x6B1F,x","eQEP1 QCTMRLAT"); - GEL_WatchAdd("*0x6B20,x","eQEP1 QCPRDLAT"); -} -hotmenu eQEP2_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6B40,x","eQEP2 QPOSCNT"); - GEL_WatchAdd("*(long *)0x6B42,x","eQEP2 QPOSINIT"); - GEL_WatchAdd("*(long *)0x6B44,x","eQEP2 QPOSMAX"); - GEL_WatchAdd("*(long *)0x6B46,x","eQEP2 QPOSCMP"); - GEL_WatchAdd("*(long *)0x6B48,x","eQEP2 QPOSILAT"); - GEL_WatchAdd("*(long *)0x6B4A,x","eQEP2 QPOSSLAT"); - GEL_WatchAdd("*(long *)0x6B4C,x","eQEP2 QPOSLAT"); - GEL_WatchAdd("(long *)*0x6B4E,x","eQEP2 QUTMR"); - GEL_WatchAdd("*(long *)0x6B50,x","eQEP2 QUPRD"); - GEL_WatchAdd("*0x6B52,x","eQEP2 QWDTMR"); - GEL_WatchAdd("*0x6B53,x","eQEP2 QWDPRD"); - GEL_WatchAdd("*0x6B54,x","eQEP2 QDECCTL"); - GEL_WatchAdd("*0x6B55,x","eQEP2 QEPCTL"); - GEL_WatchAdd("*0x6B56,x","eQEP2 QCAPCTL"); - GEL_WatchAdd("*0x6B57,x","eQEP2 QPOSCTL"); - GEL_WatchAdd("*0x6B58,x","eQEP2 QEINT"); - GEL_WatchAdd("*0x6B59,x","eQEP2 QFLG"); - GEL_WatchAdd("*0x6B5A,x","eQEP2 QCLR"); - GEL_WatchAdd("*0x6B5B,x","eQEP2 QFRC"); - GEL_WatchAdd("*0x6B5C,x","eQEP2 QEPSTS"); - GEL_WatchAdd("*0x6B5D,x","eQEP2 QCTMR"); - GEL_WatchAdd("*0x6B5E,x","eQEP2 QCPRD"); - GEL_WatchAdd("*0x6B5F,x","eQEP2 QCTMRLAT"); - GEL_WatchAdd("*0x6B60,x","eQEP2 QCPRDLAT"); -} - - -/********************************************************************/ -/* External Interface Registers */ -/********************************************************************/ -menuitem "Watch External Interface Registers"; - -hotmenu All_External_Interface_Regs() -{ - GEL_WatchAdd("*(long *)0x0B20,x","XTIMING0"); - GEL_WatchAdd("*(long *)0x0B2C,x","XTIMING6"); - GEL_WatchAdd("*(long *)0x0B2E,x","XTIMING7"); - GEL_WatchAdd("*(long *)0x0B34,x","XINTCNF2"); - GEL_WatchAdd("*0x0B38,x","XBANK"); - GEL_WatchAdd("*0x0B3A,x","XREVISION"); - GEL_WatchAdd("*0x0B3D,x","XRESET"); -} - -/********************************************************************/ -/* External Interrupt Registers */ -/********************************************************************/ -menuitem "Watch External Interrupt Registers"; - -hotmenu All_XINT_Regs() -{ - GEL_WatchAdd("*0x7070,x","XINT1CR"); - GEL_WatchAdd("*0x7071,x","XINT2CR"); - GEL_WatchAdd("*0x7072,x","XINT3CR"); - GEL_WatchAdd("*0x7073,x","XINT4CR"); - GEL_WatchAdd("*0x7074,x","XINT5CR"); - GEL_WatchAdd("*0x7075,x","XINT6CR"); - GEL_WatchAdd("*0x7076,x","XINT7CR"); - GEL_WatchAdd("*0x7077,x","XNMICR"); - GEL_WatchAdd("*0x7078,x","XINT1CTR"); - GEL_WatchAdd("*0x7079,x","XINT2CTR"); - GEL_WatchAdd("*0x707F,x","XNMICTR"); -} -hotmenu XINT_Control_Regs() -{ - GEL_WatchAdd("*0x7070,x","XINT1CR"); - GEL_WatchAdd("*0x7071,x","XINT2CR"); - GEL_WatchAdd("*0x7072,x","XINT3CR"); - GEL_WatchAdd("*0x7073,x","XINT4CR"); - GEL_WatchAdd("*0x7074,x","XINT5CR"); - GEL_WatchAdd("*0x7075,x","XINT6CR"); - GEL_WatchAdd("*0x7076,x","XINT7CR"); - GEL_WatchAdd("*0x7077,x","XNMICR"); -} -hotmenu XINT_Counter_Regs() -{ - GEL_WatchAdd("*0x7078,x","XINT1CTR"); - GEL_WatchAdd("*0x7079,x","XINT2CTR"); - GEL_WatchAdd("*0x707F,x","XNMICTR"); -} - -/********************************************************************/ -/* GPIO Registers */ -/********************************************************************/ -menuitem "Watch GPIO Registers"; - -hotmenu All_GPIO_CONTROL_Regs() -{ - GEL_WatchAdd("*(long *)0x6F80,x","GPACTRL"); - GEL_WatchAdd("*(long *)0x6F82,x","GPAQSEL1"); - GEL_WatchAdd("*(long *)0x6F84,x","GPAQSEL2"); - GEL_WatchAdd("*(long *)0x6F86,x","GPAMUX1"); - GEL_WatchAdd("*(long *)0x6F88,x","GPAMUX2"); - GEL_WatchAdd("*(long *)0x6F8A,x","GPADIR"); - GEL_WatchAdd("*(long *)0x6F8C,x","GPAPUD"); - - GEL_WatchAdd("*(long *)0x6F90,x","GPBCTRL"); - GEL_WatchAdd("*(long *)0x6F92,x","GPBQSEL1"); - GEL_WatchAdd("*(long *)0x6F94,x","GPBQSEL2"); - GEL_WatchAdd("*(long *)0x6F96,x","GPBMUX1"); - GEL_WatchAdd("*(long *)0x6F98,x","GPBMUX2"); - GEL_WatchAdd("*(long *)0x6F9A,x","GPBDIR"); - GEL_WatchAdd("*(long *)0x6F9C,x","GPBPUD"); - - GEL_WatchAdd("*(long *)0x6FA6,x","GPCMUX1"); - GEL_WatchAdd("*(long *)0x6FA8,x","GPCMUX2"); - GEL_WatchAdd("*(long *)0x6FAA,x","GPCDIR"); - GEL_WatchAdd("*(long *)0x6FAC,x","GPCPUD"); -} -hotmenu All_GPIO_DATA_Regs() -{ - GEL_WatchAdd("*(long *)0x6FC0,x","GPADAT"); - GEL_WatchAdd("*(long *)0x6FC2,x","GPASET"); - GEL_WatchAdd("*(long *)0x6FC4,x","GPACLEAR"); - GEL_WatchAdd("*(long *)0x6FC6,x","GPATOGGLE"); - - GEL_WatchAdd("*(long *)0x6FC8,x","GPBDAT"); - GEL_WatchAdd("*(long *)0x6FCA,x","GPBSET"); - GEL_WatchAdd("*(long *)0x6FCC,x","GPBCLEAR"); - GEL_WatchAdd("*(long *)0x6FCE,x","GPBTOGGLE"); - - GEL_WatchAdd("*(long *)0x6FD0,x","GPCDAT"); - GEL_WatchAdd("*(long *)0x6FD2,x","GPCSET"); - GEL_WatchAdd("*(long *)0x6FD4,x","GPCCLEAR"); - GEL_WatchAdd("*(long *)0x6FD6,x","GPCTOGGLE"); -} -hotmenu All_GPIO_INTERRUPT_Regs() -{ - GEL_WatchAdd("*0x6FE0,x","GPIOXINT1SEL"); - GEL_WatchAdd("*0x6FE1,x","GPIOXINT2SEL"); - GEL_WatchAdd("*0x6FE2,x","GPIOXNMISEL"); - GEL_WatchAdd("*0x6FE3,x","GPIOXINT3SEL"); - GEL_WatchAdd("*0x6FE4,x","GPIOXINT4SEL"); - GEL_WatchAdd("*0x6FE5,x","GPIOXINT5SEL"); - GEL_WatchAdd("*0x6FE6,x","GPIOXINT6SEL"); - GEL_WatchAdd("*0x6FE7,x","GPIOXINT7SEL"); - GEL_WatchAdd("*(long *)0x6FE8,x","GPIOLPMSEL"); -} -hotmenu All_GPA_Registers() -{ - GEL_WatchAdd("*(long *)0x6F80,x","GPACTRL"); - GEL_WatchAdd("*(long *)0x6F82,x","GPAQSEL1"); - GEL_WatchAdd("*(long *)0x6F84,x","GPAQSEL2"); - GEL_WatchAdd("*(long *)0x6F86,x","GPAMUX1"); - GEL_WatchAdd("*(long *)0x6F88,x","GPAMUX2"); - GEL_WatchAdd("*(long *)0x6F8A,x","GPADIR"); - GEL_WatchAdd("*(long *)0x6F8C,x","GPAPUD"); - - GEL_WatchAdd("*(long *)0x6FC0,x","GPADAT"); - GEL_WatchAdd("*(long *)0x6FC2,x","GPASET"); - GEL_WatchAdd("*(long *)0x6FC4,x","GPACLEAR"); - GEL_WatchAdd("*(long *)0x6FC6,x","GPATOGGLE"); -} -hotmenu All_GPB_Registers() -{ - GEL_WatchAdd("*(long *)0x6F90,x","GPBCTRL"); - GEL_WatchAdd("*(long *)0x6F92,x","GPBQSEL1"); - GEL_WatchAdd("*(long *)0x6F94,x","GPBQSEL2"); - GEL_WatchAdd("*(long *)0x6F96,x","GPBMUX1"); - GEL_WatchAdd("*(long *)0x6F98,x","GPBMUX2"); - GEL_WatchAdd("*(long *)0x6F9A,x","GPBDIR"); - GEL_WatchAdd("*(long *)0x6F9C,x","GPBPUD"); - - GEL_WatchAdd("*(long *)0x6FC8,x","GPBDAT"); - GEL_WatchAdd("*(long *)0x6FCA,x","GPBSET"); - GEL_WatchAdd("*(long *)0x6FCC,x","GPBCLEAR"); - GEL_WatchAdd("*(long *)0x6FCE,x","GPBTOGGLE"); -} -hotmenu All_GPC_Registers() -{ - GEL_WatchAdd("*(long *)0x6FA6,x","GPCMUX1"); - GEL_WatchAdd("*(long *)0x6FA8,x","GPCMUX2"); - GEL_WatchAdd("*(long *)0x6FAA,x","GPCDIR"); - GEL_WatchAdd("*(long *)0x6FAC,x","GPCPUD"); - - GEL_WatchAdd("*(long *)0x6FC8,x","GPBDAT"); - GEL_WatchAdd("*(long *)0x6FCA,x","GPBSET"); - GEL_WatchAdd("*(long *)0x6FCC,x","GPBCLEAR"); - GEL_WatchAdd("*(long *)0x6FCE,x","GPBTOGGLE"); - - GEL_WatchAdd("*(long *)0x6FD0,x","GPCDAT"); - GEL_WatchAdd("*(long *)0x6FD2,x","GPCSET"); - GEL_WatchAdd("*(long *)0x6FD4,x","GPCCLEAR"); - GEL_WatchAdd("*(long *)0x6FD6,x","GPCTOGGLE"); -} - - -/********************************************************************/ -/* Multichannel Serial Port Registers */ -/********************************************************************/ -menuitem "Watch McBSP Registers"; - -hotmenu All_McBSP_A_Regs() -{ - GEL_WatchAdd("*0x5000,x","McBSPA DRR2"); - GEL_WatchAdd("*0x5001,x","McBSPA DRR1"); - GEL_WatchAdd("*0x5002,x","McBSPA DXR2"); - GEL_WatchAdd("*0x5003,x","McBSPA DXR1"); - GEL_WatchAdd("*0x5004,x","McBSPA SPCR2"); - GEL_WatchAdd("*0x5005,x","McBSPA SPCR1"); - GEL_WatchAdd("*0x5006,x","McBSPA RCR2"); - GEL_WatchAdd("*0x5007,x","McBSPA RCR1"); - GEL_WatchAdd("*0x5008,x","McBSPA XCR2"); - GEL_WatchAdd("*0x5009,x","McBSPA XCR1"); - GEL_WatchAdd("*0x500A,x","McBSPA SRGR2"); - GEL_WatchAdd("*0x500B,x","McBSPA SRGR1"); - GEL_WatchAdd("*0x500C,x","McBSPA MCR2"); - GEL_WatchAdd("*0x500D,x","McBSPA MCR1"); - GEL_WatchAdd("*0x500E,x","McBSPA RCERA"); - GEL_WatchAdd("*0x500F,x","McBSPA RCERB"); - GEL_WatchAdd("*0x5010,x","McBSPA XCERA"); - GEL_WatchAdd("*0x5011,x","McBSPA XCERB"); - GEL_WatchAdd("*0x5012,x","McBSPA PCR1"); - GEL_WatchAdd("*0x5013,x","McBSPA RCERC"); - GEL_WatchAdd("*0x5014,x","McBSPA RCERD"); - GEL_WatchAdd("*0x5015,x","McBSPA XCERC"); - GEL_WatchAdd("*0x5016,x","McBSPA XCERD"); - GEL_WatchAdd("*0x5017,x","McBSPA RCERE"); - GEL_WatchAdd("*0x5018,x","McBSPA RCERF"); - GEL_WatchAdd("*0x5019,x","McBSPA XCERE"); - GEL_WatchAdd("*0x501A,x","McBSPA XCERF"); - GEL_WatchAdd("*0x501B,x","McBSPA RCERG"); - GEL_WatchAdd("*0x501C,x","McBSPA RCERH"); - GEL_WatchAdd("*0x501D,x","McBSPA XCERG"); - GEL_WatchAdd("*0x501E,x","McBSPA XCERH"); - GEL_WatchAdd("*0x5023,x","McBSPA MFFINT"); - GEL_WatchAdd("*0x503F,x","McBSPA Revision"); -} - -/********************************************************************/ -/* I2C Registers */ -/********************************************************************/ -menuitem "Watch I2C Registers"; - -hotmenu All_I2C_Regs() -{ - GEL_WatchAdd("*0x7900,x","I2COAR"); - GEL_WatchAdd("*0x7901,x","I2CIER"); - GEL_WatchAdd("*0x7902,x","I2CSTR"); - GEL_WatchAdd("*0x7903,x","I2CCLKL"); - GEL_WatchAdd("*0x7904,x","I2CCLKH"); - GEL_WatchAdd("*0x7905,x","I2CCNT"); - GEL_WatchAdd("*0x7906,x","I2CDRR"); - GEL_WatchAdd("*0x7907,x","I2CSAR"); - GEL_WatchAdd("*0x7908,x","I2CDXR"); - GEL_WatchAdd("*0x7909,x","I2CMDR"); - GEL_WatchAdd("*0x790A,x","I2CISRC"); - GEL_WatchAdd("*0x790C,x","I2CPSC"); - GEL_WatchAdd("*0x7920,x","I2CFFTX"); - GEL_WatchAdd("*0x7921,x","I2CFFRX"); -} - - -/********************************************************************/ -/* Peripheral Interrupt Expansion Registers */ -/********************************************************************/ -menuitem "Watch Peripheral Interrupt Expansion Registers"; - -hotmenu All_PIE_Regs() -{ - GEL_WatchAdd("*0x0CE0,x","PIECTRL"); - GEL_WatchAdd("*0x0CE1,x","PIEACK"); - GEL_WatchAdd("*0x0CE2,x","PIEIER1"); - GEL_WatchAdd("*0x0CE3,x","PIEIFR1"); - GEL_WatchAdd("*0x0CE4,x","PIEIER2"); - GEL_WatchAdd("*0x0CE5,x","PIEIFR2"); - GEL_WatchAdd("*0x0CE6,x","PIEIER3"); - GEL_WatchAdd("*0x0CE7,x","PIEIFR3"); - GEL_WatchAdd("*0x0CE8,x","PIEIER4"); - GEL_WatchAdd("*0x0CE9,x","PIEIFR4"); - GEL_WatchAdd("*0x0CEA,x","PIEIER5"); - GEL_WatchAdd("*0x0CEB,x","PIEIFR5"); - GEL_WatchAdd("*0x0CEC,x","PIEIER6"); - GEL_WatchAdd("*0x0CED,x","PIEIFR6"); - GEL_WatchAdd("*0x0CEE,x","PIEIER7"); - GEL_WatchAdd("*0x0CEF,x","PIEIFR7"); - GEL_WatchAdd("*0x0CF0,x","PIEIER8"); - GEL_WatchAdd("*0x0CF1,x","PIEIFR8"); - GEL_WatchAdd("*0x0CF2,x","PIEIER9"); - GEL_WatchAdd("*0x0CF3,x","PIEIFR9"); - GEL_WatchAdd("*0x0CF4,x","PIEIER10"); - GEL_WatchAdd("*0x0CF5,x","PIEIFR10"); - GEL_WatchAdd("*0x0CF6,x","PIEIER11"); - GEL_WatchAdd("*0x0CF7,x","PIEIFR11"); - GEL_WatchAdd("*0x0CF8,x","PIEIER12"); - GEL_WatchAdd("*0x0CF9,x","PIEIFR12"); -} -hotmenu PIECTRL() -{ - GEL_WatchAdd("*0x0CE0,x","PIECTRL"); -} -hotmenu PIEACK() -{ - GEL_WatchAdd("*0x0CE1,x","PIEACK"); -} -hotmenu PIEIER1_and_PIEIFR1() -{ - GEL_WatchAdd("*0x0CE2,x","PIEIER1"); - GEL_WatchAdd("*0x0CE3,x","PIEIFR1"); -} -hotmenu PIEIER2_and_PIEIFR2() -{ - GEL_WatchAdd("*0x0CE4,x","PIEIER2"); - GEL_WatchAdd("*0x0CE5,x","PIEIFR2"); -} -hotmenu PIEIER3_and_PIEIFR3() -{ - GEL_WatchAdd("*0x0CE6,x","PIEIER3"); - GEL_WatchAdd("*0x0CE7,x","PIEIFR3"); -} -hotmenu PIEIER4_and_PIEIFR4() -{ - GEL_WatchAdd("*0x0CE8,x","PIEIER4"); - GEL_WatchAdd("*0x0CE9,x","PIEIFR4"); -} -hotmenu PIEIER5_and_PIEIFR5() -{ - GEL_WatchAdd("*0x0CEA,x","PIEIER5"); - GEL_WatchAdd("*0x0CEB,x","PIEIFR5"); -} -hotmenu PIEIER6_and_PIEIFR6() -{ - GEL_WatchAdd("*0x0CEC,x","PIEIER6"); - GEL_WatchAdd("*0x0CED,x","PIEIFR6"); -} -hotmenu PIEIER7_and_PIEIFR7() -{ - GEL_WatchAdd("*0x0CEE,x","PIEIER7"); - GEL_WatchAdd("*0x0CEF,x","PIEIFR7"); -} -hotmenu PIEIER8_and_PIEIFR8() -{ - GEL_WatchAdd("*0x0CF0,x","PIEIER8"); - GEL_WatchAdd("*0x0CF1,x","PIEIFR8"); -} -hotmenu PIEIER9_and_PIEIFR9() -{ - GEL_WatchAdd("*0x0CF2,x","PIEIER9"); - GEL_WatchAdd("*0x0CF3,x","PIEIFR9"); -} -hotmenu PIEIFR10_and_PIEIFR10() -{ - GEL_WatchAdd("*0x0CF4,x","PIEIER10"); - GEL_WatchAdd("*0x0CF5,x","PIEIFR10"); -} -hotmenu PIEIER11_and_PIEIFR11() -{ - GEL_WatchAdd("*0x0CF6,x","PIEIER11"); - GEL_WatchAdd("*0x0CF7,x","PIEIFR11"); -} -hotmenu PIEIER12_and_PIEIFR12() -{ - GEL_WatchAdd("*0x0CF8,x","PIEIER12"); - GEL_WatchAdd("*0x0CF9,x","PIEIFR12"); -} - - -/********************************************************************/ -/* Serial Communication Interface Registers */ -/********************************************************************/ -menuitem "Watch SCI Registers"; - -hotmenu SCI_A_All_Regs() -{ - GEL_WatchAdd("*0x7050,x","SCICCRA"); - GEL_WatchAdd("*0x7051,x","SCICTL1A"); - GEL_WatchAdd("*0x7052,x","SCIHBAUDA"); - GEL_WatchAdd("*0x7053,x","SCILBAUDA"); - GEL_WatchAdd("*0x7054,x","SCICTL2A"); - GEL_WatchAdd("*0x7055,x","SCIRXSTA"); - GEL_WatchAdd("*0x7056,x","SCIRXEMUA"); - GEL_WatchAdd("*0x7057,x","SCIRXBUFA"); - GEL_WatchAdd("*0x7059,x","SCITXBUFA"); - GEL_WatchAdd("*0x705A,x","SCIFFTXA"); - GEL_WatchAdd("*0x705B,x","SCIFFRXA"); - GEL_WatchAdd("*0x705C,x","SCIFFCTA"); - GEL_WatchAdd("*0x705F,x","SCIPRIA"); -} -hotmenu SCI_A_FIFO_Registers() -{ - GEL_WatchAdd("*0x705A,x","SCIFFTXA"); - GEL_WatchAdd("*0x705B,x","SCIFFRXA"); - GEL_WatchAdd("*0x705C,x","SCIFFCTA"); -} -hotmenu SCI_B_All_Regs() -{ - GEL_WatchAdd("*0x7750,x","SCICCRB"); - GEL_WatchAdd("*0x7751,x","SCICTL1B"); - GEL_WatchAdd("*0x7752,x","SCIHBAUDB"); - GEL_WatchAdd("*0x7753,x","SCILBAUDB"); - GEL_WatchAdd("*0x7754,x","SCICTL2B"); - GEL_WatchAdd("*0x7755,x","SCIRXSTB"); - GEL_WatchAdd("*0x7756,x","SCIRXEMUB"); - GEL_WatchAdd("*0x7757,x","SCIRXBUFB"); - GEL_WatchAdd("*0x7759,x","SCITXBUFB"); - GEL_WatchAdd("*0x775A,x","SCIFFTXB"); - GEL_WatchAdd("*0x775B,x","SCIFFRXB"); - GEL_WatchAdd("*0x775C,x","SCIFFCTB"); - GEL_WatchAdd("*0x775F,x","SCIPRIB"); -} -hotmenu SCI_B_FIFO_Registers() -{ - GEL_WatchAdd("*0x775A,x","SCIFFTXB"); - GEL_WatchAdd("*0x775B,x","SCIFFRXB"); - GEL_WatchAdd("*0x775C,x","SCIFFCTB"); -} - - -/********************************************************************/ -/* Serial Peripheral Interface Registers */ -/********************************************************************/ -menuitem "Watch SPI Registers"; - -hotmenu SPI_A_All_Regs() -{ - GEL_WatchAdd("*0x7040,x","SPIA SPICCR"); - GEL_WatchAdd("*0x7041,x","SPIA SPICTL"); - GEL_WatchAdd("*0x7042,x","SPIA SPIST"); - GEL_WatchAdd("*0x7044,x","SPIA SPIBRR"); - GEL_WatchAdd("*0x7046,x","SPIA SPIEMU"); - GEL_WatchAdd("*0x7047,x","SPIA SPIRXBUF"); - GEL_WatchAdd("*0x7048,x","SPIA SPITXBUF"); - GEL_WatchAdd("*0x7049,x","SPIA SPIDAT"); - GEL_WatchAdd("*0x704A,x","SPIA SPIFFTX"); - GEL_WatchAdd("*0x704B,x","SPIA SPIFFRX"); - GEL_WatchAdd("*0x704C,x","SPIA SPIFFCT"); - GEL_WatchAdd("*0x704F,x","SPIA SPIPRI"); -} -hotmenu SPI_A_FIFO_Registers() -{ - GEL_WatchAdd("*0x704A,x","SPIA SPIFFTX"); - GEL_WatchAdd("*0x704B,x","SPIA SPIFFRX"); - GEL_WatchAdd("*0x704C,x","SPIA SPIFFCT"); -} - - -/********************************************************************/ -/* Watchdog Timer Registers */ -/********************************************************************/ -menuitem "Watch Watchdog Timer Registers"; - -hotmenu All_Watchdog_Regs() -{ - GEL_WatchAdd("*0x7023,x","WDCNTR"); - GEL_WatchAdd("*0x7025,x","WDKEY"); - GEL_WatchAdd("*0x7029,x","WDCR"); - GEL_WatchAdd("*0x7022,x","SCSR"); -} - -/********************************************************************/ -/*** End of file ***/ diff --git a/Source/External/v120/DSP2833x_common/gel/f28234.gel b/Source/External/v120/DSP2833x_common/gel/f28234.gel deleted file mode 100644 index cd5726a..0000000 --- a/Source/External/v120/DSP2833x_common/gel/f28234.gel +++ /dev/null @@ -1,2930 +0,0 @@ -/********************************************************************/ -/* f28234.gel */ -/* Version 3.30.2 */ -/* */ -/* This GEL file is to be used with the TMS320F28234 DSP. */ -/* Changes may be required to support specific hardware designs. */ -/* */ -/* Code Composer Studio supports six reserved GEL functions that */ -/* automatically get executed if they are defined. They are: */ -/* */ -/* StartUp() - Executed whenever CCS is invoked */ -/* OnReset() - Executed after Debug->Reset CPU */ -/* OnRestart() - Executed after Debug->Restart */ -/* OnPreFileLoaded() - Executed before File->Load Program */ -/* OnFileLoaded() - Executed after File->Load Program */ -/* OnTargetConnect() - Executed after Debug->Connect */ -/* */ -/********************************************************************/ - -StartUp() -{ - -/* The next line automatically loads the .gel file that comes */ -/* with the DSP2833x Peripheral Header Files download. To use, */ -/* uncomment, and adjust the directory path as needed. */ -// GEL_LoadGel("c:\\CCStudio_v3.3\\cc\\gel\\DSP2833x_Peripheral.gel"); -} - -OnReset(int nErrorCode) -{ - C28x_Mode(); - Unlock_CSM(); - ADC_Cal(); -} - -OnRestart(int nErrorCode) -{ -/* CCS will call OnRestart() when you do a Debug->Restart and */ -/* after you load a new file. Between running interrupt based */ -/* programs, this function will clear interrupts and help keep */ -/* the processor from going off into invalid memory. */ - C28x_Mode(); - IER = 0; - IFR = 0; - ADC_Cal(); -} - -int TxtOutCtl=0; -OnPreFileLoaded() -{ - XINTF_Enable(); - if (TxtOutCtl==0) - { - GEL_TextOut("\nNOTES:\nGel will enable XINTFx16 during Debug only.\nEnable XINTF in code prior to use."); - TxtOutCtl=1; - } -} - -OnFileLoaded(int nErrorCode, int bSymbolsOnly) -{ - ADC_Cal(); -} - -OnTargetConnect() -{ - C28x_Mode(); - F28234_Memory_Map(); /* Initialize the CCS memory map */ - -/* Check to see if CCS has been started-up with the DSP already */ -/* running in real-time mode. The user can add whatever */ -/* custom initialization stuff they want to each case. */ - - if (GEL_IsInRealtimeMode()) /* Do real-time mode target initialization */ - { - - } - else /* Do stop-mode target initialization */ - { - GEL_Reset(); /* Reset DSP */ - } - -} - - -/********************************************************************/ -/* These functions are launched by the GEL_Toolbar button plugin */ -/********************************************************************/ -GEL_Toolbar1() -{ - Run_Realtime_with_Reset(); -} -GEL_Toolbar2() -{ - Run_Realtime_with_Restart(); -} -GEL_Toolbar3() -{ - Full_Halt(); -} -GEL_Toolbar4() -{ - Full_Halt_with_Reset(); -} - -int GEL_Toolbar5_Toggle = 0; -GEL_Toolbar5() -{ - if(GEL_Toolbar5_Toggle == 0) - { - GEL_Toolbar5_Toggle = 1; - GEL_OpenWindow("GEL_Buttons",1,4); - GEL_TextOut("Button 1: Run_Realtime_with_Reset()","GEL_Buttons",0,0); - GEL_TextOut("Button 2: Run_Realtime_with_Restart()","GEL_Buttons",0,1); - GEL_TextOut("Button 3: Full_Halt()", "GEL_Buttons",0,2); - GEL_TextOut("Button 4: Full_Halt_with_Reset()","GEL_Buttons",0,3); - } - else - { - GEL_Toolbar5_Toggle = 0; - GEL_CloseWindow("GEL_Buttons"); - } -} - - -/********************************************************************/ -/* These functions are useful to engage/dis-enagage realtime */ -/* emulation mode during debug. They save the user from having to */ -/* manually perform these steps in CCS. */ -/********************************************************************/ -menuitem "Realtime Emulation Control"; - -hotmenu Run_Realtime_with_Reset() -{ - GEL_Reset(); /* Reset the DSP */ - ST1 = ST1 & 0xFFFD; /* clear DBGM bit in ST1 */ - GEL_EnableRealtime(); /* Enable Realtime mode */ - GEL_Run(); /* Run the DSP */ -} -hotmenu Run_Realtime_with_Restart() -{ - GEL_Restart(); /* Reset the DSP */ - ST1 = ST1 & 0xFFFD; /* clear DBGM bit in ST1 */ - GEL_EnableRealtime(); /* Enable Realtime mode */ - GEL_Run(); /* Run the DSP */ -} -hotmenu Full_Halt() -{ - GEL_DisableRealtime(); /* Disable Realtime mode */ - GEL_Halt(); /* Halt the DSP */ -} -hotmenu Full_Halt_with_Reset() -{ - GEL_DisableRealtime(); /* Disable Realtime mode */ - GEL_Halt(); /* Halt the DSP */ - GEL_Reset(); /* Reset the DSP */ -} - - -/********************************************************************/ -/* F28234 Memory Map */ -/* */ -/* Note: M0M1MAP and VMAP signals tied high on F28234 core */ -/* */ -/* 0x000000 - 0x0003ff M0 SARAM (Prog and Data) */ -/* 0x000400 - 0x0007ff M1 SARAM (Prog and Data) */ -/* 0x000800 - 0x001fff Peripheral Frame0 (PF0) (Data only) */ -/* 0x004000 - 0x004fff XINTF Zone 0 (Prog and Data) */ -/* 0x005000 - 0x005fff Peripheral Frame3 (PF3) (Data only) */ -/* 0x006000 - 0x006fff Peripheral Frame1 (PF1) (Data only) */ -/* 0x007000 - 0x007fff Peripheral Frame2 (PF2) (Data only) */ -/* 0x008000 - 0x008fff L0 SARAM (Prog and Data) */ -/* 0x009000 - 0x009fff L1 SARAM (Prog and Data) */ -/* 0x00A000 - 0x00Afff L2 SARAM (Prog and Data) */ -/* 0x00B000 - 0x00Bfff L3 SARAM (Prog and Data) */ -/* 0x00C000 - 0x00Cfff L4 SARAM (Prog and Data) */ -/* 0x00D000 - 0x00Dfff L5 SARAM (Prog and Data) */ -/* 0x00E000 - 0x00Efff L6 SARAM (Prog and Data) */ -/* 0x00F000 - 0x00Ffff L7 SARAM (Prog and Data) */ -/* 0x100000 - 0x1fffff XINTF Zone 6 (Prog and Data) */ -/* 0x200000 - 0x2fffff XINTF Zone 7 (Prog and Data) */ -/* 0x320000 - 0x33ffff Flash (Prog and Data) */ -/* 0x380080 - 0x380088 ADC_cal function (Prog and Data) */ -/* 0x380090 - 0x380090 PARTID value (Prog and Data) */ -/* 0x380400 - 0x3807ff OTP (Prog and Data) */ -/* 0x3f8000 - 0x3f8fff L0 SARAM (Prog and Data) */ -/* 0x3f9000 - 0x3f9fff L1 SARAM (Prog and Data) */ -/* 0x3fA000 - 0x3fAfff L2 SARAM (Prog and Data) */ -/* 0x3fB000 - 0x3fBfff L3 SARAM (Prog and Data) */ -/* 0x3fe000 - 0x3fffff BOOT ROM (Prog and Data) */ -/********************************************************************/ -menuitem "Initialize Memory Map"; - -hotmenu F28234_Memory_Map() -{ - GEL_MapReset(); - GEL_MapOn(); - - /* Program memory map */ - GEL_MapAdd(0x0,0,0x400,1,1); /* M0 SARAM */ - GEL_MapAdd(0x400,0,0x400,1,1); /* M1 SARAM */ - GEL_MapAdd(0x4000,0,0x1000,1,1); /* Zone 0 */ - GEL_MapAdd(0x8000,0,0x1000,1,1); /* L0 SARAM */ - GEL_MapAdd(0x9000,0,0x1000,1,1); /* L1 SARAM */ - GEL_MapAdd(0xA000,0,0x1000,1,1); /* L2 SARAM */ - GEL_MapAdd(0xB000,0,0x1000,1,1); /* L3 SARAM */ - GEL_MapAdd(0xC000,0,0x1000,1,1); /* L4 SARAM */ - GEL_MapAdd(0xD000,0,0x1000,1,1); /* L5 SARAM */ - GEL_MapAdd(0xE000,0,0x1000,1,1); /* L6 SARAM */ - GEL_MapAdd(0xF000,0,0x1000,1,1); /* L7 SARAM */ - GEL_MapAdd(0x100000,0,0x100000,1,1); /* Zone 6 */ - GEL_MapAdd(0x200000,0,0x100000,1,1); /* Zone 7 */ - GEL_MapAdd(0x320000,0,0x20000,1,0); /* FLASH */ - GEL_MapAdd(0x380080,0,0x00009,1,0); /* ADC_cal function*/ - GEL_MapAdd(0x380090,0,0x00001,1,0); /* PARTID value */ - GEL_MapAdd(0x380400,0,0x00400,1,0); /* OTP */ - GEL_MapAdd(0x3f8000,0,0x1000,1,1); /* L0 SARAM Mirror */ - GEL_MapAdd(0x3f9000,0,0x1000,1,1); /* L1 SARAM Mirror */ - GEL_MapAdd(0x3fA000,0,0x1000,1,1); /* L2 SARAM Mirror */ - GEL_MapAdd(0x3fb000,0,0x1000,1,1); /* L3 SARAM Mirror */ - GEL_MapAdd(0x3fe000,0,0x2000,1,0); /* BOOT ROM */ - - /* Data memory map */ - GEL_MapAdd(0x000,1,0x400,1,1); /* M0 SARAM */ - GEL_MapAdd(0x400,1,0x400,1,1); /* M1 SARAM */ - GEL_MapAdd(0x800,1,0x1800,1,1); /* PF0 */ - GEL_MapAdd(0x4000,1,0x1000,1,1); /* Zone 0 */ - GEL_MapAdd(0x5000,1,0x1000,1,1); /* PF3 */ - GEL_MapAdd(0x6000,1,0x1000,1,1); /* PF1 */ - GEL_MapAddStr(0x7000,1,0x1000,"R|W|AS2",0); /* PF2 */ - GEL_MapAdd(0x8000,1,0x1000,1,1); /* L0 SARAM */ - GEL_MapAdd(0x9000,1,0x1000,1,1); /* L1 SARAM */ - GEL_MapAdd(0xA000,1,0x1000,1,1); /* L2 SARAM */ - GEL_MapAdd(0xB000,1,0x1000,1,1); /* L3 SARAM */ - GEL_MapAdd(0xC000,1,0x1000,1,1); /* L4 SARAM */ - GEL_MapAdd(0xD000,1,0x1000,1,1); /* L5 SARAM */ - GEL_MapAdd(0xE000,1,0x1000,1,1); /* L6 SARAM */ - GEL_MapAdd(0xF000,1,0x1000,1,1); /* L7 SARAM */ - GEL_MapAdd(0x100000,1,0x100000,1,1); /* Zone 6 */ - GEL_MapAdd(0x200000,1,0x100000,1,1); /* Zone 7 */ - GEL_MapAdd(0x320000,1,0x20000,1,0); /* FLASH */ - GEL_MapAdd(0x380080,1,0x00009,1,0); /* ADC_cal function*/ - GEL_MapAdd(0x380090,1,0x00001,1,0); /* PARTID value */ - GEL_MapAdd(0x380400,1,0x00400,1,0); /* OTP */ - GEL_MapAdd(0x3f8000,1,0x1000,1,1); /* L0 SARAM Mirror */ - GEL_MapAdd(0x3f9000,1,0x1000,1,1); /* L1 SARAM Mirror */ - GEL_MapAdd(0x3fA000,1,0x1000,1,1); /* L2 SARAM Mirror */ - GEL_MapAdd(0x3fb000,1,0x1000,1,1); /* L3 SARAM Mirror */ - GEL_MapAdd(0x3fe000,1,0x2000,1,0); /* BOOT ROM */ -} - - -/********************************************************************/ -/* The ESTOP0 fill functions are useful for debug. They fill the */ -/* RAM with software breakpoints that will trap runaway code. */ -/********************************************************************/ -hotmenu Fill_F28234_RAM_with_ESTOP0() -{ - GEL_MemoryFill(0x000000,1,0x000800,0x7625); /* Fill M0/M1 */ - GEL_MemoryFill(0x008000,1,0x002000,0x7625); /* Fill L0/L1 */ - GEL_MemoryFill(0x00A000,1,0x002000,0x7625); /* Fill L2/L3 */ - GEL_MemoryFill(0x00C000,1,0x002000,0x7625); /* Fill L4/L5 */ - GEL_MemoryFill(0x00E000,1,0x002000,0x7625); /* Fill L6/L7 */ -} - - -/********************************************************************/ -menuitem "Watchdog"; -hotmenu Disable_WD() -{ - *0x7029 = *0x7029 | 0x0068; /* Set the WDDIS bit */ - *0x7025 = 0x0055; /* Service the WD */ - *0x7025 = 0x00AA; /* once to be safe. */ - GEL_TextOut("\nWatchdog Timer Disabled"); -} - - -/********************************************************************/ -menuitem "Code Security Module" -hotmenu Unlock_CSM() -{ - /* Perform dummy reads of the password locations */ - XAR0 = *0x33FFF8; - XAR0 = *0x33FFF9; - XAR0 = *0x33FFFA; - XAR0 = *0x33FFFB; - XAR0 = *0x33FFFC; - XAR0 = *0x33FFFD; - XAR0 = *0x33FFFE; - XAR0 = *0x33FFFF; - - /* Write passwords to the KEY registers. 0xFFFF's are dummy passwords. - User should replace them with the correct password for their DSP */ - *0xAE0 = 0xFFFF; - *0xAE1 = 0xFFFF; - *0xAE2 = 0xFFFF; - *0xAE3 = 0xFFFF; - *0xAE4 = 0xFFFF; - *0xAE5 = 0xFFFF; - *0xAE6 = 0xFFFF; - *0xAE7 = 0xFFFF; -} - - -/********************************************************************/ -menuitem "Addressing Modes"; -hotmenu C28x_Mode() -{ - ST1 = ST1 & (~0x0100); /* AMODE = 0 */ - ST1 = ST1 | 0x0200; /* OBJMODE = 1 */ -} -hotmenu C24x_Mode() -{ - ST1 = ST1 | 0x0100; /* AMODE = 1 */ - ST1 = ST1 | 0x0200; /* OBJMODE = 1 */ -} -hotmenu C27x_Mode() -{ - ST1 = ST1 & (~0x0100); /* AMODE = 0 */ - ST1 = ST1 & (~0x0200); /* OBJMODE = 0 */ -} - - -/********************************************************************/ -/* PLL Ratios */ -/* */ -/* The following table describes the PLL clocking ratios (0..10) */ -/* */ -/* Ratio CLKIN Description */ -/* ----- -------------- ------------ */ -/* 0 OSCCLK/2 PLL bypassed */ -/* 1 (OSCCLK * 1)/2 15 Mhz for 30 Mhz CLKIN */ -/* 2 (OSCCLK * 2)/2 30 Mhz for 30 Mhz CLKIN */ -/* 3 (OSCCLK * 3)/2 45 Mhz for 30 Mhz CLKIN */ -/* 4 (OSCCLK * 4)/2 60 Mhz for 30 Mhz CLKIN */ -/* 5 (OSCCLK * 5)/2 75 Mhz for 30 Mhz CLKIN */ -/* 6 (OSCCLK * 6)/2 90 Mhz for 30 Mhz CLKIN */ -/* 7 (OSCCLK * 7)/2 105 Mhz for 30 Mhz CLKIN */ -/* 8 (OSCCLK * 8)/2 120 Mhz for 30 Mhz CLKIN */ -/* 9 (OSCCLK * 9)/2 135 Mhz for 30 Mhz CLKIN */ -/* 10 (OSCCLK * 10)/2 150 Mhz for 30 Mhz CLKIN */ -/********************************************************************/ -menuitem "Set PLL Ratio"; - -hotmenu Bypass() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 0; /* CLKIN = OSCCLK/2, PLL is bypassed */ - PLL_Wait(); -} -hotmenu OSCCLK_x1_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 1; /* CLKIN = (OSCCLK * 1)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x2_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 2; /* CLKIN = (OSCCLK * 2)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x3_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 3; /* CLKIN = (OSCCLK * 3)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x4_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 4; /* CLKIN = (OSCCLK * 4)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x5_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 5; /* CLKIN = (OSCCLK * 5)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x6_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 6; /* CLKIN = (OSCCLK * 6)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x7_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 7; /* CLKIN = (OSCCLK * 7)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x8_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 8; /* CLKIN = (OSCCLK * 8)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x9_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 9; /* CLKIN = (OSCCLK * 9)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x10_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 10; /* CLKIN = (OSCCLK * 10)/2 */ - PLL_Wait(); -} -// hotmenu OSCCLK_x1_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 1; /* CLKIN = (OSCCLK * 1)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x2_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 2; /* CLKIN = (OSCCLK * 2)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x3_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 3; /* CLKIN = (OSCCLK * 3)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x4_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 4; /* CLKIN = (OSCCLK * 4)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x5_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 5; /* CLKIN = (OSCCLK * 5)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x6_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 6; /* CLKIN = (OSCCLK * 6)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x7_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 7; /* CLKIN = (OSCCLK * 7)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x8_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 8; /* CLKIN = (OSCCLK * 8)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x9_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 9; /* CLKIN = (OSCCLK * 9)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x10_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 10; /* CLKIN = (OSCCLK * 10)/1 */ -// PLL_Wait(); -// } - - - -/********************************************************************/ -/* For F2823x devices, DIVSEL is 1/4 by default. Switch it to 1/2 */ -/********************************************************************/ - -DIVSEL_div2() -{ - int temp; - int PLLSTS; - - PLLSTS = 0x7011; - - temp = *PLLSTS; - temp &= 0xFE7F; /* Clear bits 7 & 8 */ - temp |= 2 << 7; /* Set bit 8 */ - *PLLSTS = temp; /* Switch to 1/2 */ -} - - - -/********************************************************************/ -/* For F2823x devices, DIVSEL is 1/4 by default. Switch it to /1 */ -/********************************************************************/ - -DIVSEL_div1() -{ - int temp; - int PLLSTS; - - PLLSTS = 0x7011; - - DIVSEL_div2(); /* First switch DIVSEL to 1/2 and wait */ - wait(); - temp = *PLLSTS; - temp |= 3 << 7; /* Set bits 7 & 8 */ - *PLLSTS = temp; /* Switch to 1/2 */ -} - -wait() -{ - int delay = 0; - for (delay = 0; delay <= 5; delay ++) - {} -} - -/********************************************************************/ -/* For F2823x devices, check the PLLOCKS bit for PLL lock. */ -/********************************************************************/ -PLL_Wait() -{ - int PLLSTS; - int delay = 0; - - PLLSTS = 0x7011; - - - while ( ( (unsigned int)*PLLSTS & 0x0001) != 0x0001) - { - delay++; - GEL_TextOut("Waiting for PLL Lock, PLLSTS = %x\n",,,,,(unsigned int)*PLLSTS); - } - GEL_TextOut("\nPLL lock complete, PLLSTS = %x\n",,,,,(unsigned int)*PLLSTS); -} - -/********************************************************************/ -/* Load the ADC Calibration values from TI OTP */ -/********************************************************************/ -menuitem "ADC Calibration" -hotmenu ADC_Cal() -{ - /* Perform dummy reads of the password locations */ - XAR0 = *0x33FFF8; - XAR0 = *0x33FFF9; - XAR0 = *0x33FFFA; - XAR0 = *0x33FFFB; - XAR0 = *0x33FFFC; - XAR0 = *0x33FFFD; - XAR0 = *0x33FFFE; - XAR0 = *0x33FFFF; - - if(((*0x0AEF) & 0x0001) == 0) - { - XAR0 = *0x701C; - *0x701C |= 0x0008; - *0x711C = *0x380083; - *0x711D = *0x380085; - *0x701C = XAR0; - XAR0 = 0; - } - else - { - GEL_TextOut("\nADC Calibration not complete, device is secure"); - } -} - -/********************************************************************/ -/* Enable the XINTF and configure GPIOs for XINTF function */ -/********************************************************************/ -menuitem "XINTF Enable" -hotmenu XINTF_Enable() -{ - - /* enable XINTF clock (XTIMCLK) */ - - *0x7020 = 0x3700; - /* GPBMUX1: XA0-XA7, XA16, XZCS0, */ - /* XZCS7, XREADY, XRNW, XWE0 */ - /* GPAMUX2: XA17-XA19, XZCS6 */ - /* GPCMUX2: XA8-XA15 */ - /* GPCMUX1: XD0-XD15 */ - *(unsigned long *)0x6F96 = 0xFFFFFFC0; /* GPBMUX1 */ - *(unsigned long *)0x6f88 = 0xFF000000; /* GPAMUX2 */ - *(unsigned long *)0x6FA8 = 0x0000AAAA; /* GPCMUX2 */ - *(unsigned long *)0x6FA6 = 0xAAAAAAAA; /* GPCMUX1 */ - - /* Uncomment for x32 data bus */ - /* GPBMUX2: XD16-XD31 */ -// *(unsigned long *)0x6F98 = 0xFFFFFFFF; /* GPBMUX2 */ - - /* Zone timing. - /* Each zone can be configured seperately */ - /* Uncomment the x16 or the x32 timing */ - /* depending on the data bus width for */ - /* the zone */ - - /* x16 Timing */ - *(unsigned long *)0x0B20 = 0x0043FFFF; /* Zone0 */ - *(unsigned long *)0x0B2C = 0x0043FFFF; /* Zone6 */ - *(unsigned long *)0x0B2E = 0x0043FFFF; /* Zone7 */ - - /* x32 Timing: -// *(unsigned long *)0x0B20 = 0x0041FFFF; /* x32 */ -// *(unsigned long *)0x0B2C = 0x0041FFFF; /* x32 */ -// *(unsigned long *)0x0B2E = 0x0041FFFF; /* x32 */ - -} - -/********************************************************************/ -/* The below are used to display the symbolic names of the F28234 */ -/* memory mapped registers in the watch window. To view these */ -/* registers, click on the GEL menu button in Code Composer Studio, */ -/* then select which registers or groups of registers you want to */ -/* view. They will appear in the watch window under the Watch1 tab. */ -/********************************************************************/ - -/* Add a space line to the GEL menu */ -menuitem "______________________________________"; -hotmenu __() {} - -/********************************************************************/ -/* A/D Converter Registers */ -/********************************************************************/ -menuitem "Watch ADC Registers"; - -hotmenu All_ADC_Regs() -{ - GEL_WatchAdd("*0x7100,x","ADCTRL1"); - GEL_WatchAdd("*0x7101,x","ADCTRL2"); - GEL_WatchAdd("*0x7102,x","ADCMAXCONV"); - GEL_WatchAdd("*0x7103,x","ADCCHSELSEQ1"); - GEL_WatchAdd("*0x7104,x","ADCCHSELSEQ2"); - GEL_WatchAdd("*0x7105,x","ADCCHSELSEQ3"); - GEL_WatchAdd("*0x7106,x","ADCCHSELSEQ4"); - GEL_WatchAdd("*0x7107,x","ADCASEQSR"); - GEL_WatchAdd("*0x7108,x","ADCRESULT0"); - GEL_WatchAdd("*0x7109,x","ADCRESULT1"); - GEL_WatchAdd("*0x710A,x","ADCRESULT2"); - GEL_WatchAdd("*0x710B,x","ADCRESULT3"); - GEL_WatchAdd("*0x710C,x","ADCRESULT4"); - GEL_WatchAdd("*0x710D,x","ADCRESULT5"); - GEL_WatchAdd("*0x710E,x","ADCRESULT6"); - GEL_WatchAdd("*0x710F,x","ADCRESULT7"); - GEL_WatchAdd("*0x7110,x","ADCRESULT8"); - GEL_WatchAdd("*0x7111,x","ADCRESULT9"); - GEL_WatchAdd("*0x7112,x","ADCRESULT10"); - GEL_WatchAdd("*0x7113,x","ADCRESULT11"); - GEL_WatchAdd("*0x7114,x","ADCRESULT12"); - GEL_WatchAdd("*0x7115,x","ADCRESULT13"); - GEL_WatchAdd("*0x7116,x","ADCRESULT14"); - GEL_WatchAdd("*0x7117,x","ADCRESULT15"); - GEL_WatchAdd("*0x7118,x","ADCTRL3"); - GEL_WatchAdd("*0x7119,x","ADCST"); - GEL_WatchAdd("*0x711C,x","ADCREFSEL"); - GEL_WatchAdd("*0x711D,x","ADCOFFTRIM"); - - GEL_WatchAdd("*0x0B00,x","ADCRESULT0 Mirror"); - GEL_WatchAdd("*0x0B01,x","ADCRESULT1 Mirror"); - GEL_WatchAdd("*0x0B02,x","ADCRESULT2 Mirror"); - GEL_WatchAdd("*0x0B03,x","ADCRESULT3 Mirror"); - GEL_WatchAdd("*0x0B04,x","ADCRESULT4 Mirror"); - GEL_WatchAdd("*0x0B05,x","ADCRESULT5 Mirror"); - GEL_WatchAdd("*0x0B06,x","ADCRESULT6 Mirror"); - GEL_WatchAdd("*0x0B07,x","ADCRESULT7 Mirror"); - GEL_WatchAdd("*0x0B08,x","ADCRESULT8 Mirror"); - GEL_WatchAdd("*0x0B09,x","ADCRESULT9 Mirror"); - GEL_WatchAdd("*0x0B0A,x","ADCRESULT10 Mirror"); - GEL_WatchAdd("*0x0B0B,x","ADCRESULT11 Mirror"); - GEL_WatchAdd("*0x0B0C,x","ADCRESULT12 Mirror"); - GEL_WatchAdd("*0x0B0D,x","ADCRESULT13 Mirror"); - GEL_WatchAdd("*0x0B0E,x","ADCRESULT14 Mirror"); - GEL_WatchAdd("*0x0B0F,x","ADCRESULT15 Mirror"); -} -hotmenu ADC_Control_Regs() -{ - GEL_WatchAdd("*0x7100,x","ADCTRL1"); - GEL_WatchAdd("*0x7101,x","ADCTRL2"); - GEL_WatchAdd("*0x7102,x","ADCMAXCONV"); - GEL_WatchAdd("*0x7107,x","ADCASEQSR"); - GEL_WatchAdd("*0x7118,x","ADCTRL3"); - GEL_WatchAdd("*0x7119,x","ADCST"); - GEL_WatchAdd("*0x711C,x","ADCREFSEL"); - GEL_WatchAdd("*0x711D,x","ADCOFFTRIM"); -} -hotmenu ADCCHSELSEQx_Regs() -{ - GEL_WatchAdd("*0x7103,x","ADCCHSELSEQ1"); - GEL_WatchAdd("*0x7104,x","ADCCHSELSEQ2"); - GEL_WatchAdd("*0x7105,x","ADCCHSELSEQ3"); - GEL_WatchAdd("*0x7106,x","ADCCHSELSEQ4"); -} -hotmenu ADCRESULT_0_to_7() -{ - GEL_WatchAdd("*0x7108,x","ADCRESULT0"); - GEL_WatchAdd("*0x7109,x","ADCRESULT1"); - GEL_WatchAdd("*0x710A,x","ADCRESULT2"); - GEL_WatchAdd("*0x710B,x","ADCRESULT3"); - GEL_WatchAdd("*0x710C,x","ADCRESULT4"); - GEL_WatchAdd("*0x710D,x","ADCRESULT5"); - GEL_WatchAdd("*0x710E,x","ADCRESULT6"); - GEL_WatchAdd("*0x710F,x","ADCRESULT7"); -} -hotmenu ADCRESULT_8_to_15() -{ - GEL_WatchAdd("*0x7110,x","ADCRESULT8"); - GEL_WatchAdd("*0x7111,x","ADCRESULT9"); - GEL_WatchAdd("*0x7112,x","ADCRESULT10"); - GEL_WatchAdd("*0x7113,x","ADCRESULT11"); - GEL_WatchAdd("*0x7114,x","ADCRESULT12"); - GEL_WatchAdd("*0x7115,x","ADCRESULT13"); - GEL_WatchAdd("*0x7116,x","ADCRESULT14"); - GEL_WatchAdd("*0x7117,x","ADCRESULT15"); -} -hotmenu ADCRESULT_Mirror_0_to_7() -{ - GEL_WatchAdd("*0x0B00,x","ADCRESULT0 Mirror"); - GEL_WatchAdd("*0x0B01,x","ADCRESULT1 Mirror"); - GEL_WatchAdd("*0x0B02,x","ADCRESULT2 Mirror"); - GEL_WatchAdd("*0x0B03,x","ADCRESULT3 Mirror"); - GEL_WatchAdd("*0x0B04,x","ADCRESULT4 Mirror"); - GEL_WatchAdd("*0x0B05,x","ADCRESULT5 Mirror"); - GEL_WatchAdd("*0x0B06,x","ADCRESULT6 Mirror"); - GEL_WatchAdd("*0x0B07,x","ADCRESULT7 Mirror"); -} -hotmenu ADCRESULT_Mirror_8_to_15() -{ - GEL_WatchAdd("*0x0B08,x","ADCRESULT8 Mirror"); - GEL_WatchAdd("*0x0B09,x","ADCRESULT9 Mirror"); - GEL_WatchAdd("*0x0B0A,x","ADCRESULT10 Mirror"); - GEL_WatchAdd("*0x0B0B,x","ADCRESULT11 Mirror"); - GEL_WatchAdd("*0x0B0C,x","ADCRESULT12 Mirror"); - GEL_WatchAdd("*0x0B0D,x","ADCRESULT13 Mirror"); - GEL_WatchAdd("*0x0B0E,x","ADCRESULT14 Mirror"); - GEL_WatchAdd("*0x0B0F,x","ADCRESULT15 Mirror"); -} - - -/********************************************************************/ -/* Clocking and Low-Power Registers */ -/********************************************************************/ -menuitem "Watch Clocking and Low-Power Registers"; - -hotmenu All_Clocking_and_Low_Power_Regs() -{ - GEL_WatchAdd("*0x7010,x","XCLK"); - GEL_WatchAdd("*0x7011,x","PLLSTS"); - GEL_WatchAdd("*0x701A,x","HISPCP"); - GEL_WatchAdd("*0x701B,x","LOSPCP"); - GEL_WatchAdd("*0x701C,x","PCLKCR0"); - GEL_WatchAdd("*0x701D,x","PCLKCR1"); - GEL_WatchAdd("*0x701E,x","LPMCR0"); - GEL_WatchAdd("*0x7020,x","PCLKCR3"); - GEL_WatchAdd("*0x7021,x","PLLCR"); -} - -/********************************************************************/ -/* Code Security Module Registers */ -/********************************************************************/ -menuitem "Watch Code Security Module Registers"; - -hotmenu CSMSCR() -{ - GEL_WatchAdd("*0x0AEF,x","CSMSCR"); - GEL_WatchAdd("(*0x0AEF>>15)&1,d"," FORCESEC bit"); - GEL_WatchAdd("(*0x0AEF)&1,d"," SECURE bit"); -} -hotmenu PWL_Locations() -{ - GEL_WatchAdd("*0x33FFF8,x","PWL0"); - GEL_WatchAdd("*0x33FFF9,x","PWL1"); - GEL_WatchAdd("*0x33FFFA,x","PWL2"); - GEL_WatchAdd("*0x33FFFB,x","PWL3"); - GEL_WatchAdd("*0x33FFFC,x","PWL4"); - GEL_WatchAdd("*0x33FFFD,x","PWL5"); - GEL_WatchAdd("*0x33FFFE,x","PWL6"); - GEL_WatchAdd("*0x33FFFF,x","PWL7"); -} - - -/********************************************************************/ -/* CPU Timer Registers */ -/********************************************************************/ -menuitem "Watch CPU Timer Registers"; - -hotmenu All_CPU_Timer0_Regs() -{ - GEL_WatchAdd("*0x0C00,x","TIMER0TIM"); - GEL_WatchAdd("*0x0C01,x","TIMER0TIMH"); - GEL_WatchAdd("*0x0C02,x","TIMER0PRD"); - GEL_WatchAdd("*0x0C03,x","TIMER0PRDH"); - GEL_WatchAdd("*0x0C04,x","TIMER0TCR"); - GEL_WatchAdd("*0x0C06,x","TIMER0TPR"); - GEL_WatchAdd("*0x0C07,x","TIMER0TPRH"); -} -hotmenu All_CPU_Timer1_Regs() -{ - GEL_WatchAdd("*0x0C08,x","TIMER1TIM"); - GEL_WatchAdd("*0x0C09,x","TIMER1TIMH"); - GEL_WatchAdd("*0x0C0A,x","TIMER1PRD"); - GEL_WatchAdd("*0x0C0B,x","TIMER1PRDH"); - GEL_WatchAdd("*0x0C0C,x","TIMER1TCR"); - GEL_WatchAdd("*0x0C0E,x","TIMER1TPR"); - GEL_WatchAdd("*0x0C0F,x","TIMER1TPRH"); -} -hotmenu All_CPU_Timer2_Regs() -{ - GEL_WatchAdd("*0x0C10,x","TIMER2TIM"); - GEL_WatchAdd("*0x0C11,x","TIMER2TIMH"); - GEL_WatchAdd("*0x0C12,x","TIMER2PRD"); - GEL_WatchAdd("*0x0C13,x","TIMER2PRDH"); - GEL_WatchAdd("*0x0C14,x","TIMER2TCR"); - GEL_WatchAdd("*0x0C16,x","TIMER2TPR"); - GEL_WatchAdd("*0x0C17,x","TIMER2TPRH"); -} - - -/********************************************************************/ -/* Device Emulation Registers */ -/********************************************************************/ -menuitem "Watch Device Emulation Registers"; - -hotmenu All_Emulation_Regs() -{ - GEL_WatchAdd("*(long *)0x0880,x","DEVICECNF"); - GEL_WatchAdd("*0x0882,x","CLASSID"); - GEL_WatchAdd("*0x0883,x","REVID"); - GEL_WatchAdd("*0x0884,x","PROTSTART"); - GEL_WatchAdd("*0x0885,x","PROTRANGE"); - GEL_WatchAdd("*0x380090,x","PARTID"); -} - -/********************************************************************/ -/* DMA Registers */ -/********************************************************************/ -menuitem "Watch DMA Registers"; - -hotmenu All_DMA_Regs() -{ - GEL_WatchAdd("*0x1000,x","DMACTRL"); - GEL_WatchAdd("*0x1001,x","DEBUGCTRL"); - GEL_WatchAdd("*0x1002,x","REVISION"); - GEL_WatchAdd("*0x1004,x","PRIORITYCTRL1"); - GEL_WatchAdd("*0x1006,x","PRIORITYSTAT"); - - GEL_WatchAdd("*0x1020,x","DMA Ch1 MODE"); - GEL_WatchAdd("*0x1021,x","DMA Ch1 CONTROL"); - GEL_WatchAdd("*0x1022,x","DMA Ch1 BURST_SIZE"); - GEL_WatchAdd("*0x1023,x","DMA Ch1 BURST_COUNT"); - GEL_WatchAdd("*0x1024,x","DMA Ch1 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1025,x","DMA Ch1 DST_BURST_STEP"); - GEL_WatchAdd("*0x1026,x","DMA Ch1 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1027,x","DMA Ch1 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1028,x","DMA Ch1 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1029,x","DMA Ch1 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x102A,x","DMA Ch1 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x102B,x","DMA Ch1 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x102C,x","DMA Ch1 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x102D,x","DMA Ch1 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x102E,x","DMA Ch1 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x102F,x","DMA Ch1 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1030,x","DMA Ch1 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1032,x","DMA Ch1 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1034,x","DMA Ch1 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1036,x","DMA Ch1 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1038,x","DMA Ch1 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x103A,x","DMA Ch1 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x103C,x","DMA Ch1 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x103E,x","DMA Ch1 DST_ADDR_ACTIVE"); - - GEL_WatchAdd("*0x1040,x","DMA Ch2 MODE"); - GEL_WatchAdd("*0x1041,x","DMA Ch2 CONTROL"); - GEL_WatchAdd("*0x1042,x","DMA Ch2 BURST_SIZE"); - GEL_WatchAdd("*0x1043,x","DMA Ch2 BURST_COUNT"); - GEL_WatchAdd("*0x1044,x","DMA Ch2 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1045,x","DMA Ch2 DST_BURST_STEP"); - GEL_WatchAdd("*0x1046,x","DMA Ch2 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1047,x","DMA Ch2 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1048,x","DMA Ch2 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1049,x","DMA Ch2 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x104A,x","DMA Ch2 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x104B,x","DMA Ch2 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x104C,x","DMA Ch2 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x104D,x","DMA Ch2 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x104E,x","DMA Ch2 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x104F,x","DMA Ch2 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1050,x","DMA Ch2 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1052,x","DMA Ch2 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1054,x","DMA Ch2 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1056,x","DMA Ch2 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1058,x","DMA Ch2 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x105A,x","DMA Ch2 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x105C,x","DMA Ch2 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x105E,x","DMA Ch2 DST_ADDR_ACTIVE"); - - GEL_WatchAdd("*0x1060,x","DMA Ch3 MODE"); - GEL_WatchAdd("*0x1061,x","DMA Ch3 CONTROL"); - GEL_WatchAdd("*0x1062,x","DMA Ch3 BURST_SIZE"); - GEL_WatchAdd("*0x1063,x","DMA Ch3 BURST_COUNT"); - GEL_WatchAdd("*0x1064,x","DMA Ch3 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1065,x","DMA Ch3 DST_BURST_STEP"); - GEL_WatchAdd("*0x1066,x","DMA Ch3 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1067,x","DMA Ch3 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1068,x","DMA Ch3 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1069,x","DMA Ch3 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x106A,x","DMA Ch3 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x106B,x","DMA Ch3 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x106C,x","DMA Ch3 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x106D,x","DMA Ch3 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x106E,x","DMA Ch3 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x106F,x","DMA Ch3 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1070,x","DMA Ch3 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1072,x","DMA Ch3 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1074,x","DMA Ch3 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1076,x","DMA Ch3 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1078,x","DMA Ch3 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x107A,x","DMA Ch3 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x107C,x","DMA Ch3 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x107E,x","DMA Ch3 DST_ADDR_ACTIVE"); - - GEL_WatchAdd("*0x1080,x","DMA Ch4 MODE"); - GEL_WatchAdd("*0x1081,x","DMA Ch4 CONTROL"); - GEL_WatchAdd("*0x1082,x","DMA Ch4 BURST_SIZE"); - GEL_WatchAdd("*0x1083,x","DMA Ch4 BURST_COUNT"); - GEL_WatchAdd("*0x1084,x","DMA Ch4 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1085,x","DMA Ch4 DST_BURST_STEP"); - GEL_WatchAdd("*0x1086,x","DMA Ch4 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1087,x","DMA Ch4 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1088,x","DMA Ch4 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1089,x","DMA Ch4 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x108A,x","DMA Ch4 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x108B,x","DMA Ch4 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x108C,x","DMA Ch4 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x108D,x","DMA Ch4 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x108E,x","DMA Ch4 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x108F,x","DMA Ch4 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1090,x","DMA Ch4 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1092,x","DMA Ch4 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1094,x","DMA Ch4 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1096,x","DMA Ch4 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1098,x","DMA Ch4 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x109A,x","DMA Ch4 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x109C,x","DMA Ch4 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x109E,x","DMA Ch4 DST_ADDR_ACTIVE"); - - GEL_WatchAdd("*0x10A0,x","DMA Ch5 MODE"); - GEL_WatchAdd("*0x10A1,x","DMA Ch5 CONTROL"); - GEL_WatchAdd("*0x10A2,x","DMA Ch5 BURST_SIZE"); - GEL_WatchAdd("*0x10A3,x","DMA Ch5 BURST_COUNT"); - GEL_WatchAdd("*0x10A4,x","DMA Ch5 SRC_BURST_STEP"); - GEL_WatchAdd("*0x10A5,x","DMA Ch5 DST_BURST_STEP"); - GEL_WatchAdd("*0x10A6,x","DMA Ch5 TRANSFER_SIZE"); - GEL_WatchAdd("*0x10A7,x","DMA Ch5 TRANSFER_COUNT"); - GEL_WatchAdd("*0x10A8,x","DMA Ch5 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x10A9,x","DMA Ch5 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x10AA,x","DMA Ch5 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x10AB,x","DMA Ch5 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x10AC,x","DMA Ch5 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x10AD,x","DMA Ch5 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x10AE,x","DMA Ch5 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x10AF,x","DMA Ch5 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x10B0,x","DMA Ch5 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10B2,x","DMA Ch5 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10B4,x","DMA Ch5 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10B6,x","DMA Ch5 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10B8,x","DMA Ch5 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10BA,x","DMA Ch5 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10BC,x","DMA Ch5 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10BE,x","DMA Ch5 DST_ADDR_ACTIVE"); - - GEL_WatchAdd("*0x10C0,x","DMA Ch6 MODE"); - GEL_WatchAdd("*0x10C1,x","DMA Ch6 CONTROL"); - GEL_WatchAdd("*0x10C2,x","DMA Ch6 BURST_SIZE"); - GEL_WatchAdd("*0x10C3,x","DMA Ch6 BURST_COUNT"); - GEL_WatchAdd("*0x10C4,x","DMA Ch6 SRC_BURST_STEP"); - GEL_WatchAdd("*0x10C5,x","DMA Ch6 DST_BURST_STEP"); - GEL_WatchAdd("*0x10C6,x","DMA Ch6 TRANSFER_SIZE"); - GEL_WatchAdd("*0x10C7,x","DMA Ch6 TRANSFER_COUNT"); - GEL_WatchAdd("*0x10C8,x","DMA Ch6 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x10C9,x","DMA Ch6 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x10CA,x","DMA Ch6 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x10CB,x","DMA Ch6 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x10CC,x","DMA Ch6 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x10CD,x","DMA Ch6 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x10CE,x","DMA Ch6 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x10CF,x","DMA Ch6 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x10D0,x","DMA Ch6 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10D2,x","DMA Ch6 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10D4,x","DMA Ch6 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10D6,x","DMA Ch6 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10D8,x","DMA Ch6 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10DA,x","DMA Ch6 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10DC,x","DMA Ch6 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10DE,x","DMA Ch6 DST_ADDR_ACTIVE"); - - -} -hotmenu DMA_Channel_1_regs() -{ - GEL_WatchAdd("*0x1020,x","DMA Ch1 MODE"); - GEL_WatchAdd("*0x1021,x","DMA Ch1 CONTROL"); - GEL_WatchAdd("*0x1022,x","DMA Ch1 BURST_SIZE"); - GEL_WatchAdd("*0x1023,x","DMA Ch1 BURST_COUNT"); - GEL_WatchAdd("*0x1024,x","DMA Ch1 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1025,x","DMA Ch1 DST_BURST_STEP"); - GEL_WatchAdd("*0x1026,x","DMA Ch1 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1027,x","DMA Ch1 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1028,x","DMA Ch1 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1029,x","DMA Ch1 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x102A,x","DMA Ch1 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x102B,x","DMA Ch1 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x102C,x","DMA Ch1 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x102D,x","DMA Ch1 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x102E,x","DMA Ch1 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x102F,x","DMA Ch1 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1030,x","DMA Ch1 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1032,x","DMA Ch1 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1034,x","DMA Ch1 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1036,x","DMA Ch1 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1038,x","DMA Ch1 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x103A,x","DMA Ch1 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x103C,x","DMA Ch1 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x103E,x","DMA Ch1 DST_ADDR_ACTIVE"); -} - -hotmenu DMA_Channel_2_regs() -{ - GEL_WatchAdd("*0x1040,x","DMA Ch2 MODE"); - GEL_WatchAdd("*0x1041,x","DMA Ch2 CONTROL"); - GEL_WatchAdd("*0x1042,x","DMA Ch2 BURST_SIZE"); - GEL_WatchAdd("*0x1043,x","DMA Ch2 BURST_COUNT"); - GEL_WatchAdd("*0x1044,x","DMA Ch2 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1045,x","DMA Ch2 DST_BURST_STEP"); - GEL_WatchAdd("*0x1046,x","DMA Ch2 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1047,x","DMA Ch2 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1048,x","DMA Ch2 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1049,x","DMA Ch2 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x104A,x","DMA Ch2 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x104B,x","DMA Ch2 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x104C,x","DMA Ch2 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x104D,x","DMA Ch2 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x104E,x","DMA Ch2 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x104F,x","DMA Ch2 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1050,x","DMA Ch2 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1052,x","DMA Ch2 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1054,x","DMA Ch2 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1056,x","DMA Ch2 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1058,x","DMA Ch2 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x105A,x","DMA Ch2 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x105C,x","DMA Ch2 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x105E,x","DMA Ch2 DST_ADDR_ACTIVE"); -} -hotmenu DMA_Channel_3_regs() -{ - GEL_WatchAdd("*0x1060,x","DMA Ch3 MODE"); - GEL_WatchAdd("*0x1061,x","DMA Ch3 CONTROL"); - GEL_WatchAdd("*0x1062,x","DMA Ch3 BURST_SIZE"); - GEL_WatchAdd("*0x1063,x","DMA Ch3 BURST_COUNT"); - GEL_WatchAdd("*0x1064,x","DMA Ch3 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1065,x","DMA Ch3 DST_BURST_STEP"); - GEL_WatchAdd("*0x1066,x","DMA Ch3 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1067,x","DMA Ch3 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1068,x","DMA Ch3 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1069,x","DMA Ch3 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x106A,x","DMA Ch3 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x106B,x","DMA Ch3 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x106C,x","DMA Ch3 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x106D,x","DMA Ch3 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x106E,x","DMA Ch3 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x106F,x","DMA Ch3 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1070,x","DMA Ch3 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1072,x","DMA Ch3 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1074,x","DMA Ch3 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1076,x","DMA Ch3 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1078,x","DMA Ch3 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x107A,x","DMA Ch3 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x107C,x","DMA Ch3 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x107E,x","DMA Ch3 DST_ADDR_ACTIVE"); -} -hotmenu DMA_Channel_4_regs() -{ - GEL_WatchAdd("*0x1080,x","DMA Ch4 MODE"); - GEL_WatchAdd("*0x1081,x","DMA Ch4 CONTROL"); - GEL_WatchAdd("*0x1082,x","DMA Ch4 BURST_SIZE"); - GEL_WatchAdd("*0x1083,x","DMA Ch4 BURST_COUNT"); - GEL_WatchAdd("*0x1084,x","DMA Ch4 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1085,x","DMA Ch4 DST_BURST_STEP"); - GEL_WatchAdd("*0x1086,x","DMA Ch4 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1087,x","DMA Ch4 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1088,x","DMA Ch4 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1089,x","DMA Ch4 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x108A,x","DMA Ch4 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x108B,x","DMA Ch4 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x108C,x","DMA Ch4 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x108D,x","DMA Ch4 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x108E,x","DMA Ch4 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x108F,x","DMA Ch4 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1090,x","DMA Ch4 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1092,x","DMA Ch4 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1094,x","DMA Ch4 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1096,x","DMA Ch4 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1098,x","DMA Ch4 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x109A,x","DMA Ch4 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x109C,x","DMA Ch4 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x109E,x","DMA Ch4 DST_ADDR_ACTIVE"); -} -hotmenu DMA_Channel_5_regs() -{ - GEL_WatchAdd("*0x10A0,x","DMA Ch5 MODE"); - GEL_WatchAdd("*0x10A1,x","DMA Ch5 CONTROL"); - GEL_WatchAdd("*0x10A2,x","DMA Ch5 BURST_SIZE"); - GEL_WatchAdd("*0x10A3,x","DMA Ch5 BURST_COUNT"); - GEL_WatchAdd("*0x10A4,x","DMA Ch5 SRC_BURST_STEP"); - GEL_WatchAdd("*0x10A5,x","DMA Ch5 DST_BURST_STEP"); - GEL_WatchAdd("*0x10A6,x","DMA Ch5 TRANSFER_SIZE"); - GEL_WatchAdd("*0x10A7,x","DMA Ch5 TRANSFER_COUNT"); - GEL_WatchAdd("*0x10A8,x","DMA Ch5 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x10A9,x","DMA Ch5 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x10AA,x","DMA Ch5 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x10AB,x","DMA Ch5 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x10AC,x","DMA Ch5 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x10AD,x","DMA Ch5 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x10AE,x","DMA Ch5 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x10AF,x","DMA Ch5 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x10B0,x","DMA Ch5 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10B2,x","DMA Ch5 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10B4,x","DMA Ch5 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10B6,x","DMA Ch5 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10B8,x","DMA Ch5 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10BA,x","DMA Ch5 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10BC,x","DMA Ch5 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10BE,x","DMA Ch5 DST_ADDR_ACTIVE"); -} -hotmenu DMA_Channel_6_regs() -{ - GEL_WatchAdd("*0x10C0,x","DMA Ch6 MODE"); - GEL_WatchAdd("*0x10C1,x","DMA Ch6 CONTROL"); - GEL_WatchAdd("*0x10C2,x","DMA Ch6 BURST_SIZE"); - GEL_WatchAdd("*0x10C3,x","DMA Ch6 BURST_COUNT"); - GEL_WatchAdd("*0x10C4,x","DMA Ch6 SRC_BURST_STEP"); - GEL_WatchAdd("*0x10C5,x","DMA Ch6 DST_BURST_STEP"); - GEL_WatchAdd("*0x10C6,x","DMA Ch6 TRANSFER_SIZE"); - GEL_WatchAdd("*0x10C7,x","DMA Ch6 TRANSFER_COUNT"); - GEL_WatchAdd("*0x10C8,x","DMA Ch6 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x10C9,x","DMA Ch6 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x10CA,x","DMA Ch6 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x10CB,x","DMA Ch6 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x10CC,x","DMA Ch6 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x10CD,x","DMA Ch6 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x10CE,x","DMA Ch6 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x10CF,x","DMA Ch6 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x10D0,x","DMA Ch6 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10D2,x","DMA Ch6 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10D4,x","DMA Ch6 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10D6,x","DMA Ch6 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10D8,x","DMA Ch6 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10DA,x","DMA Ch6 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10DC,x","DMA Ch6 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10DE,x","DMA Ch6 DST_ADDR_ACTIVE"); -} - -/********************************************************************/ -/* eCAN Registers */ -/********************************************************************/ -menuitem "Watch eCAN Registers"; - -hotmenu eCAN_A_Global_Regs() -{ - GEL_WatchAdd("*(long *)0x6000,x","eCANA CANME"); - GEL_WatchAdd("*(long *)0x6002,x","eCANA CANMD"); - GEL_WatchAdd("*(long *)0x6004,x","eCANA CANTRS"); - GEL_WatchAdd("*(long *)0x6006,x","eCANA CANTRR"); - GEL_WatchAdd("*(long *)0x6008,x","eCANA CANTA"); - GEL_WatchAdd("*(long *)0x600A,x","eCANA CANAA"); - GEL_WatchAdd("*(long *)0x600C,x","eCANA CANRMP"); - GEL_WatchAdd("*(long *)0x600E,x","eCANA CANRML"); - GEL_WatchAdd("*(long *)0x6010,x","eCANA CANRFP"); - GEL_WatchAdd("*(long *)0x6014,x","eCANA CANMC"); - GEL_WatchAdd("*(long *)0x6016,x","eCANA CANBTC"); - GEL_WatchAdd("*(long *)0x6018,x","eCANA CANES"); - GEL_WatchAdd("*(long *)0x601A,x","eCANA CANTEC"); - GEL_WatchAdd("*(long *)0x601C,x","eCANA CANREC"); - GEL_WatchAdd("*(long *)0x601E,x","eCANA CANGIF0"); - GEL_WatchAdd("*(long *)0x6020,x","eCANA CANGIM"); - GEL_WatchAdd("*(long *)0x6022,x","eCANA CANGIF1"); - GEL_WatchAdd("*(long *)0x6024,x","eCANA CANMIM"); - GEL_WatchAdd("*(long *)0x6026,x","eCANA CANMIL"); - GEL_WatchAdd("*(long *)0x6028,x","eCANA CANOPC"); - GEL_WatchAdd("*(long *)0x602A,x","eCANA CANTIOC"); - GEL_WatchAdd("*(long *)0x602C,x","eCANA CANRIOC"); - GEL_WatchAdd("*(long *)0x602E,x","eCANA CANLNT"); - GEL_WatchAdd("*(long *)0x6030,x","eCANA CANTOC"); - GEL_WatchAdd("*(long *)0x6032,x","eCANA CANTOS"); -} -hotmenu eCAN_A_Mailbox_0_to_1_Regs() -{ - GEL_WatchAdd("*(long *)0x6040,x","eCANA LAM0"); - GEL_WatchAdd("*(long *)0x6080,x","eCANA MOTS0"); - GEL_WatchAdd("*(long *)0x60C0,x","eCANA MOTO0"); - GEL_WatchAdd("*(long *)0x6100,x","eCANA MID0"); - GEL_WatchAdd("*(long *)0x6102,x","eCANA MCF0"); - GEL_WatchAdd("*(long *)0x6104,x","eCANA MDL0"); - GEL_WatchAdd("*(long *)0x6106,x","eCANA MDH0"); - - GEL_WatchAdd("*(long *)0x6042,x","eCANA LAM1"); - GEL_WatchAdd("*(long *)0x6082,x","eCANA MOTS1"); - GEL_WatchAdd("*(long *)0x60C2,x","eCANA MOTO1"); - GEL_WatchAdd("*(long *)0x6108,x","eCANA MID1"); - GEL_WatchAdd("*(long *)0x610A,x","eCANA MCF1"); - GEL_WatchAdd("*(long *)0x610C,x","eCANA MDL1"); - GEL_WatchAdd("*(long *)0x610E,x","eCANA MDH1"); -} -hotmenu eCAN_A_Mailbox_2_to_3_Regs() -{ - GEL_WatchAdd("*(long *)0x6044,x","eCANA LAM2"); - GEL_WatchAdd("*(long *)0x6084,x","eCANA MOTS2"); - GEL_WatchAdd("*(long *)0x60C4,x","eCANA MOTO2"); - GEL_WatchAdd("*(long *)0x6110,x","eCANA MID2"); - GEL_WatchAdd("*(long *)0x6112,x","eCANA MCF2"); - GEL_WatchAdd("*(long *)0x6114,x","eCANA MDL2"); - GEL_WatchAdd("*(long *)0x6116,x","eCANA MDH2"); - - GEL_WatchAdd("*(long *)0x6046,x","eCANA LAM3"); - GEL_WatchAdd("*(long *)0x6086,x","eCANA MOTS3"); - GEL_WatchAdd("*(long *)0x60C6,x","eCANA MOTO3"); - GEL_WatchAdd("*(long *)0x6118,x","eCANA MID3"); - GEL_WatchAdd("*(long *)0x611A,x","eCANA MCF3"); - GEL_WatchAdd("*(long *)0x611C,x","eCANA MDL3"); - GEL_WatchAdd("*(long *)0x611E,x","eCANA MDH3"); -} -hotmenu eCAN_A_Mailbox_4_to_5_Regs() -{ - GEL_WatchAdd("*(long *)0x6048,x","eCANA LAM4"); - GEL_WatchAdd("*(long *)0x6088,x","eCANA MOTS4"); - GEL_WatchAdd("*(long *)0x60C8,x","eCANA MOTO4"); - GEL_WatchAdd("*(long *)0x6120,x","eCANA MID4"); - GEL_WatchAdd("*(long *)0x6122,x","eCANA MCF4"); - GEL_WatchAdd("*(long *)0x6124,x","eCANA MDL4"); - GEL_WatchAdd("*(long *)0x6126,x","eCANA MDH4"); - - GEL_WatchAdd("*(long *)0x604A,x","eCANA LAM5"); - GEL_WatchAdd("*(long *)0x608A,x","eCANA MOTS5"); - GEL_WatchAdd("*(long *)0x60CA,x","eCANA MOTO5"); - GEL_WatchAdd("*(long *)0x6128,x","eCANA MID5"); - GEL_WatchAdd("*(long *)0x612A,x","eCANA MCF5"); - GEL_WatchAdd("*(long *)0x612C,x","eCANA MDL5"); - GEL_WatchAdd("*(long *)0x612E,x","eCANA MDH5"); -} -hotmenu eCAN_A_Mailbox_6_to_7_Regs() -{ - GEL_WatchAdd("*(long *)0x604C,x","eCANA LAM6"); - GEL_WatchAdd("*(long *)0x608C,x","eCANA MOTS6"); - GEL_WatchAdd("*(long *)0x60CC,x","eCANA MOTO6"); - GEL_WatchAdd("*(long *)0x6130,x","eCANA MID6"); - GEL_WatchAdd("*(long *)0x6132,x","eCANA MCF6"); - GEL_WatchAdd("*(long *)0x6134,x","eCANA MDL6"); - GEL_WatchAdd("*(long *)0x6136,x","eCANA MDH6"); - - GEL_WatchAdd("*(long *)0x604E,x","eCANA LAM7"); - GEL_WatchAdd("*(long *)0x608E,x","eCANA MOTS7"); - GEL_WatchAdd("*(long *)0x60CE,x","eCANA MOTO7"); - GEL_WatchAdd("*(long *)0x6138,x","eCANA MID7"); - GEL_WatchAdd("*(long *)0x613A,x","eCANA MCF7"); - GEL_WatchAdd("*(long *)0x613C,x","eCANA MDL7"); - GEL_WatchAdd("*(long *)0x613E,x","eCANA MDH7"); -} -hotmenu eCAN_A_Mailbox_8_to_9_Regs() -{ - GEL_WatchAdd("*(long *)0x6050,x","eCANA LAM8"); - GEL_WatchAdd("*(long *)0x6090,x","eCANA MOTS8"); - GEL_WatchAdd("*(long *)0x60D0,x","eCANA MOTO8"); - GEL_WatchAdd("*(long *)0x6140,x","eCANA MID8"); - GEL_WatchAdd("*(long *)0x6142,x","eCANA MCF8"); - GEL_WatchAdd("*(long *)0x6144,x","eCANA MDL8"); - GEL_WatchAdd("*(long *)0x6146,x","eCANA MDH8"); - - GEL_WatchAdd("*(long *)0x6052,x","eCANA LAM9"); - GEL_WatchAdd("*(long *)0x6092,x","eCANA MOTS9"); - GEL_WatchAdd("*(long *)0x60D2,x","eCANA MOTO9"); - GEL_WatchAdd("*(long *)0x6148,x","eCANA MID9"); - GEL_WatchAdd("*(long *)0x614A,x","eCANA MCF9"); - GEL_WatchAdd("*(long *)0x614C,x","eCANA MDL9"); - GEL_WatchAdd("*(long *)0x614E,x","eCANA MDH9"); -} -hotmenu eCAN_A_Mailbox_10_to_11_Regs() -{ - GEL_WatchAdd("*(long *)0x6054,x","eCANA LAM10"); - GEL_WatchAdd("*(long *)0x6094,x","eCANA MOTS10"); - GEL_WatchAdd("*(long *)0x60D4,x","eCANA MOTO10"); - GEL_WatchAdd("*(long *)0x6150,x","eCANA MID10"); - GEL_WatchAdd("*(long *)0x6152,x","eCANA MCF10"); - GEL_WatchAdd("*(long *)0x6154,x","eCANA MDL10"); - GEL_WatchAdd("*(long *)0x6156,x","eCANA MDH10"); - - GEL_WatchAdd("*(long *)0x6056,x","eCANA LAM11"); - GEL_WatchAdd("*(long *)0x6096,x","eCANA MOTS11"); - GEL_WatchAdd("*(long *)0x60D6,x","eCANA MOTO11"); - GEL_WatchAdd("*(long *)0x6158,x","eCANA MID11"); - GEL_WatchAdd("*(long *)0x615A,x","eCANA MCF11"); - GEL_WatchAdd("*(long *)0x615C,x","eCANA MDL11"); - GEL_WatchAdd("*(long *)0x615E,x","eCANA MDH11"); -} -hotmenu eCAN_A_Mailbox_12_to_13_Regs() -{ - GEL_WatchAdd("*(long *)0x6058,x","eCANA LAM12"); - GEL_WatchAdd("*(long *)0x6098,x","eCANA MOTS12"); - GEL_WatchAdd("*(long *)0x60D8,x","eCANA MOTO12"); - GEL_WatchAdd("*(long *)0x6160,x","eCANA MID12"); - GEL_WatchAdd("*(long *)0x6162,x","eCANA MCF12"); - GEL_WatchAdd("*(long *)0x6164,x","eCANA MDL12"); - GEL_WatchAdd("*(long *)0x6166,x","eCANA MDH12"); - - GEL_WatchAdd("*(long *)0x605A,x","eCANA LAM13"); - GEL_WatchAdd("*(long *)0x609A,x","eCANA MOTS13"); - GEL_WatchAdd("*(long *)0x60DA,x","eCANA MOTO13"); - GEL_WatchAdd("*(long *)0x6168,x","eCANA MID13"); - GEL_WatchAdd("*(long *)0x616A,x","eCANA MCF13"); - GEL_WatchAdd("*(long *)0x616C,x","eCANA MDL13"); - GEL_WatchAdd("*(long *)0x616E,x","eCANA MDH13"); -} -hotmenu eCAN_A_Mailbox_14_to_15_Regs() -{ - GEL_WatchAdd("*(long *)0x605C,x","eCANA LAM14"); - GEL_WatchAdd("*(long *)0x609C,x","eCANA MOTS14"); - GEL_WatchAdd("*(long *)0x60DC,x","eCANA MOTO14"); - GEL_WatchAdd("*(long *)0x6170,x","eCANA MID14"); - GEL_WatchAdd("*(long *)0x6172,x","eCANA MCF14"); - GEL_WatchAdd("*(long *)0x6174,x","eCANA MDL14"); - GEL_WatchAdd("*(long *)0x6176,x","eCANA MDH14"); - - GEL_WatchAdd("*(long *)0x605E,x","eCANA LAM15"); - GEL_WatchAdd("*(long *)0x609E,x","eCANA MOTS15"); - GEL_WatchAdd("*(long *)0x60DE,x","eCANA MOTO15"); - GEL_WatchAdd("*(long *)0x6178,x","eCANA MID15"); - GEL_WatchAdd("*(long *)0x617A,x","eCANA MCF15"); - GEL_WatchAdd("*(long *)0x617C,x","eCANA MDL15"); - GEL_WatchAdd("*(long *)0x617E,x","eCANA MDH15"); -} -hotmenu eCAN_A_Mailbox_16_to_17_Regs() -{ - GEL_WatchAdd("*(long *)0x6060,x","eCANA LAM16"); - GEL_WatchAdd("*(long *)0x60A0,x","eCANA MOTS16"); - GEL_WatchAdd("*(long *)0x60E0,x","eCANA MOTO16"); - GEL_WatchAdd("*(long *)0x6180,x","eCANA MID16"); - GEL_WatchAdd("*(long *)0x6182,x","eCANA MCF16"); - GEL_WatchAdd("*(long *)0x6184,x","eCANA MDL16"); - GEL_WatchAdd("*(long *)0x6186,x","eCANA MDH16"); - - GEL_WatchAdd("*(long *)0x6062,x","eCANA LAM17"); - GEL_WatchAdd("*(long *)0x60A2,x","eCANA MOTS17"); - GEL_WatchAdd("*(long *)0x60E2,x","eCANA MOTO17"); - GEL_WatchAdd("*(long *)0x6188,x","eCANA MID17"); - GEL_WatchAdd("*(long *)0x618A,x","eCANA MCF17"); - GEL_WatchAdd("*(long *)0x618C,x","eCANA MDL17"); - GEL_WatchAdd("*(long *)0x618E,x","eCANA MDH17"); -} -hotmenu eCAN_A_Mailbox_18_to_19_Regs() -{ - GEL_WatchAdd("*(long *)0x6064,x","eCANA LAM18"); - GEL_WatchAdd("*(long *)0x60A4,x","eCANA MOTS18"); - GEL_WatchAdd("*(long *)0x60E4,x","eCANA MOTO18"); - GEL_WatchAdd("*(long *)0x6190,x","eCANA MID18"); - GEL_WatchAdd("*(long *)0x6192,x","eCANA MCF18"); - GEL_WatchAdd("*(long *)0x6194,x","eCANA MDL18"); - GEL_WatchAdd("*(long *)0x6196,x","eCANA MDH18"); - - GEL_WatchAdd("*(long *)0x6066,x","eCANA LAM19"); - GEL_WatchAdd("*(long *)0x60A6,x","eCANA MOTS19"); - GEL_WatchAdd("*(long *)0x60E6,x","eCANA MOTO19"); - GEL_WatchAdd("*(long *)0x6198,x","eCANA MID19"); - GEL_WatchAdd("*(long *)0x619A,x","eCANA MCF19"); - GEL_WatchAdd("*(long *)0x619C,x","eCANA MDL19"); - GEL_WatchAdd("*(long *)0x619E,x","eCANA MDH19"); -} -hotmenu eCAN_A_Mailbox_20_to_21_Regs() -{ - GEL_WatchAdd("*(long *)0x6068,x","eCANA LAM20"); - GEL_WatchAdd("*(long *)0x60A8,x","eCANA MOTS20"); - GEL_WatchAdd("*(long *)0x60E8,x","eCANA MOTO20"); - GEL_WatchAdd("*(long *)0x61A0,x","eCANA MID20"); - GEL_WatchAdd("*(long *)0x61A2,x","eCANA MCF20"); - GEL_WatchAdd("*(long *)0x61A4,x","eCANA MDL20"); - GEL_WatchAdd("*(long *)0x61A6,x","eCANA MDH20"); - - GEL_WatchAdd("*(long *)0x606A,x","eCANA LAM21"); - GEL_WatchAdd("*(long *)0x60AA,x","eCANA MOTS21"); - GEL_WatchAdd("*(long *)0x60EA,x","eCANA MOTO21"); - GEL_WatchAdd("*(long *)0x61A8,x","eCANA MID21"); - GEL_WatchAdd("*(long *)0x61AA,x","eCANA MCF21"); - GEL_WatchAdd("*(long *)0x61AC,x","eCANA MDL21"); - GEL_WatchAdd("*(long *)0x61AE,x","eCANA MDH21"); -} -hotmenu eCAN_A_Mailbox_22_to_23_Regs() -{ - GEL_WatchAdd("*(long *)0x606C,x","eCANA LAM22"); - GEL_WatchAdd("*(long *)0x60AC,x","eCANA MOTS22"); - GEL_WatchAdd("*(long *)0x60EC,x","eCANA MOTO22"); - GEL_WatchAdd("*(long *)0x61B0,x","eCANA MID22"); - GEL_WatchAdd("*(long *)0x61B2,x","eCANA MCF22"); - GEL_WatchAdd("*(long *)0x61B4,x","eCANA MDL22"); - GEL_WatchAdd("*(long *)0x61B6,x","eCANA MDH22"); - - GEL_WatchAdd("*(long *)0x606E,x","eCANA LAM23"); - GEL_WatchAdd("*(long *)0x60AE,x","eCANA MOTS23"); - GEL_WatchAdd("*(long *)0x60EE,x","eCANA MOTO23"); - GEL_WatchAdd("*(long *)0x61B8,x","eCANA MID23"); - GEL_WatchAdd("*(long *)0x61BA,x","eCANA MCF23"); - GEL_WatchAdd("*(long *)0x61BC,x","eCANA MDL23"); - GEL_WatchAdd("*(long *)0x61BE,x","eCANA MDH23"); -} -hotmenu eCAN_A_Mailbox_24_to_25_Regs() -{ - GEL_WatchAdd("*(long *)0x6070,x","eCANA LAM24"); - GEL_WatchAdd("*(long *)0x60B0,x","eCANA MOTS24"); - GEL_WatchAdd("*(long *)0x60F0,x","eCANA MOTO24"); - GEL_WatchAdd("*(long *)0x61C0,x","eCANA MID24"); - GEL_WatchAdd("*(long *)0x61C2,x","eCANA MCF24"); - GEL_WatchAdd("*(long *)0x61C4,x","eCANA MDL24"); - GEL_WatchAdd("*(long *)0x61C6,x","eCANA MDH24"); - - GEL_WatchAdd("*(long *)0x6072,x","eCANA LAM25"); - GEL_WatchAdd("*(long *)0x60B2,x","eCANA MOTS25"); - GEL_WatchAdd("*(long *)0x60F2,x","eCANA MOTO25"); - GEL_WatchAdd("*(long *)0x61C8,x","eCANA MID25"); - GEL_WatchAdd("*(long *)0x61CA,x","eCANA MCF25"); - GEL_WatchAdd("*(long *)0x61CC,x","eCANA MDL25"); - GEL_WatchAdd("*(long *)0x61CE,x","eCANA MDH25"); -} -hotmenu eCAN_A_Mailbox_26_to_27_Regs() -{ - GEL_WatchAdd("*(long *)0x6074,x","eCANA LAM26"); - GEL_WatchAdd("*(long *)0x60B4,x","eCANA MOTS26"); - GEL_WatchAdd("*(long *)0x60F4,x","eCANA MOTO26"); - GEL_WatchAdd("*(long *)0x61D0,x","eCANA MID26"); - GEL_WatchAdd("*(long *)0x61D2,x","eCANA MCF26"); - GEL_WatchAdd("*(long *)0x61D4,x","eCANA MDL26"); - GEL_WatchAdd("*(long *)0x61D6,x","eCANA MDH26"); - - GEL_WatchAdd("*(long *)0x6076,x","eCANA LAM27"); - GEL_WatchAdd("*(long *)0x60B6,x","eCANA MOTS27"); - GEL_WatchAdd("*(long *)0x60F6,x","eCANA MOTO27"); - GEL_WatchAdd("*(long *)0x61D8,x","eCANA MID27"); - GEL_WatchAdd("*(long *)0x61DA,x","eCANA MCF27"); - GEL_WatchAdd("*(long *)0x61DC,x","eCANA MDL27"); - GEL_WatchAdd("*(long *)0x61DE,x","eCANA MDH27"); -} -hotmenu eCAN_A_Mailbox_28_to_29_Regs() -{ - GEL_WatchAdd("*(long *)0x6078,x","eCANA LAM28"); - GEL_WatchAdd("*(long *)0x60B8,x","eCANA MOTS28"); - GEL_WatchAdd("*(long *)0x60F8,x","eCANA MOTO28"); - GEL_WatchAdd("*(long *)0x61E0,x","eCANA MID28"); - GEL_WatchAdd("*(long *)0x61E2,x","eCANA MCF28"); - GEL_WatchAdd("*(long *)0x61E4,x","eCANA MDL28"); - GEL_WatchAdd("*(long *)0x61E6,x","eCANA MDH28"); - - GEL_WatchAdd("*(long *)0x607A,x","eCANA LAM29"); - GEL_WatchAdd("*(long *)0x60BA,x","eCANA MOTS29"); - GEL_WatchAdd("*(long *)0x60FA,x","eCANA MOTO29"); - GEL_WatchAdd("*(long *)0x61E8,x","eCANA MID29"); - GEL_WatchAdd("*(long *)0x61EA,x","eCANA MCF29"); - GEL_WatchAdd("*(long *)0x61EC,x","eCANA MDL29"); - GEL_WatchAdd("*(long *)0x61EE,x","eCANA MDH29"); -} -hotmenu eCAN_A_Mailbox_30_to_31_Regs() -{ - GEL_WatchAdd("*(long *)0x607C,x","eCANA LAM30"); - GEL_WatchAdd("*(long *)0x60BC,x","eCANA MOTS30"); - GEL_WatchAdd("*(long *)0x60FC,x","eCANA MOTO30"); - GEL_WatchAdd("*(long *)0x61F0,x","eCANA MID30"); - GEL_WatchAdd("*(long *)0x61F2,x","eCANA MCF30"); - GEL_WatchAdd("*(long *)0x61F4,x","eCANA MDL30"); - GEL_WatchAdd("*(long *)0x61F6,x","eCANA MDH30"); - - GEL_WatchAdd("*(long *)0x607E,x","eCANA LAM31"); - GEL_WatchAdd("*(long *)0x60BE,x","eCANA MOTS31"); - GEL_WatchAdd("*(long *)0x60FE,x","eCANA MOTO31"); - GEL_WatchAdd("*(long *)0x61F8,x","eCANA MID31"); - GEL_WatchAdd("*(long *)0x61FA,x","eCANA MCF31"); - GEL_WatchAdd("*(long *)0x61FC,x","eCANA MDL31"); - GEL_WatchAdd("*(long *)0x61FE,x","eCANA MDH31"); -} -hotmenu eCAN_B_Global_Regs() -{ - GEL_WatchAdd("*(long *)0x6200,x","eCANB CANME"); - GEL_WatchAdd("*(long *)0x6202,x","eCANB CANMD"); - GEL_WatchAdd("*(long *)0x6204,x","eCANB CANTRS"); - GEL_WatchAdd("*(long *)0x6206,x","eCANB CANTRR"); - GEL_WatchAdd("*(long *)0x6208,x","eCANB CANTA"); - GEL_WatchAdd("*(long *)0x620A,x","eCANB CANAA"); - GEL_WatchAdd("*(long *)0x620C,x","eCANB CANRMP"); - GEL_WatchAdd("*(long *)0x620E,x","eCANB CANRML"); - GEL_WatchAdd("*(long *)0x6210,x","eCANB CANRFP"); - GEL_WatchAdd("*(long *)0x6214,x","eCANB CANMC"); - GEL_WatchAdd("*(long *)0x6216,x","eCANB CANBTC"); - GEL_WatchAdd("*(long *)0x6218,x","eCANB CANES"); - GEL_WatchAdd("*(long *)0x621A,x","eCANB CANTEC"); - GEL_WatchAdd("*(long *)0x621C,x","eCANB CANREC"); - GEL_WatchAdd("*(long *)0x621E,x","eCANB CANGIF0"); - GEL_WatchAdd("*(long *)0x6220,x","eCANB CANGIM"); - GEL_WatchAdd("*(long *)0x6222,x","eCANB CANGIF1"); - GEL_WatchAdd("*(long *)0x6224,x","eCANB CANMIM"); - GEL_WatchAdd("*(long *)0x6226,x","eCANB CANMIL"); - GEL_WatchAdd("*(long *)0x6228,x","eCANB CANOPC"); - GEL_WatchAdd("*(long *)0x622A,x","eCANB CANTIOC"); - GEL_WatchAdd("*(long *)0x622C,x","eCANB CANRIOC"); - GEL_WatchAdd("*(long *)0x622E,x","eCANB CANLNT"); - GEL_WatchAdd("*(long *)0x6230,x","eCANB CANTOC"); - GEL_WatchAdd("*(long *)0x6232,x","eCANB CANTOS"); -} -hotmenu eCAN_B_Mailbox_0_to_1_Regs() -{ - GEL_WatchAdd("*(long *)0x6240,x","eCANB LAM0"); - GEL_WatchAdd("*(long *)0x6280,x","eCANB MOTS0"); - GEL_WatchAdd("*(long *)0x62C0,x","eCANB MOTO0"); - GEL_WatchAdd("*(long *)0x6300,x","eCANB MID0"); - GEL_WatchAdd("*(long *)0x6302,x","eCANB MCF0"); - GEL_WatchAdd("*(long *)0x6304,x","eCANB MDL0"); - GEL_WatchAdd("*(long *)0x6306,x","eCANB MDH0"); - - GEL_WatchAdd("*(long *)0x6242,x","eCANB LAM1"); - GEL_WatchAdd("*(long *)0x6282,x","eCANB MOTS1"); - GEL_WatchAdd("*(long *)0x62C2,x","eCANB MOTO1"); - GEL_WatchAdd("*(long *)0x6308,x","eCANB MID1"); - GEL_WatchAdd("*(long *)0x630A,x","eCANB MCF1"); - GEL_WatchAdd("*(long *)0x630C,x","eCANB MDL1"); - GEL_WatchAdd("*(long *)0x630E,x","eCANB MDH1"); -} -hotmenu eCAN_B_Mailbox_2_to_3_Regs() -{ - GEL_WatchAdd("*(long *)0x6244,x","eCANB LAM2"); - GEL_WatchAdd("*(long *)0x6284,x","eCANB MOTS2"); - GEL_WatchAdd("*(long *)0x62C4,x","eCANB MOTO2"); - GEL_WatchAdd("*(long *)0x6310,x","eCANB MID2"); - GEL_WatchAdd("*(long *)0x6312,x","eCANB MCF2"); - GEL_WatchAdd("*(long *)0x6314,x","eCANB MDL2"); - GEL_WatchAdd("*(long *)0x6316,x","eCANB MDH2"); - - GEL_WatchAdd("*(long *)0x6246,x","eCANB LAM3"); - GEL_WatchAdd("*(long *)0x6286,x","eCANB MOTS3"); - GEL_WatchAdd("*(long *)0x62C6,x","eCANB MOTO3"); - GEL_WatchAdd("*(long *)0x6318,x","eCANB MID3"); - GEL_WatchAdd("*(long *)0x631A,x","eCANB MCF3"); - GEL_WatchAdd("*(long *)0x631C,x","eCANB MDL3"); - GEL_WatchAdd("*(long *)0x631E,x","eCANB MDH3"); -} -hotmenu eCAN_B_Mailbox_4_to_5_Regs() -{ - GEL_WatchAdd("*(long *)0x6248,x","eCANB LAM4"); - GEL_WatchAdd("*(long *)0x6288,x","eCANB MOTS4"); - GEL_WatchAdd("*(long *)0x62C8,x","eCANB MOTO4"); - GEL_WatchAdd("*(long *)0x6320,x","eCANB MID4"); - GEL_WatchAdd("*(long *)0x6322,x","eCANB MCF4"); - GEL_WatchAdd("*(long *)0x6324,x","eCANB MDL4"); - GEL_WatchAdd("*(long *)0x6326,x","eCANB MDH4"); - - GEL_WatchAdd("*(long *)0x624A,x","eCANB LAM5"); - GEL_WatchAdd("*(long *)0x628A,x","eCANB MOTS5"); - GEL_WatchAdd("*(long *)0x62CA,x","eCANB MOTO5"); - GEL_WatchAdd("*(long *)0x6328,x","eCANB MID5"); - GEL_WatchAdd("*(long *)0x632A,x","eCANB MCF5"); - GEL_WatchAdd("*(long *)0x632C,x","eCANB MDL5"); - GEL_WatchAdd("*(long *)0x632E,x","eCANB MDH5"); -} -hotmenu eCAN_B_Mailbox_6_to_7_Regs() -{ - GEL_WatchAdd("*(long *)0x624C,x","eCANB LAM6"); - GEL_WatchAdd("*(long *)0x628C,x","eCANB MOTS6"); - GEL_WatchAdd("*(long *)0x62CC,x","eCANB MOTO6"); - GEL_WatchAdd("*(long *)0x6330,x","eCANB MID6"); - GEL_WatchAdd("*(long *)0x6332,x","eCANB MCF6"); - GEL_WatchAdd("*(long *)0x6334,x","eCANB MDL6"); - GEL_WatchAdd("*(long *)0x6336,x","eCANB MDH6"); - - GEL_WatchAdd("*(long *)0x624E,x","eCANB LAM7"); - GEL_WatchAdd("*(long *)0x628E,x","eCANB MOTS7"); - GEL_WatchAdd("*(long *)0x62CE,x","eCANB MOTO7"); - GEL_WatchAdd("*(long *)0x6338,x","eCANB MID7"); - GEL_WatchAdd("*(long *)0x633A,x","eCANB MCF7"); - GEL_WatchAdd("*(long *)0x633C,x","eCANB MDL7"); - GEL_WatchAdd("*(long *)0x633E,x","eCANB MDH7"); -} -hotmenu eCAN_B_Mailbox_8_to_9_Regs() -{ - GEL_WatchAdd("*(long *)0x6250,x","eCANB LAM8"); - GEL_WatchAdd("*(long *)0x6290,x","eCANB MOTS8"); - GEL_WatchAdd("*(long *)0x62D0,x","eCANB MOTO8"); - GEL_WatchAdd("*(long *)0x6340,x","eCANB MID8"); - GEL_WatchAdd("*(long *)0x6342,x","eCANB MCF8"); - GEL_WatchAdd("*(long *)0x6344,x","eCANB MDL8"); - GEL_WatchAdd("*(long *)0x6346,x","eCANB MDH8"); - - GEL_WatchAdd("*(long *)0x6252,x","eCANB LAM9"); - GEL_WatchAdd("*(long *)0x6292,x","eCANB MOTS9"); - GEL_WatchAdd("*(long *)0x62D2,x","eCANB MOTO9"); - GEL_WatchAdd("*(long *)0x6348,x","eCANB MID9"); - GEL_WatchAdd("*(long *)0x634A,x","eCANB MCF9"); - GEL_WatchAdd("*(long *)0x634C,x","eCANB MDL9"); - GEL_WatchAdd("*(long *)0x634E,x","eCANB MDH9"); -} -hotmenu eCAN_B_Mailbox_10_to_11_Regs() -{ - GEL_WatchAdd("*(long *)0x6254,x","eCANB LAM10"); - GEL_WatchAdd("*(long *)0x6294,x","eCANB MOTS10"); - GEL_WatchAdd("*(long *)0x62D4,x","eCANB MOTO10"); - GEL_WatchAdd("*(long *)0x6350,x","eCANB MID10"); - GEL_WatchAdd("*(long *)0x6352,x","eCANB MCF10"); - GEL_WatchAdd("*(long *)0x6354,x","eCANB MDL10"); - GEL_WatchAdd("*(long *)0x6356,x","eCANB MDH10"); - - GEL_WatchAdd("*(long *)0x6256,x","eCANB LAM11"); - GEL_WatchAdd("*(long *)0x6296,x","eCANB MOTS11"); - GEL_WatchAdd("*(long *)0x62D6,x","eCANB MOTO11"); - GEL_WatchAdd("*(long *)0x6358,x","eCANB MID11"); - GEL_WatchAdd("*(long *)0x635A,x","eCANB MCF11"); - GEL_WatchAdd("*(long *)0x635C,x","eCANB MDL11"); - GEL_WatchAdd("*(long *)0x635E,x","eCANB MDH11"); -} -hotmenu eCAN_B_Mailbox_12_to_13_Regs() -{ - GEL_WatchAdd("*(long *)0x6258,x","eCANB LAM12"); - GEL_WatchAdd("*(long *)0x6298,x","eCANB MOTS12"); - GEL_WatchAdd("*(long *)0x62D8,x","eCANB MOTO12"); - GEL_WatchAdd("*(long *)0x6360,x","eCANB MID12"); - GEL_WatchAdd("*(long *)0x6362,x","eCANB MCF12"); - GEL_WatchAdd("*(long *)0x6364,x","eCANB MDL12"); - GEL_WatchAdd("*(long *)0x6366,x","eCANB MDH12"); - - GEL_WatchAdd("*(long *)0x625A,x","eCANB LAM13"); - GEL_WatchAdd("*(long *)0x629A,x","eCANB MOTS13"); - GEL_WatchAdd("*(long *)0x62DA,x","eCANB MOTO13"); - GEL_WatchAdd("*(long *)0x6368,x","eCANB MID13"); - GEL_WatchAdd("*(long *)0x636A,x","eCANB MCF13"); - GEL_WatchAdd("*(long *)0x636C,x","eCANB MDL13"); - GEL_WatchAdd("*(long *)0x636E,x","eCANB MDH13"); -} -hotmenu eCAN_B_Mailbox_14_to_15_Regs() -{ - GEL_WatchAdd("*(long *)0x625C,x","eCANB LAM14"); - GEL_WatchAdd("*(long *)0x629C,x","eCANB MOTS14"); - GEL_WatchAdd("*(long *)0x62DC,x","eCANB MOTO14"); - GEL_WatchAdd("*(long *)0x6370,x","eCANB MID14"); - GEL_WatchAdd("*(long *)0x6372,x","eCANB MCF14"); - GEL_WatchAdd("*(long *)0x6374,x","eCANB MDL14"); - GEL_WatchAdd("*(long *)0x6376,x","eCANB MDH14"); - - GEL_WatchAdd("*(long *)0x625E,x","eCANB LAM15"); - GEL_WatchAdd("*(long *)0x629E,x","eCANB MOTS15"); - GEL_WatchAdd("*(long *)0x62DE,x","eCANB MOTO15"); - GEL_WatchAdd("*(long *)0x6378,x","eCANB MID15"); - GEL_WatchAdd("*(long *)0x637A,x","eCANB MCF15"); - GEL_WatchAdd("*(long *)0x637C,x","eCANB MDL15"); - GEL_WatchAdd("*(long *)0x637E,x","eCANB MDH15"); -} -hotmenu eCAN_B_Mailbox_16_to_17_Regs() -{ - GEL_WatchAdd("*(long *)0x6260,x","eCANB LAM16"); - GEL_WatchAdd("*(long *)0x62A0,x","eCANB MOTS16"); - GEL_WatchAdd("*(long *)0x62E0,x","eCANB MOTO16"); - GEL_WatchAdd("*(long *)0x6380,x","eCANB MID16"); - GEL_WatchAdd("*(long *)0x6382,x","eCANB MCF16"); - GEL_WatchAdd("*(long *)0x6384,x","eCANB MDL16"); - GEL_WatchAdd("*(long *)0x6386,x","eCANB MDH16"); - - GEL_WatchAdd("*(long *)0x6262,x","eCANB LAM17"); - GEL_WatchAdd("*(long *)0x62A2,x","eCANB MOTS17"); - GEL_WatchAdd("*(long *)0x62E2,x","eCANB MOTO17"); - GEL_WatchAdd("*(long *)0x6388,x","eCANB MID17"); - GEL_WatchAdd("*(long *)0x638A,x","eCANB MCF17"); - GEL_WatchAdd("*(long *)0x638C,x","eCANB MDL17"); - GEL_WatchAdd("*(long *)0x638E,x","eCANB MDH17"); -} -hotmenu eCAN_B_Mailbox_18_to_19_Regs() -{ - GEL_WatchAdd("*(long *)0x6264,x","eCANB LAM18"); - GEL_WatchAdd("*(long *)0x62A4,x","eCANB MOTS18"); - GEL_WatchAdd("*(long *)0x62E4,x","eCANB MOTO18"); - GEL_WatchAdd("*(long *)0x6390,x","eCANB MID18"); - GEL_WatchAdd("*(long *)0x6392,x","eCANB MCF18"); - GEL_WatchAdd("*(long *)0x6394,x","eCANB MDL18"); - GEL_WatchAdd("*(long *)0x6396,x","eCANB MDH18"); - - GEL_WatchAdd("*(long *)0x6266,x","eCANB LAM19"); - GEL_WatchAdd("*(long *)0x62A6,x","eCANB MOTS19"); - GEL_WatchAdd("*(long *)0x62E6,x","eCANB MOTO19"); - GEL_WatchAdd("*(long *)0x6398,x","eCANB MID19"); - GEL_WatchAdd("*(long *)0x639A,x","eCANB MCF19"); - GEL_WatchAdd("*(long *)0x639C,x","eCANB MDL19"); - GEL_WatchAdd("*(long *)0x639E,x","eCANB MDH19"); -} -hotmenu eCAN_B_Mailbox_20_to_21_Regs() -{ - GEL_WatchAdd("*(long *)0x6268,x","eCANB LAM20"); - GEL_WatchAdd("*(long *)0x62A8,x","eCANB MOTS20"); - GEL_WatchAdd("*(long *)0x62E8,x","eCANB MOTO20"); - GEL_WatchAdd("*(long *)0x63A0,x","eCANB MID20"); - GEL_WatchAdd("*(long *)0x63A2,x","eCANB MCF20"); - GEL_WatchAdd("*(long *)0x63A4,x","eCANB MDL20"); - GEL_WatchAdd("*(long *)0x63A6,x","eCANB MDH20"); - - GEL_WatchAdd("*(long *)0x626A,x","eCANB LAM21"); - GEL_WatchAdd("*(long *)0x62AA,x","eCANB MOTS21"); - GEL_WatchAdd("*(long *)0x62EA,x","eCANB MOTO21"); - GEL_WatchAdd("*(long *)0x63A8,x","eCANB MID21"); - GEL_WatchAdd("*(long *)0x63AA,x","eCANB MCF21"); - GEL_WatchAdd("*(long *)0x63AC,x","eCANB MDL21"); - GEL_WatchAdd("*(long *)0x63AE,x","eCANB MDH21"); -} -hotmenu eCAN_B_Mailbox_22_to_23_Regs() -{ - GEL_WatchAdd("*(long *)0x626C,x","eCANB LAM22"); - GEL_WatchAdd("*(long *)0x62AC,x","eCANB MOTS22"); - GEL_WatchAdd("*(long *)0x62EC,x","eCANB MOTO22"); - GEL_WatchAdd("*(long *)0x63B0,x","eCANB MID22"); - GEL_WatchAdd("*(long *)0x63B2,x","eCANB MCF22"); - GEL_WatchAdd("*(long *)0x63B4,x","eCANB MDL22"); - GEL_WatchAdd("*(long *)0x63B6,x","eCANB MDH22"); - - GEL_WatchAdd("*(long *)0x626E,x","eCANB LAM23"); - GEL_WatchAdd("*(long *)0x62AE,x","eCANB MOTS23"); - GEL_WatchAdd("*(long *)0x62EE,x","eCANB MOTO23"); - GEL_WatchAdd("*(long *)0x63B8,x","eCANB MID23"); - GEL_WatchAdd("*(long *)0x63BA,x","eCANB MCF23"); - GEL_WatchAdd("*(long *)0x63BC,x","eCANB MDL23"); - GEL_WatchAdd("*(long *)0x63BE,x","eCANB MDH23"); -} -hotmenu eCAN_B_Mailbox_24_to_25_Regs() -{ - GEL_WatchAdd("*(long *)0x6270,x","eCANB LAM24"); - GEL_WatchAdd("*(long *)0x62B0,x","eCANB MOTS24"); - GEL_WatchAdd("*(long *)0x62F0,x","eCANB MOTO24"); - GEL_WatchAdd("*(long *)0x63C0,x","eCANB MID24"); - GEL_WatchAdd("*(long *)0x63C2,x","eCANB MCF24"); - GEL_WatchAdd("*(long *)0x63C4,x","eCANB MDL24"); - GEL_WatchAdd("*(long *)0x63C6,x","eCANB MDH24"); - - GEL_WatchAdd("*(long *)0x6272,x","eCANB LAM25"); - GEL_WatchAdd("*(long *)0x62B2,x","eCANB MOTS25"); - GEL_WatchAdd("*(long *)0x62F2,x","eCANB MOTO25"); - GEL_WatchAdd("*(long *)0x63C8,x","eCANB MID25"); - GEL_WatchAdd("*(long *)0x63CA,x","eCANB MCF25"); - GEL_WatchAdd("*(long *)0x63CC,x","eCANB MDL25"); - GEL_WatchAdd("*(long *)0x63CE,x","eCANB MDH25"); -} -hotmenu eCAN_B_Mailbox_26_to_27_Regs() -{ - GEL_WatchAdd("*(long *)0x6274,x","eCANB LAM26"); - GEL_WatchAdd("*(long *)0x62B4,x","eCANB MOTS26"); - GEL_WatchAdd("*(long *)0x62F4,x","eCANB MOTO26"); - GEL_WatchAdd("*(long *)0x63D0,x","eCANB MID26"); - GEL_WatchAdd("*(long *)0x63D2,x","eCANB MCF26"); - GEL_WatchAdd("*(long *)0x63D4,x","eCANB MDL26"); - GEL_WatchAdd("*(long *)0x63D6,x","eCANB MDH26"); - - GEL_WatchAdd("*(long *)0x6276,x","eCANB LAM27"); - GEL_WatchAdd("*(long *)0x62B6,x","eCANB MOTS27"); - GEL_WatchAdd("*(long *)0x62F6,x","eCANB MOTO27"); - GEL_WatchAdd("*(long *)0x63D8,x","eCANB MID27"); - GEL_WatchAdd("*(long *)0x63DA,x","eCANB MCF27"); - GEL_WatchAdd("*(long *)0x63DC,x","eCANB MDL27"); - GEL_WatchAdd("*(long *)0x63DE,x","eCANB MDH27"); -} -hotmenu eCAN_B_Mailbox_28_to_29_Regs() -{ - GEL_WatchAdd("*(long *)0x6278,x","eCANB LAM28"); - GEL_WatchAdd("*(long *)0x62B8,x","eCANB MOTS28"); - GEL_WatchAdd("*(long *)0x62F8,x","eCANB MOTO28"); - GEL_WatchAdd("*(long *)0x63E0,x","eCANB MID28"); - GEL_WatchAdd("*(long *)0x63E2,x","eCANB MCF28"); - GEL_WatchAdd("*(long *)0x63E4,x","eCANB MDL28"); - GEL_WatchAdd("*(long *)0x63E6,x","eCANB MDH28"); - - GEL_WatchAdd("*(long *)0x627A,x","eCANB LAM29"); - GEL_WatchAdd("*(long *)0x62BA,x","eCANB MOTS29"); - GEL_WatchAdd("*(long *)0x62FA,x","eCANB MOTO29"); - GEL_WatchAdd("*(long *)0x63E8,x","eCANB MID29"); - GEL_WatchAdd("*(long *)0x63EA,x","eCANB MCF29"); - GEL_WatchAdd("*(long *)0x63EC,x","eCANB MDL29"); - GEL_WatchAdd("*(long *)0x63EE,x","eCANB MDH29"); -} -hotmenu eCAN_B_Mailbox_30_to_31_Regs() -{ - GEL_WatchAdd("*(long *)0x627C,x","eCANB LAM30"); - GEL_WatchAdd("*(long *)0x62BC,x","eCANB MOTS30"); - GEL_WatchAdd("*(long *)0x62FC,x","eCANB MOTO30"); - GEL_WatchAdd("*(long *)0x63F0,x","eCANB MID30"); - GEL_WatchAdd("*(long *)0x63F2,x","eCANB MCF30"); - GEL_WatchAdd("*(long *)0x63F4,x","eCANB MDL30"); - GEL_WatchAdd("*(long *)0x63F6,x","eCANB MDH30"); - - GEL_WatchAdd("*(long *)0x627E,x","eCANB LAM31"); - GEL_WatchAdd("*(long *)0x62BE,x","eCANB MOTS31"); - GEL_WatchAdd("*(long *)0x62FE,x","eCANB MOTO31"); - GEL_WatchAdd("*(long *)0x63F8,x","eCANB MID31"); - GEL_WatchAdd("*(long *)0x63FA,x","eCANB MCF31"); - GEL_WatchAdd("*(long *)0x63FC,x","eCANB MDL31"); - GEL_WatchAdd("*(long *)0x63FE,x","eCANB MDH31"); -} - - -/********************************************************************/ -/* Enhanced Capture Registers */ -/********************************************************************/ -menuitem "Watch eCAP Registers"; - -hotmenu eCAP1_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6A00,x","eCAP1 TSCNT"); - GEL_WatchAdd("*(long *)0x6A02,x","eCAP1 CNTPHS"); - GEL_WatchAdd("*(long *)0x6A04,x","eCAP1 CAP1"); - GEL_WatchAdd("*(long *)0x6A06,x","eCAP1 CAP2"); - GEL_WatchAdd("*(long *)0x6A08,x","eCAP1 CAP3"); - GEL_WatchAdd("*(long *)0x6A0A,x","eCAP1 CAP4"); - GEL_WatchAdd("*0x6A14,x","eCAP1 ECCTL1"); - GEL_WatchAdd("*0x6A15,x","eCAP1 ECCTL2"); - GEL_WatchAdd("*0x6A16,x","eCAP1 ECEINT"); - GEL_WatchAdd("*0x6A17,x","eCAP1 ECFLG"); - GEL_WatchAdd("*0x6A18,x","eCAP1 ECCLR"); - GEL_WatchAdd("*0x6A19,x","eCAP1 ECFRC"); -} -hotmenu eCAP2_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6A20,x","eCAP2 TSCNT"); - GEL_WatchAdd("*(long *)0x6A22,x","eCAP2 CNTPHS"); - GEL_WatchAdd("*(long *)0x6A24,x","eCAP2 CAP1"); - GEL_WatchAdd("*(long *)0x6A26,x","eCAP2 CAP2"); - GEL_WatchAdd("*(long *)0x6A28,x","eCAP2 CAP3"); - GEL_WatchAdd("*(long *)0x6A2A,x","eCAP2 CAP4"); - GEL_WatchAdd("*0x6A34,x","eCAP2 ECCTL1"); - GEL_WatchAdd("*0x6A35,x","eCAP2 ECCTL2"); - GEL_WatchAdd("*0x6A36,x","eCAP2 ECEINT"); - GEL_WatchAdd("*0x6A37,x","eCAP2 ECFLG"); - GEL_WatchAdd("*0x6A38,x","eCAP2 ECCLR"); - GEL_WatchAdd("*0x6A39,x","eCAP2 ECFRC"); -} -hotmenu eCAP3_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6A40,x","eCAP3 TSCNT"); - GEL_WatchAdd("*(long *)0x6A42,x","eCAP3 CNTPHS"); - GEL_WatchAdd("*(long *)0x6A44,x","eCAP3 CAP1"); - GEL_WatchAdd("*(long *)0x6A46,x","eCAP3 CAP2"); - GEL_WatchAdd("*(long *)0x6A48,x","eCAP3 CAP3"); - GEL_WatchAdd("*(long *)0x6A4A,x","eCAP3 CAP4"); - GEL_WatchAdd("*0x6A54,x","eCAP3 ECCTL1"); - GEL_WatchAdd("*0x6A55,x","eCAP3 ECCTL2"); - GEL_WatchAdd("*0x6A56,x","eCAP3 ECEINT"); - GEL_WatchAdd("*0x6A57,x","eCAP3 ECFLG"); - GEL_WatchAdd("*0x6A58,x","eCAP3 ECCLR"); - GEL_WatchAdd("*0x6A59,x","eCAP3 ECFRC"); -} -hotmenu eCAP4_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6A60,x","eCAP4 TSCNT"); - GEL_WatchAdd("*(long *)0x6A62,x","eCAP4 CNTPHS"); - GEL_WatchAdd("*(long *)0x6A64,x","eCAP4 CAP1"); - GEL_WatchAdd("*(long *)0x6A66,x","eCAP4 CAP2"); - GEL_WatchAdd("*(long *)0x6A68,x","eCAP4 CAP3"); - GEL_WatchAdd("*(long *)0x6A6A,x","eCAP4 CAP4"); - GEL_WatchAdd("*0x6A74,x","eCAP4 ECCTL1"); - GEL_WatchAdd("*0x6A75,x","eCAP4 ECCTL2"); - GEL_WatchAdd("*0x6A76,x","eCAP4 ECEINT"); - GEL_WatchAdd("*0x6A77,x","eCAP4 ECFLG"); - GEL_WatchAdd("*0x6A78,x","eCAP4 ECCLR"); - GEL_WatchAdd("*0x6A79,x","eCAP4 ECFRC"); -} -hotmenu eCAP5_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6A80,x","eCAP5 TSCNT"); - GEL_WatchAdd("*(long *)0x6A82,x","eCAP5 CNTPHS"); - GEL_WatchAdd("*(long *)0x6A84,x","eCAP5 CAP1"); - GEL_WatchAdd("*(long *)0x6A86,x","eCAP5 CAP2"); - GEL_WatchAdd("*(long *)0x6A88,x","eCAP5 CAP3"); - GEL_WatchAdd("*(long *)0x6A8A,x","eCAP5 CAP4"); - GEL_WatchAdd("*0x6A94,x","eCAP5 ECCTL1"); - GEL_WatchAdd("*0x6A95,x","eCAP5 ECCTL2"); - GEL_WatchAdd("*0x6A96,x","eCAP5 ECEINT"); - GEL_WatchAdd("*0x6A97,x","eCAP5 ECFLG"); - GEL_WatchAdd("*0x6A98,x","eCAP5 ECCLR"); - GEL_WatchAdd("*0x6A99,x","eCAP5 ECFRC"); -} -hotmenu eCAP6_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6AA0,x","eCAP6 TSCNT"); - GEL_WatchAdd("*(long *)0x6AA2,x","eCAP6 CNTPHS"); - GEL_WatchAdd("*(long *)0x6AA4,x","eCAP6 CAP1"); - GEL_WatchAdd("*(long *)0x6AA6,x","eCAP6 CAP2"); - GEL_WatchAdd("*(long *)0x6AA8,x","eCAP6 CAP3"); - GEL_WatchAdd("*(long *)0x6AAA,x","eCAP6 CAP4"); - GEL_WatchAdd("*0x6AB4,x","eCAP6 ECCTL1"); - GEL_WatchAdd("*0x6AB5,x","eCAP6 ECCTL2"); - GEL_WatchAdd("*0x6AB6,x","eCAP6 ECEINT"); - GEL_WatchAdd("*0x6AB7,x","eCAP6 ECFLG"); - GEL_WatchAdd("*0x6AB8,x","eCAP6 ECCLR"); - GEL_WatchAdd("*0x6AB9,x","eCAP6 ECFRC"); -} - -/********************************************************************/ -/* Enhanced PWM Registers */ -/********************************************************************/ -menuitem "Watch ePWM Registers"; - -hotmenu ePWM1_All_Regs() -{ - GEL_WatchAdd("*0x6800,x","ePWM1 TBCTL"); - GEL_WatchAdd("*0x6801,x","ePWM1 TBSTS"); - GEL_WatchAdd("*0x6802,x","ePWM1 TBPHSHR"); - GEL_WatchAdd("*0x6803,x","ePWM1 TBPHS"); - GEL_WatchAdd("*0x6804,x","ePWM1 TBCTR"); - GEL_WatchAdd("*0x6805,x","ePWM1 TBPRD"); - GEL_WatchAdd("*0x6807,x","ePWM1 CMPCTL"); - GEL_WatchAdd("*0x6808,x","ePWM1 CMPAHR"); - GEL_WatchAdd("*0x6809,x","ePWM1 CMPA"); - GEL_WatchAdd("*0x680A,x","ePWM1 CMPB"); - GEL_WatchAdd("*0x680B,x","ePWM1 AQCTLA"); - GEL_WatchAdd("*0x680C,x","ePWM1 AQCTLB"); - GEL_WatchAdd("*0x680D,x","ePWM1 AQSFRC"); - GEL_WatchAdd("*0x680E,x","ePWM1 AQCSFRC"); - GEL_WatchAdd("*0x680F,x","ePWM1 DBCTL"); - GEL_WatchAdd("*0x6810,x","ePWM1 DBRED"); - GEL_WatchAdd("*0x6811,x","ePWM1 DBFED"); - GEL_WatchAdd("*0x6812,x","ePWM1 TZSEL"); - GEL_WatchAdd("*0x6813,x","ePWM1 TZDCSEL"); - GEL_WatchAdd("*0x6814,x","ePWM1 TZCTL"); - GEL_WatchAdd("*0x6815,x","ePWM1 TZEINT"); - GEL_WatchAdd("*0x6816,x","ePWM1 TZFLG"); - GEL_WatchAdd("*0x6817,x","ePWM1 TZCLR"); - GEL_WatchAdd("*0x6818,x","ePWM1 TZFRC"); - GEL_WatchAdd("*0x6819,x","ePWM1 ETSEL"); - GEL_WatchAdd("*0x681A,x","ePWM1 ETPS"); - GEL_WatchAdd("*0x681B,x","ePWM1 ETFLG"); - GEL_WatchAdd("*0x681C,x","ePWM1 ETCLR"); - GEL_WatchAdd("*0x681D,x","ePWM1 ETFRC"); - GEL_WatchAdd("*0x681E,x","ePWM1 PCCTL"); - GEL_WatchAdd("*0x6820,x","ePWM1 HRCNFG"); -} -hotmenu ePWM1_TB_Regs() -{ - GEL_WatchAdd("*0x6800,x","ePWM1 TBCTL"); - GEL_WatchAdd("*0x6801,x","ePWM1 TBSTS"); - GEL_WatchAdd("*0x6802,x","ePWM1 TBPHSHR"); - GEL_WatchAdd("*0x6803,x","ePWM1 TBPHS"); - GEL_WatchAdd("*0x6804,x","ePWM1 TBCTR"); - GEL_WatchAdd("*0x6805,x","ePWM1 TBPRD"); -} -hotmenu ePWM1_CMP_Regs() -{ - GEL_WatchAdd("*0x6807,x","ePWM1 CMPCTL"); - GEL_WatchAdd("*0x6808,x","ePWM1 CMPAHR"); - GEL_WatchAdd("*0x6809,x","ePWM1 CMPA"); - GEL_WatchAdd("*0x680A,x","ePWM1 CMPB"); -} -hotmenu ePWM1_AQ_Regs() -{ - GEL_WatchAdd("*0x680B,x","ePWM1 AQCTLA"); - GEL_WatchAdd("*0x680C,x","ePWM1 AQCTLB"); - GEL_WatchAdd("*0x680D,x","ePWM1 AQSFRC"); - GEL_WatchAdd("*0x680E,x","ePWM1 AQCSFRC"); -} -hotmenu ePWM1_DB_Regs() -{ - GEL_WatchAdd("*0x680F,x","ePWM1 DBCTL"); - GEL_WatchAdd("*0x6810,x","ePWM1 DBRED"); - GEL_WatchAdd("*0x6811,x","ePWM1 DBFED"); -} -hotmenu ePWM1_TZ_Regs() -{ - GEL_WatchAdd("*0x6812,x","ePWM1 TZSEL"); - GEL_WatchAdd("*0x6814,x","ePWM1 TZCTL"); - GEL_WatchAdd("*0x6815,x","ePWM1 TZEINT"); - GEL_WatchAdd("*0x6816,x","ePWM1 TZFLG"); - GEL_WatchAdd("*0x6817,x","ePWM1 TZCLR"); - GEL_WatchAdd("*0x6818,x","ePWM1 TZFRC"); -} -hotmenu ePWM1_ET_Regs() -{ - GEL_WatchAdd("*0x6819,x","ePWM1 ETSEL"); - GEL_WatchAdd("*0x681A,x","ePWM1 ETPS"); - GEL_WatchAdd("*0x681B,x","ePWM1 ETFLG"); - GEL_WatchAdd("*0x681C,x","ePWM1 ETCLR"); - GEL_WatchAdd("*0x681D,x","ePWM1 ETFRC"); -} -hotmenu ePWM2_All_Regs() -{ - GEL_WatchAdd("*0x6840,x","ePWM2 TBCTL"); - GEL_WatchAdd("*0x6841,x","ePWM2 TBSTS"); - GEL_WatchAdd("*0x6842,x","ePWM2 TBPHSHR"); - GEL_WatchAdd("*0x6843,x","ePWM2 TBPHS"); - GEL_WatchAdd("*0x6844,x","ePWM2 TBCTR"); - GEL_WatchAdd("*0x6845,x","ePWM2 TBPRD"); - GEL_WatchAdd("*0x6847,x","ePWM2 CMPCTL"); - GEL_WatchAdd("*0x6848,x","ePWM2 CMPAHR"); - GEL_WatchAdd("*0x6849,x","ePWM2 CMPA"); - GEL_WatchAdd("*0x684A,x","ePWM2 CMPB"); - GEL_WatchAdd("*0x684B,x","ePWM2 AQCTLA"); - GEL_WatchAdd("*0x684C,x","ePWM2 AQCTLB"); - GEL_WatchAdd("*0x684D,x","ePWM2 AQSFRC"); - GEL_WatchAdd("*0x684E,x","ePWM2 AQCSFRC"); - GEL_WatchAdd("*0x684F,x","ePWM2 DBCTL"); - GEL_WatchAdd("*0x6850,x","ePWM2 DBRED"); - GEL_WatchAdd("*0x6851,x","ePWM2 DBFED"); - GEL_WatchAdd("*0x6852,x","ePWM2 TZSEL"); - GEL_WatchAdd("*0x6853,x","ePWM2 TZDCSEL"); - GEL_WatchAdd("*0x6854,x","ePWM2 TZCTL"); - GEL_WatchAdd("*0x6855,x","ePWM2 TZEINT"); - GEL_WatchAdd("*0x6856,x","ePWM2 TZFLG"); - GEL_WatchAdd("*0x6857,x","ePWM2 TZCLR"); - GEL_WatchAdd("*0x6858,x","ePWM2 TZFRC"); - GEL_WatchAdd("*0x6859,x","ePWM2 ETSEL"); - GEL_WatchAdd("*0x685A,x","ePWM2 ETPS"); - GEL_WatchAdd("*0x685B,x","ePWM2 ETFLG"); - GEL_WatchAdd("*0x685C,x","ePWM2 ETCLR"); - GEL_WatchAdd("*0x685D,x","ePWM2 ETFRC"); - GEL_WatchAdd("*0x685E,x","ePWM2 PCCTL"); - GEL_WatchAdd("*0x6860,x","ePWM2 HRCNFG"); -} -hotmenu ePWM2_TB_Regs() -{ - GEL_WatchAdd("*0x6840,x","ePWM2 TBCTL"); - GEL_WatchAdd("*0x6841,x","ePWM2 TBSTS"); - GEL_WatchAdd("*0x6842,x","ePWM2 TBPHSHR"); - GEL_WatchAdd("*0x6843,x","ePWM2 TBPHS"); - GEL_WatchAdd("*0x6844,x","ePWM2 TBCTR"); - GEL_WatchAdd("*0x6845,x","ePWM2 TBPRD"); -} -hotmenu ePWM2_CMP_Regs() -{ - GEL_WatchAdd("*0x6847,x","ePWM2 CMPCTL"); - GEL_WatchAdd("*0x6848,x","ePWM2 CMPAHR"); - GEL_WatchAdd("*0x6849,x","ePWM2 CMPA"); - GEL_WatchAdd("*0x684A,x","ePWM2 CMPB"); -} -hotmenu ePWM2_AQ_Regs() -{ - GEL_WatchAdd("*0x684B,x","ePWM2 AQCTLA"); - GEL_WatchAdd("*0x684C,x","ePWM2 AQCTLB"); - GEL_WatchAdd("*0x684D,x","ePWM2 AQSFRC"); - GEL_WatchAdd("*0x684E,x","ePWM2 AQCSFRC"); -} -hotmenu ePWM2_DB_Regs() -{ - GEL_WatchAdd("*0x684F,x","ePWM2 DBCTL"); - GEL_WatchAdd("*0x6850,x","ePWM2 DBRED"); - GEL_WatchAdd("*0x6851,x","ePWM2 DBFED"); -} -hotmenu ePWM2_TZ_Regs() -{ - GEL_WatchAdd("*0x6852,x","ePWM2 TZSEL"); - GEL_WatchAdd("*0x6854,x","ePWM2 TZCTL"); - GEL_WatchAdd("*0x6855,x","ePWM2 TZEINT"); - GEL_WatchAdd("*0x6856,x","ePWM2 TZFLG"); - GEL_WatchAdd("*0x6857,x","ePWM2 TZCLR"); - GEL_WatchAdd("*0x6858,x","ePWM2 TZFRC"); -} -hotmenu ePWM2_ET_Regs() -{ - GEL_WatchAdd("*0x6859,x","ePWM2 ETSEL"); - GEL_WatchAdd("*0x685A,x","ePWM2 ETPS"); - GEL_WatchAdd("*0x685B,x","ePWM2 ETFLG"); - GEL_WatchAdd("*0x685C,x","ePWM2 ETCLR"); - GEL_WatchAdd("*0x685D,x","ePWM2 ETFRC"); -} -hotmenu ePWM3_All_Regs() -{ - GEL_WatchAdd("*0x6880,x","ePWM3 TBCTL"); - GEL_WatchAdd("*0x6881,x","ePWM3 TBSTS"); - GEL_WatchAdd("*0x6882,x","ePWM3 TBPHSHR"); - GEL_WatchAdd("*0x6883,x","ePWM3 TBPHS"); - GEL_WatchAdd("*0x6884,x","ePWM3 TBCTR"); - GEL_WatchAdd("*0x6885,x","ePWM3 TBPRD"); - GEL_WatchAdd("*0x6887,x","ePWM3 CMPCTL"); - GEL_WatchAdd("*0x6888,x","ePWM3 CMPAHR"); - GEL_WatchAdd("*0x6889,x","ePWM3 CMPA"); - GEL_WatchAdd("*0x688A,x","ePWM3 CMPB"); - GEL_WatchAdd("*0x688B,x","ePWM3 AQCTLA"); - GEL_WatchAdd("*0x688C,x","ePWM3 AQCTLB"); - GEL_WatchAdd("*0x688D,x","ePWM3 AQSFRC"); - GEL_WatchAdd("*0x688E,x","ePWM3 AQCSFRC"); - GEL_WatchAdd("*0x688F,x","ePWM3 DBCTL"); - GEL_WatchAdd("*0x6890,x","ePWM3 DBRED"); - GEL_WatchAdd("*0x6891,x","ePWM3 DBFED"); - GEL_WatchAdd("*0x6892,x","ePWM3 TZSEL"); - GEL_WatchAdd("*0x6893,x","ePWM3 TZDCSEL"); - GEL_WatchAdd("*0x6894,x","ePWM3 TZCTL"); - GEL_WatchAdd("*0x6895,x","ePWM3 TZEINT"); - GEL_WatchAdd("*0x6896,x","ePWM3 TZFLG"); - GEL_WatchAdd("*0x6897,x","ePWM3 TZCLR"); - GEL_WatchAdd("*0x6898,x","ePWM3 TZFRC"); - GEL_WatchAdd("*0x6899,x","ePWM3 ETSEL"); - GEL_WatchAdd("*0x689A,x","ePWM3 ETPS"); - GEL_WatchAdd("*0x689B,x","ePWM3 ETFLG"); - GEL_WatchAdd("*0x689C,x","ePWM3 ETCLR"); - GEL_WatchAdd("*0x689D,x","ePWM3 ETFRC"); - GEL_WatchAdd("*0x689E,x","ePWM3 PCCTL"); - GEL_WatchAdd("*0x68A0,x","ePWM3 HRCNFG"); -} -hotmenu ePWM3_TB_Regs() -{ - GEL_WatchAdd("*0x6880,x","ePWM3 TBCTL"); - GEL_WatchAdd("*0x6881,x","ePWM3 TBSTS"); - GEL_WatchAdd("*0x6882,x","ePWM3 TBPHSHR"); - GEL_WatchAdd("*0x6883,x","ePWM3 TBPHS"); - GEL_WatchAdd("*0x6884,x","ePWM3 TBCTR"); - GEL_WatchAdd("*0x6885,x","ePWM3 TBPRD"); -} -hotmenu ePWM3_CMP_Regs() -{ - GEL_WatchAdd("*0x6887,x","ePWM3 CMPCTL"); - GEL_WatchAdd("*0x6888,x","ePWM3 CMPAHR"); - GEL_WatchAdd("*0x6889,x","ePWM3 CMPA"); - GEL_WatchAdd("*0x688A,x","ePWM3 CMPB"); -} -hotmenu ePWM3_AQ_Regs() -{ - GEL_WatchAdd("*0x688B,x","ePWM3 AQCTLA"); - GEL_WatchAdd("*0x688C,x","ePWM3 AQCTLB"); - GEL_WatchAdd("*0x688D,x","ePWM3 AQSFRC"); - GEL_WatchAdd("*0x688E,x","ePWM3 AQCSFRC"); -} -hotmenu ePWM3_DB_Regs() -{ - GEL_WatchAdd("*0x688F,x","ePWM3 DBCTL"); - GEL_WatchAdd("*0x6890,x","ePWM3 DBRED"); - GEL_WatchAdd("*0x6891,x","ePWM3 DBFED"); -} -hotmenu ePWM3_TZ_Regs() -{ - GEL_WatchAdd("*0x6892,x","ePWM3 TZSEL"); - GEL_WatchAdd("*0x6894,x","ePWM3 TZCTL"); - GEL_WatchAdd("*0x6895,x","ePWM3 TZEINT"); - GEL_WatchAdd("*0x6896,x","ePWM3 TZFLG"); - GEL_WatchAdd("*0x6897,x","ePWM3 TZCLR"); - GEL_WatchAdd("*0x6898,x","ePWM3 TZFRC"); -} -hotmenu ePWM3_ET_Regs() -{ - GEL_WatchAdd("*0x6899,x","ePWM3 ETSEL"); - GEL_WatchAdd("*0x689A,x","ePWM3 ETPS"); - GEL_WatchAdd("*0x689B,x","ePWM3 ETFLG"); - GEL_WatchAdd("*0x689C,x","ePWM3 ETCLR"); - GEL_WatchAdd("*0x689D,x","ePWM3 ETFRC"); -} -hotmenu ePWM4_All_Regs() -{ - GEL_WatchAdd("*0x68C0,x","ePWM4 TBCTL"); - GEL_WatchAdd("*0x68C1,x","ePWM4 TBSTS"); - GEL_WatchAdd("*0x68C2,x","ePWM4 TBPHSHR"); - GEL_WatchAdd("*0x68C3,x","ePWM4 TBPHS"); - GEL_WatchAdd("*0x68C4,x","ePWM4 TBCTR"); - GEL_WatchAdd("*0x68C5,x","ePWM4 TBPRD"); - GEL_WatchAdd("*0x68C7,x","ePWM4 CMPCTL"); - GEL_WatchAdd("*0x68C8,x","ePWM4 CMPAHR"); - GEL_WatchAdd("*0x68C9,x","ePWM4 CMPA"); - GEL_WatchAdd("*0x68CA,x","ePWM4 CMPB"); - GEL_WatchAdd("*0x68CB,x","ePWM4 AQCTLA"); - GEL_WatchAdd("*0x68CC,x","ePWM4 AQCTLB"); - GEL_WatchAdd("*0x68CD,x","ePWM4 AQSFRC"); - GEL_WatchAdd("*0x68CE,x","ePWM4 AQCSFRC"); - GEL_WatchAdd("*0x68CF,x","ePWM4 DBCTL"); - GEL_WatchAdd("*0x68D0,x","ePWM4 DBRED"); - GEL_WatchAdd("*0x68D1,x","ePWM4 DBFED"); - GEL_WatchAdd("*0x68D2,x","ePWM4 TZSEL"); - GEL_WatchAdd("*0x68D3,x","ePWM4 TZDCSEL"); - GEL_WatchAdd("*0x68D4,x","ePWM4 TZCTL"); - GEL_WatchAdd("*0x68D5,x","ePWM4 TZEINT"); - GEL_WatchAdd("*0x68D6,x","ePWM4 TZFLG"); - GEL_WatchAdd("*0x68D7,x","ePWM4 TZCLR"); - GEL_WatchAdd("*0x68D8,x","ePWM4 TZFRC"); - GEL_WatchAdd("*0x68D9,x","ePWM4 ETSEL"); - GEL_WatchAdd("*0x68DA,x","ePWM4 ETPS"); - GEL_WatchAdd("*0x68DB,x","ePWM4 ETFLG"); - GEL_WatchAdd("*0x68DC,x","ePWM4 ETCLR"); - GEL_WatchAdd("*0x68DD,x","ePWM4 ETFRC"); - GEL_WatchAdd("*0x68DE,x","ePWM4 PCCTL"); - GEL_WatchAdd("*0x68E0,x","ePWM4 HRCNFG"); -} -hotmenu ePWM4_TB_Regs() -{ - GEL_WatchAdd("*0x68C0,x","ePWM4 TBCTL"); - GEL_WatchAdd("*0x68C1,x","ePWM4 TBSTS"); - GEL_WatchAdd("*0x68C2,x","ePWM4 TBPHSHR"); - GEL_WatchAdd("*0x68C3,x","ePWM4 TBPHS"); - GEL_WatchAdd("*0x68C4,x","ePWM4 TBCTR"); - GEL_WatchAdd("*0x68C5,x","ePWM4 TBPRD"); -} -hotmenu ePWM4_CMP_Regs() -{ - GEL_WatchAdd("*0x68C7,x","ePWM4 CMPCTL"); - GEL_WatchAdd("*0x68C8,x","ePWM4 CMPAHR"); - GEL_WatchAdd("*0x68C9,x","ePWM4 CMPA"); - GEL_WatchAdd("*0x68CA,x","ePWM4 CMPB"); -} -hotmenu ePWM4_AQ_Regs() -{ - GEL_WatchAdd("*0x68CB,x","ePWM4 AQCTLA"); - GEL_WatchAdd("*0x68CC,x","ePWM4 AQCTLB"); - GEL_WatchAdd("*0x68CD,x","ePWM4 AQSFRC"); - GEL_WatchAdd("*0x68CE,x","ePWM4 AQCSFRC"); -} -hotmenu ePWM4_DB_Regs() -{ - GEL_WatchAdd("*0x68CF,x","ePWM4 DBCTL"); - GEL_WatchAdd("*0x68D0,x","ePWM4 DBRED"); - GEL_WatchAdd("*0x68D1,x","ePWM4 DBFED"); -} -hotmenu ePWM4_TZ_Regs() -{ - GEL_WatchAdd("*0x68D2,x","ePWM4 TZSEL"); - GEL_WatchAdd("*0x68D4,x","ePWM4 TZCTL"); - GEL_WatchAdd("*0x68D5,x","ePWM4 TZEINT"); - GEL_WatchAdd("*0x68D6,x","ePWM4 TZFLG"); - GEL_WatchAdd("*0x68D7,x","ePWM4 TZCLR"); - GEL_WatchAdd("*0x68D8,x","ePWM4 TZFRC"); -} -hotmenu ePWM4_ET_Regs() -{ - GEL_WatchAdd("*0x68D9,x","ePWM4 ETSEL"); - GEL_WatchAdd("*0x68DA,x","ePWM4 ETPS"); - GEL_WatchAdd("*0x68DB,x","ePWM4 ETFLG"); - GEL_WatchAdd("*0x68DC,x","ePWM4 ETCLR"); - GEL_WatchAdd("*0x68DD,x","ePWM4 ETFRC"); -} -hotmenu ePWM5_All_Regs() -{ - GEL_WatchAdd("*0x6900,x","ePWM5 TBCTL"); - GEL_WatchAdd("*0x6901,x","ePWM5 TBSTS"); - GEL_WatchAdd("*0x6902,x","ePWM5 TBPHSHR"); - GEL_WatchAdd("*0x6903,x","ePWM5 TBPHS"); - GEL_WatchAdd("*0x6904,x","ePWM5 TBCTR"); - GEL_WatchAdd("*0x6905,x","ePWM5 TBPRD"); - GEL_WatchAdd("*0x6907,x","ePWM5 CMPCTL"); - GEL_WatchAdd("*0x6908,x","ePWM5 CMPAHR"); - GEL_WatchAdd("*0x6909,x","ePWM5 CMPA"); - GEL_WatchAdd("*0x690A,x","ePWM5 CMPB"); - GEL_WatchAdd("*0x690B,x","ePWM5 AQCTLA"); - GEL_WatchAdd("*0x690C,x","ePWM5 AQCTLB"); - GEL_WatchAdd("*0x690D,x","ePWM5 AQSFRC"); - GEL_WatchAdd("*0x690E,x","ePWM5 AQCSFRC"); - GEL_WatchAdd("*0x690F,x","ePWM5 DBCTL"); - GEL_WatchAdd("*0x6910,x","ePWM5 DBRED"); - GEL_WatchAdd("*0x6911,x","ePWM5 DBFED"); - GEL_WatchAdd("*0x6912,x","ePWM5 TZSEL"); - GEL_WatchAdd("*0x6913,x","ePWM5 TZDCSEL"); - GEL_WatchAdd("*0x6914,x","ePWM5 TZCTL"); - GEL_WatchAdd("*0x6915,x","ePWM5 TZEINT"); - GEL_WatchAdd("*0x6916,x","ePWM5 TZFLG"); - GEL_WatchAdd("*0x6917,x","ePWM5 TZCLR"); - GEL_WatchAdd("*0x6918,x","ePWM5 TZFRC"); - GEL_WatchAdd("*0x6919,x","ePWM5 ETSEL"); - GEL_WatchAdd("*0x691A,x","ePWM5 ETPS"); - GEL_WatchAdd("*0x691B,x","ePWM5 ETFLG"); - GEL_WatchAdd("*0x691C,x","ePWM5 ETCLR"); - GEL_WatchAdd("*0x691D,x","ePWM5 ETFRC"); - GEL_WatchAdd("*0x691E,x","ePWM5 PCCTL"); - GEL_WatchAdd("*0x6920,x","ePWM5 HRCNFG"); -} -hotmenu ePWM5_TB_Regs() -{ - GEL_WatchAdd("*0x6900,x","ePWM5 TBCTL"); - GEL_WatchAdd("*0x6901,x","ePWM5 TBSTS"); - GEL_WatchAdd("*0x6902,x","ePWM5 TBPHSHR"); - GEL_WatchAdd("*0x6903,x","ePWM5 TBPHS"); - GEL_WatchAdd("*0x6904,x","ePWM5 TBCTR"); - GEL_WatchAdd("*0x6905,x","ePWM5 TBPRD"); -} -hotmenu ePWM5_CMP_Regs() -{ - GEL_WatchAdd("*0x6907,x","ePWM5 CMPCTL"); - GEL_WatchAdd("*0x6908,x","ePWM5 CMPAHR"); - GEL_WatchAdd("*0x6909,x","ePWM5 CMPA"); - GEL_WatchAdd("*0x690A,x","ePWM5 CMPB"); -} -hotmenu ePWM5_AQ_Regs() -{ - GEL_WatchAdd("*0x690B,x","ePWM5 AQCTLA"); - GEL_WatchAdd("*0x690C,x","ePWM5 AQCTLB"); - GEL_WatchAdd("*0x690D,x","ePWM5 AQSFRC"); - GEL_WatchAdd("*0x690E,x","ePWM5 AQCSFRC"); -} -hotmenu ePWM5_DB_Regs() -{ - GEL_WatchAdd("*0x690F,x","ePWM5 DBCTL"); - GEL_WatchAdd("*0x6910,x","ePWM5 DBRED"); - GEL_WatchAdd("*0x6911,x","ePWM5 DBFED"); -} -hotmenu ePWM5_TZ_Regs() -{ - GEL_WatchAdd("*0x6912,x","ePWM5 TZSEL"); - GEL_WatchAdd("*0x6914,x","ePWM5 TZCTL"); - GEL_WatchAdd("*0x6915,x","ePWM5 TZEINT"); - GEL_WatchAdd("*0x6916,x","ePWM5 TZFLG"); - GEL_WatchAdd("*0x6917,x","ePWM5 TZCLR"); - GEL_WatchAdd("*0x6918,x","ePWM5 TZFRC"); -} -hotmenu ePWM5_ET_Regs() -{ - GEL_WatchAdd("*0x6919,x","ePWM5 ETSEL"); - GEL_WatchAdd("*0x691A,x","ePWM5 ETPS"); - GEL_WatchAdd("*0x691B,x","ePWM5 ETFLG"); - GEL_WatchAdd("*0x691C,x","ePWM5 ETCLR"); - GEL_WatchAdd("*0x691D,x","ePWM5 ETFRC"); -} -hotmenu ePWM6_All_Regs() -{ - GEL_WatchAdd("*0x6940,x","ePWM6 TBCTL"); - GEL_WatchAdd("*0x6941,x","ePWM6 TBSTS"); - GEL_WatchAdd("*0x6942,x","ePWM6 TBPHSHR"); - GEL_WatchAdd("*0x6943,x","ePWM6 TBPHS"); - GEL_WatchAdd("*0x6944,x","ePWM6 TBCTR"); - GEL_WatchAdd("*0x6945,x","ePWM6 TBPRD"); - GEL_WatchAdd("*0x6947,x","ePWM6 CMPCTL"); - GEL_WatchAdd("*0x6948,x","ePWM6 CMPAHR"); - GEL_WatchAdd("*0x6949,x","ePWM6 CMPA"); - GEL_WatchAdd("*0x694A,x","ePWM6 CMPB"); - GEL_WatchAdd("*0x694B,x","ePWM6 AQCTLA"); - GEL_WatchAdd("*0x694C,x","ePWM6 AQCTLB"); - GEL_WatchAdd("*0x694D,x","ePWM6 AQSFRC"); - GEL_WatchAdd("*0x694E,x","ePWM6 AQCSFRC"); - GEL_WatchAdd("*0x694F,x","ePWM6 DBCTL"); - GEL_WatchAdd("*0x6950,x","ePWM6 DBRED"); - GEL_WatchAdd("*0x6951,x","ePWM6 DBFED"); - GEL_WatchAdd("*0x6952,x","ePWM6 TZSEL"); - GEL_WatchAdd("*0x6953,x","ePWM6 TZDCSEL"); - GEL_WatchAdd("*0x6954,x","ePWM6 TZCTL"); - GEL_WatchAdd("*0x6955,x","ePWM6 TZEINT"); - GEL_WatchAdd("*0x6956,x","ePWM6 TZFLG"); - GEL_WatchAdd("*0x6957,x","ePWM6 TZCLR"); - GEL_WatchAdd("*0x6958,x","ePWM6 TZFRC"); - GEL_WatchAdd("*0x6959,x","ePWM6 ETSEL"); - GEL_WatchAdd("*0x695A,x","ePWM6 ETPS"); - GEL_WatchAdd("*0x695B,x","ePWM6 ETFLG"); - GEL_WatchAdd("*0x695C,x","ePWM6 ETCLR"); - GEL_WatchAdd("*0x695D,x","ePWM6 ETFRC"); - GEL_WatchAdd("*0x695E,x","ePWM6 PCCTL"); - GEL_WatchAdd("*0x6960,x","ePWM6 HRCNFG"); - -} -hotmenu ePWM6_TB_Regs() -{ - GEL_WatchAdd("*0x6940,x","ePWM6 TBCTL"); - GEL_WatchAdd("*0x6941,x","ePWM6 TBSTS"); - GEL_WatchAdd("*0x6942,x","ePWM6 TBPHSHR"); - GEL_WatchAdd("*0x6943,x","ePWM6 TBPHS"); - GEL_WatchAdd("*0x6944,x","ePWM6 TBCTR"); - GEL_WatchAdd("*0x6945,x","ePWM6 TBPRD"); -} -hotmenu ePWM6_CMP_Regs() -{ - GEL_WatchAdd("*0x6947,x","ePWM6 CMPCTL"); - GEL_WatchAdd("*0x6948,x","ePWM6 CMPAHR"); - GEL_WatchAdd("*0x6949,x","ePWM6 CMPA"); - GEL_WatchAdd("*0x694A,x","ePWM6 CMPB"); -} -hotmenu ePWM6_AQ_Regs() -{ - GEL_WatchAdd("*0x694B,x","ePWM6 AQCTLA"); - GEL_WatchAdd("*0x694C,x","ePWM6 AQCTLB"); - GEL_WatchAdd("*0x694D,x","ePWM6 AQSFRC"); - GEL_WatchAdd("*0x694E,x","ePWM6 AQCSFRC"); -} -hotmenu ePWM6_DB_Regs() -{ - GEL_WatchAdd("*0x694F,x","ePWM6 DBCTL"); - GEL_WatchAdd("*0x6950,x","ePWM6 DBRED"); - GEL_WatchAdd("*0x6951,x","ePWM6 DBFED"); -} -hotmenu ePWM6_TZ_Regs() -{ - GEL_WatchAdd("*0x6952,x","ePWM6 TZSEL"); - GEL_WatchAdd("*0x6954,x","ePWM6 TZCTL"); - GEL_WatchAdd("*0x6955,x","ePWM6 TZEINT"); - GEL_WatchAdd("*0x6956,x","ePWM6 TZFLG"); - GEL_WatchAdd("*0x6957,x","ePWM6 TZCLR"); - GEL_WatchAdd("*0x6958,x","ePWM6 TZFRC"); -} -hotmenu ePWM6_ET_Regs() -{ - GEL_WatchAdd("*0x6959,x","ePWM6 ETSEL"); - GEL_WatchAdd("*0x695A,x","ePWM6 ETPS"); - GEL_WatchAdd("*0x695B,x","ePWM6 ETFLG"); - GEL_WatchAdd("*0x695C,x","ePWM6 ETCLR"); - GEL_WatchAdd("*0x695D,x","ePWM6 ETFRC"); -} - - -/********************************************************************/ -/* Enhanced EQEP Registers */ -/********************************************************************/ -menuitem "Watch eQEP" - -hotmenu eQEP1_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6B00,x","eQEP1 QPOSCNT"); - GEL_WatchAdd("*(long *)0x6B02,x","eQEP1 QPOSINIT"); - GEL_WatchAdd("*(long *)0x6B04,x","eQEP1 QPOSMAX"); - GEL_WatchAdd("*(long *)0x6B06,x","eQEP1 QPOSCMP"); - GEL_WatchAdd("*(long *)0x6B08,x","eQEP1 QPOSILAT"); - GEL_WatchAdd("*(long *)0x6B0A,x","eQEP1 QPOSSLAT"); - GEL_WatchAdd("*(long *)0x6B0C,x","eQEP1 QPOSLAT"); - GEL_WatchAdd("*(long *)0x6B0E,x","eQEP1 QUTMR"); - GEL_WatchAdd("*(long *)0x6B10,x","eQEP1 QUPRD"); - GEL_WatchAdd("*0x6B12,x","eQEP1 QWDTMR"); - GEL_WatchAdd("*0x6B13,x","eQEP1 QWDPRD"); - GEL_WatchAdd("*0x6B14,x","eQEP1 QDECCTL"); - GEL_WatchAdd("*0x6B15,x","eQEP1 QEPCTL"); - GEL_WatchAdd("*0x6B16,x","eQEP1 QCAPCTL"); - GEL_WatchAdd("*0x6B17,x","eQEP1 QPOSCTL"); - GEL_WatchAdd("*0x6B18,x","eQEP1 QEINT"); - GEL_WatchAdd("*0x6B19,x","eQEP1 QFLG"); - GEL_WatchAdd("*0x6B1A,x","eQEP1 QCLR"); - GEL_WatchAdd("*0x6B1B,x","eQEP1 QFRC"); - GEL_WatchAdd("*0x6B1C,x","eQEP1 QEPSTS"); - GEL_WatchAdd("*0x6B1D,x","eQEP1 QCTMR"); - GEL_WatchAdd("*0x6B1E,x","eQEP1 QCPRD"); - GEL_WatchAdd("*0x6B1F,x","eQEP1 QCTMRLAT"); - GEL_WatchAdd("*0x6B20,x","eQEP1 QCPRDLAT"); -} -hotmenu eQEP2_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6B40,x","eQEP2 QPOSCNT"); - GEL_WatchAdd("*(long *)0x6B42,x","eQEP2 QPOSINIT"); - GEL_WatchAdd("*(long *)0x6B44,x","eQEP2 QPOSMAX"); - GEL_WatchAdd("*(long *)0x6B46,x","eQEP2 QPOSCMP"); - GEL_WatchAdd("*(long *)0x6B48,x","eQEP2 QPOSILAT"); - GEL_WatchAdd("*(long *)0x6B4A,x","eQEP2 QPOSSLAT"); - GEL_WatchAdd("*(long *)0x6B4C,x","eQEP2 QPOSLAT"); - GEL_WatchAdd("(long *)*0x6B4E,x","eQEP2 QUTMR"); - GEL_WatchAdd("*(long *)0x6B50,x","eQEP2 QUPRD"); - GEL_WatchAdd("*0x6B52,x","eQEP2 QWDTMR"); - GEL_WatchAdd("*0x6B53,x","eQEP2 QWDPRD"); - GEL_WatchAdd("*0x6B54,x","eQEP2 QDECCTL"); - GEL_WatchAdd("*0x6B55,x","eQEP2 QEPCTL"); - GEL_WatchAdd("*0x6B56,x","eQEP2 QCAPCTL"); - GEL_WatchAdd("*0x6B57,x","eQEP2 QPOSCTL"); - GEL_WatchAdd("*0x6B58,x","eQEP2 QEINT"); - GEL_WatchAdd("*0x6B59,x","eQEP2 QFLG"); - GEL_WatchAdd("*0x6B5A,x","eQEP2 QCLR"); - GEL_WatchAdd("*0x6B5B,x","eQEP2 QFRC"); - GEL_WatchAdd("*0x6B5C,x","eQEP2 QEPSTS"); - GEL_WatchAdd("*0x6B5D,x","eQEP2 QCTMR"); - GEL_WatchAdd("*0x6B5E,x","eQEP2 QCPRD"); - GEL_WatchAdd("*0x6B5F,x","eQEP2 QCTMRLAT"); - GEL_WatchAdd("*0x6B60,x","eQEP2 QCPRDLAT"); -} - - -/********************************************************************/ -/* External Interface Registers */ -/********************************************************************/ -menuitem "Watch External Interface Registers"; - -hotmenu All_External_Interface_Regs() -{ - GEL_WatchAdd("*(long *)0x0B20,x","XTIMING0"); - GEL_WatchAdd("*(long *)0x0B2C,x","XTIMING6"); - GEL_WatchAdd("*(long *)0x0B2E,x","XTIMING7"); - GEL_WatchAdd("*(long *)0x0B34,x","XINTCNF2"); - GEL_WatchAdd("*0x0B38,x","XBANK"); - GEL_WatchAdd("*0x0B3A,x","XREVISION"); - GEL_WatchAdd("*0x0B3D,x","XRESET"); -} - -/********************************************************************/ -/* External Interrupt Registers */ -/********************************************************************/ -menuitem "Watch External Interrupt Registers"; - -hotmenu All_XINT_Regs() -{ - GEL_WatchAdd("*0x7070,x","XINT1CR"); - GEL_WatchAdd("*0x7071,x","XINT2CR"); - GEL_WatchAdd("*0x7072,x","XINT3CR"); - GEL_WatchAdd("*0x7073,x","XINT4CR"); - GEL_WatchAdd("*0x7074,x","XINT5CR"); - GEL_WatchAdd("*0x7075,x","XINT6CR"); - GEL_WatchAdd("*0x7076,x","XINT7CR"); - GEL_WatchAdd("*0x7077,x","XNMICR"); - GEL_WatchAdd("*0x7078,x","XINT1CTR"); - GEL_WatchAdd("*0x7079,x","XINT2CTR"); - GEL_WatchAdd("*0x707F,x","XNMICTR"); -} -hotmenu XINT_Control_Regs() -{ - GEL_WatchAdd("*0x7070,x","XINT1CR"); - GEL_WatchAdd("*0x7071,x","XINT2CR"); - GEL_WatchAdd("*0x7072,x","XINT3CR"); - GEL_WatchAdd("*0x7073,x","XINT4CR"); - GEL_WatchAdd("*0x7074,x","XINT5CR"); - GEL_WatchAdd("*0x7075,x","XINT6CR"); - GEL_WatchAdd("*0x7076,x","XINT7CR"); - GEL_WatchAdd("*0x7077,x","XNMICR"); -} -hotmenu XINT_Counter_Regs() -{ - GEL_WatchAdd("*0x7078,x","XINT1CTR"); - GEL_WatchAdd("*0x7079,x","XINT2CTR"); - GEL_WatchAdd("*0x707F,x","XNMICTR"); -} - - -/********************************************************************/ -/* GPIO Registers */ -/********************************************************************/ -menuitem "Watch GPIO Registers"; - -hotmenu All_GPIO_CONTROL_Regs() -{ - GEL_WatchAdd("*(long *)0x6F80,x","GPACTRL"); - GEL_WatchAdd("*(long *)0x6F82,x","GPAQSEL1"); - GEL_WatchAdd("*(long *)0x6F84,x","GPAQSEL2"); - GEL_WatchAdd("*(long *)0x6F86,x","GPAMUX1"); - GEL_WatchAdd("*(long *)0x6F88,x","GPAMUX2"); - GEL_WatchAdd("*(long *)0x6F8A,x","GPADIR"); - GEL_WatchAdd("*(long *)0x6F8C,x","GPAPUD"); - - GEL_WatchAdd("*(long *)0x6F90,x","GPBCTRL"); - GEL_WatchAdd("*(long *)0x6F92,x","GPBQSEL1"); - GEL_WatchAdd("*(long *)0x6F94,x","GPBQSEL2"); - GEL_WatchAdd("*(long *)0x6F96,x","GPBMUX1"); - GEL_WatchAdd("*(long *)0x6F98,x","GPBMUX2"); - GEL_WatchAdd("*(long *)0x6F9A,x","GPBDIR"); - GEL_WatchAdd("*(long *)0x6F9C,x","GPBPUD"); - - GEL_WatchAdd("*(long *)0x6FA6,x","GPCMUX1"); - GEL_WatchAdd("*(long *)0x6FA8,x","GPCMUX2"); - GEL_WatchAdd("*(long *)0x6FAA,x","GPCDIR"); - GEL_WatchAdd("*(long *)0x6FAC,x","GPCPUD"); -} -hotmenu All_GPIO_DATA_Regs() -{ - GEL_WatchAdd("*(long *)0x6FC0,x","GPADAT"); - GEL_WatchAdd("*(long *)0x6FC2,x","GPASET"); - GEL_WatchAdd("*(long *)0x6FC4,x","GPACLEAR"); - GEL_WatchAdd("*(long *)0x6FC6,x","GPATOGGLE"); - - GEL_WatchAdd("*(long *)0x6FC8,x","GPBDAT"); - GEL_WatchAdd("*(long *)0x6FCA,x","GPBSET"); - GEL_WatchAdd("*(long *)0x6FCC,x","GPBCLEAR"); - GEL_WatchAdd("*(long *)0x6FCE,x","GPBTOGGLE"); - - GEL_WatchAdd("*(long *)0x6FD0,x","GPCDAT"); - GEL_WatchAdd("*(long *)0x6FD2,x","GPCSET"); - GEL_WatchAdd("*(long *)0x6FD4,x","GPCCLEAR"); - GEL_WatchAdd("*(long *)0x6FD6,x","GPCTOGGLE"); -} -hotmenu All_GPIO_INTERRUPT_Regs() -{ - GEL_WatchAdd("*0x6FE0,x","GPIOXINT1SEL"); - GEL_WatchAdd("*0x6FE1,x","GPIOXINT2SEL"); - GEL_WatchAdd("*0x6FE2,x","GPIOXNMISEL"); - GEL_WatchAdd("*0x6FE3,x","GPIOXINT3SEL"); - GEL_WatchAdd("*0x6FE4,x","GPIOXINT4SEL"); - GEL_WatchAdd("*0x6FE5,x","GPIOXINT5SEL"); - GEL_WatchAdd("*0x6FE6,x","GPIOXINT6SEL"); - GEL_WatchAdd("*0x6FE7,x","GPIOXINT7SEL"); - GEL_WatchAdd("*(long *)0x6FE8,x","GPIOLPMSEL"); -} -hotmenu All_GPA_Registers() -{ - GEL_WatchAdd("*(long *)0x6F80,x","GPACTRL"); - GEL_WatchAdd("*(long *)0x6F82,x","GPAQSEL1"); - GEL_WatchAdd("*(long *)0x6F84,x","GPAQSEL2"); - GEL_WatchAdd("*(long *)0x6F86,x","GPAMUX1"); - GEL_WatchAdd("*(long *)0x6F88,x","GPAMUX2"); - GEL_WatchAdd("*(long *)0x6F8A,x","GPADIR"); - GEL_WatchAdd("*(long *)0x6F8C,x","GPAPUD"); - - GEL_WatchAdd("*(long *)0x6FC0,x","GPADAT"); - GEL_WatchAdd("*(long *)0x6FC2,x","GPASET"); - GEL_WatchAdd("*(long *)0x6FC4,x","GPACLEAR"); - GEL_WatchAdd("*(long *)0x6FC6,x","GPATOGGLE"); -} -hotmenu All_GPB_Registers() -{ - GEL_WatchAdd("*(long *)0x6F90,x","GPBCTRL"); - GEL_WatchAdd("*(long *)0x6F92,x","GPBQSEL1"); - GEL_WatchAdd("*(long *)0x6F94,x","GPBQSEL2"); - GEL_WatchAdd("*(long *)0x6F96,x","GPBMUX1"); - GEL_WatchAdd("*(long *)0x6F98,x","GPBMUX2"); - GEL_WatchAdd("*(long *)0x6F9A,x","GPBDIR"); - GEL_WatchAdd("*(long *)0x6F9C,x","GPBPUD"); - - GEL_WatchAdd("*(long *)0x6FC8,x","GPBDAT"); - GEL_WatchAdd("*(long *)0x6FCA,x","GPBSET"); - GEL_WatchAdd("*(long *)0x6FCC,x","GPBCLEAR"); - GEL_WatchAdd("*(long *)0x6FCE,x","GPBTOGGLE"); -} -hotmenu All_GPC_Registers() -{ - GEL_WatchAdd("*(long *)0x6FA6,x","GPCMUX1"); - GEL_WatchAdd("*(long *)0x6FA8,x","GPCMUX2"); - GEL_WatchAdd("*(long *)0x6FAA,x","GPCDIR"); - GEL_WatchAdd("*(long *)0x6FAC,x","GPCPUD"); - - GEL_WatchAdd("*(long *)0x6FC8,x","GPBDAT"); - GEL_WatchAdd("*(long *)0x6FCA,x","GPBSET"); - GEL_WatchAdd("*(long *)0x6FCC,x","GPBCLEAR"); - GEL_WatchAdd("*(long *)0x6FCE,x","GPBTOGGLE"); - - GEL_WatchAdd("*(long *)0x6FD0,x","GPCDAT"); - GEL_WatchAdd("*(long *)0x6FD2,x","GPCSET"); - GEL_WatchAdd("*(long *)0x6FD4,x","GPCCLEAR"); - GEL_WatchAdd("*(long *)0x6FD6,x","GPCTOGGLE"); -} - - -/********************************************************************/ -/* Multichannel Serial Port Registers */ -/********************************************************************/ -menuitem "Watch McBSP Registers"; - -hotmenu All_McBSP_A_Regs() -{ - GEL_WatchAdd("*0x5000,x","McBSPA DRR2"); - GEL_WatchAdd("*0x5001,x","McBSPA DRR1"); - GEL_WatchAdd("*0x5002,x","McBSPA DXR2"); - GEL_WatchAdd("*0x5003,x","McBSPA DXR1"); - GEL_WatchAdd("*0x5004,x","McBSPA SPCR2"); - GEL_WatchAdd("*0x5005,x","McBSPA SPCR1"); - GEL_WatchAdd("*0x5006,x","McBSPA RCR2"); - GEL_WatchAdd("*0x5007,x","McBSPA RCR1"); - GEL_WatchAdd("*0x5008,x","McBSPA XCR2"); - GEL_WatchAdd("*0x5009,x","McBSPA XCR1"); - GEL_WatchAdd("*0x500A,x","McBSPA SRGR2"); - GEL_WatchAdd("*0x500B,x","McBSPA SRGR1"); - GEL_WatchAdd("*0x500C,x","McBSPA MCR2"); - GEL_WatchAdd("*0x500D,x","McBSPA MCR1"); - GEL_WatchAdd("*0x500E,x","McBSPA RCERA"); - GEL_WatchAdd("*0x500F,x","McBSPA RCERB"); - GEL_WatchAdd("*0x5010,x","McBSPA XCERA"); - GEL_WatchAdd("*0x5011,x","McBSPA XCERB"); - GEL_WatchAdd("*0x5012,x","McBSPA PCR1"); - GEL_WatchAdd("*0x5013,x","McBSPA RCERC"); - GEL_WatchAdd("*0x5014,x","McBSPA RCERD"); - GEL_WatchAdd("*0x5015,x","McBSPA XCERC"); - GEL_WatchAdd("*0x5016,x","McBSPA XCERD"); - GEL_WatchAdd("*0x5017,x","McBSPA RCERE"); - GEL_WatchAdd("*0x5018,x","McBSPA RCERF"); - GEL_WatchAdd("*0x5019,x","McBSPA XCERE"); - GEL_WatchAdd("*0x501A,x","McBSPA XCERF"); - GEL_WatchAdd("*0x501B,x","McBSPA RCERG"); - GEL_WatchAdd("*0x501C,x","McBSPA RCERH"); - GEL_WatchAdd("*0x501D,x","McBSPA XCERG"); - GEL_WatchAdd("*0x501E,x","McBSPA XCERH"); - GEL_WatchAdd("*0x5023,x","McBSPA MFFINT"); - GEL_WatchAdd("*0x503F,x","McBSPA Revision"); -} - -hotmenu All_McBSP_B_Regs() -{ - GEL_WatchAdd("*0x5040,x","McBSPB DRR2"); - GEL_WatchAdd("*0x5041,x","McBSPB DRR1"); - GEL_WatchAdd("*0x5042,x","McBSPB DXR2"); - GEL_WatchAdd("*0x5043,x","McBSPB DXR1"); - GEL_WatchAdd("*0x5044,x","McBSPB SPCR2"); - GEL_WatchAdd("*0x5045,x","McBSPB SPCR1"); - GEL_WatchAdd("*0x5046,x","McBSPB RCR2"); - GEL_WatchAdd("*0x5047,x","McBSPB RCR1"); - GEL_WatchAdd("*0x5048,x","McBSPB XCR2"); - GEL_WatchAdd("*0x5049,x","McBSPB XCR1"); - GEL_WatchAdd("*0x504A,x","McBSPB SRGR2"); - GEL_WatchAdd("*0x504B,x","McBSPB SRGR1"); - GEL_WatchAdd("*0x504C,x","McBSPB MCR2"); - GEL_WatchAdd("*0x504D,x","McBSPB MCR1"); - GEL_WatchAdd("*0x504E,x","McBSPB RCERA"); - GEL_WatchAdd("*0x504F,x","McBSPB RCERB"); - GEL_WatchAdd("*0x5050,x","McBSPB XCERA"); - GEL_WatchAdd("*0x5051,x","McBSPB XCERB"); - GEL_WatchAdd("*0x5052,x","McBSPB PCR1"); - GEL_WatchAdd("*0x5053,x","McBSPB RCERC"); - GEL_WatchAdd("*0x5054,x","McBSPB RCERD"); - GEL_WatchAdd("*0x5055,x","McBSPB XCERC"); - GEL_WatchAdd("*0x5056,x","McBSPB XCERD"); - GEL_WatchAdd("*0x5057,x","McBSPB RCERE"); - GEL_WatchAdd("*0x5058,x","McBSPB RCERF"); - GEL_WatchAdd("*0x5059,x","McBSPB XCERE"); - GEL_WatchAdd("*0x505A,x","McBSPB XCERF"); - GEL_WatchAdd("*0x505B,x","McBSPB RCERG"); - GEL_WatchAdd("*0x505C,x","McBSPB RCERH"); - GEL_WatchAdd("*0x505D,x","McBSPB XCERG"); - GEL_WatchAdd("*0x505E,x","McBSPB XCERH"); - GEL_WatchAdd("*0x5063,x","McBSPB MFFINT"); - GEL_WatchAdd("*0x506F,x","McBSPB Revision"); -} - - - -/********************************************************************/ -/* I2C Registers */ -/********************************************************************/ -menuitem "Watch I2C Registers"; - -hotmenu All_I2C_Regs() -{ - GEL_WatchAdd("*0x7900,x","I2COAR"); - GEL_WatchAdd("*0x7901,x","I2CIER"); - GEL_WatchAdd("*0x7902,x","I2CSTR"); - GEL_WatchAdd("*0x7903,x","I2CCLKL"); - GEL_WatchAdd("*0x7904,x","I2CCLKH"); - GEL_WatchAdd("*0x7905,x","I2CCNT"); - GEL_WatchAdd("*0x7906,x","I2CDRR"); - GEL_WatchAdd("*0x7907,x","I2CSAR"); - GEL_WatchAdd("*0x7908,x","I2CDXR"); - GEL_WatchAdd("*0x7909,x","I2CMDR"); - GEL_WatchAdd("*0x790A,x","I2CISRC"); - GEL_WatchAdd("*0x790C,x","I2CPSC"); - GEL_WatchAdd("*0x7920,x","I2CFFTX"); - GEL_WatchAdd("*0x7921,x","I2CFFRX"); -} - - -/********************************************************************/ -/* Peripheral Interrupt Expansion Registers */ -/********************************************************************/ -menuitem "Watch Peripheral Interrupt Expansion Registers"; - -hotmenu All_PIE_Regs() -{ - GEL_WatchAdd("*0x0CE0,x","PIECTRL"); - GEL_WatchAdd("*0x0CE1,x","PIEACK"); - GEL_WatchAdd("*0x0CE2,x","PIEIER1"); - GEL_WatchAdd("*0x0CE3,x","PIEIFR1"); - GEL_WatchAdd("*0x0CE4,x","PIEIER2"); - GEL_WatchAdd("*0x0CE5,x","PIEIFR2"); - GEL_WatchAdd("*0x0CE6,x","PIEIER3"); - GEL_WatchAdd("*0x0CE7,x","PIEIFR3"); - GEL_WatchAdd("*0x0CE8,x","PIEIER4"); - GEL_WatchAdd("*0x0CE9,x","PIEIFR4"); - GEL_WatchAdd("*0x0CEA,x","PIEIER5"); - GEL_WatchAdd("*0x0CEB,x","PIEIFR5"); - GEL_WatchAdd("*0x0CEC,x","PIEIER6"); - GEL_WatchAdd("*0x0CED,x","PIEIFR6"); - GEL_WatchAdd("*0x0CEE,x","PIEIER7"); - GEL_WatchAdd("*0x0CEF,x","PIEIFR7"); - GEL_WatchAdd("*0x0CF0,x","PIEIER8"); - GEL_WatchAdd("*0x0CF1,x","PIEIFR8"); - GEL_WatchAdd("*0x0CF2,x","PIEIER9"); - GEL_WatchAdd("*0x0CF3,x","PIEIFR9"); - GEL_WatchAdd("*0x0CF4,x","PIEIER10"); - GEL_WatchAdd("*0x0CF5,x","PIEIFR10"); - GEL_WatchAdd("*0x0CF6,x","PIEIER11"); - GEL_WatchAdd("*0x0CF7,x","PIEIFR11"); - GEL_WatchAdd("*0x0CF8,x","PIEIER12"); - GEL_WatchAdd("*0x0CF9,x","PIEIFR12"); -} -hotmenu PIECTRL() -{ - GEL_WatchAdd("*0x0CE0,x","PIECTRL"); -} -hotmenu PIEACK() -{ - GEL_WatchAdd("*0x0CE1,x","PIEACK"); -} -hotmenu PIEIER1_and_PIEIFR1() -{ - GEL_WatchAdd("*0x0CE2,x","PIEIER1"); - GEL_WatchAdd("*0x0CE3,x","PIEIFR1"); -} -hotmenu PIEIER2_and_PIEIFR2() -{ - GEL_WatchAdd("*0x0CE4,x","PIEIER2"); - GEL_WatchAdd("*0x0CE5,x","PIEIFR2"); -} -hotmenu PIEIER3_and_PIEIFR3() -{ - GEL_WatchAdd("*0x0CE6,x","PIEIER3"); - GEL_WatchAdd("*0x0CE7,x","PIEIFR3"); -} -hotmenu PIEIER4_and_PIEIFR4() -{ - GEL_WatchAdd("*0x0CE8,x","PIEIER4"); - GEL_WatchAdd("*0x0CE9,x","PIEIFR4"); -} -hotmenu PIEIER5_and_PIEIFR5() -{ - GEL_WatchAdd("*0x0CEA,x","PIEIER5"); - GEL_WatchAdd("*0x0CEB,x","PIEIFR5"); -} -hotmenu PIEIER6_and_PIEIFR6() -{ - GEL_WatchAdd("*0x0CEC,x","PIEIER6"); - GEL_WatchAdd("*0x0CED,x","PIEIFR6"); -} -hotmenu PIEIER7_and_PIEIFR7() -{ - GEL_WatchAdd("*0x0CEE,x","PIEIER7"); - GEL_WatchAdd("*0x0CEF,x","PIEIFR7"); -} -hotmenu PIEIER8_and_PIEIFR8() -{ - GEL_WatchAdd("*0x0CF0,x","PIEIER8"); - GEL_WatchAdd("*0x0CF1,x","PIEIFR8"); -} -hotmenu PIEIER9_and_PIEIFR9() -{ - GEL_WatchAdd("*0x0CF2,x","PIEIER9"); - GEL_WatchAdd("*0x0CF3,x","PIEIFR9"); -} -hotmenu PIEIFR10_and_PIEIFR10() -{ - GEL_WatchAdd("*0x0CF4,x","PIEIER10"); - GEL_WatchAdd("*0x0CF5,x","PIEIFR10"); -} -hotmenu PIEIER11_and_PIEIFR11() -{ - GEL_WatchAdd("*0x0CF6,x","PIEIER11"); - GEL_WatchAdd("*0x0CF7,x","PIEIFR11"); -} -hotmenu PIEIER12_and_PIEIFR12() -{ - GEL_WatchAdd("*0x0CF8,x","PIEIER12"); - GEL_WatchAdd("*0x0CF9,x","PIEIFR12"); -} - - -/********************************************************************/ -/* Serial Communication Interface Registers */ -/********************************************************************/ -menuitem "Watch SCI Registers"; - -hotmenu SCI_A_All_Regs() -{ - GEL_WatchAdd("*0x7050,x","SCICCRA"); - GEL_WatchAdd("*0x7051,x","SCICTL1A"); - GEL_WatchAdd("*0x7052,x","SCIHBAUDA"); - GEL_WatchAdd("*0x7053,x","SCILBAUDA"); - GEL_WatchAdd("*0x7054,x","SCICTL2A"); - GEL_WatchAdd("*0x7055,x","SCIRXSTA"); - GEL_WatchAdd("*0x7056,x","SCIRXEMUA"); - GEL_WatchAdd("*0x7057,x","SCIRXBUFA"); - GEL_WatchAdd("*0x7059,x","SCITXBUFA"); - GEL_WatchAdd("*0x705A,x","SCIFFTXA"); - GEL_WatchAdd("*0x705B,x","SCIFFRXA"); - GEL_WatchAdd("*0x705C,x","SCIFFCTA"); - GEL_WatchAdd("*0x705F,x","SCIPRIA"); -} -hotmenu SCI_A_FIFO_Registers() -{ - GEL_WatchAdd("*0x705A,x","SCIFFTXA"); - GEL_WatchAdd("*0x705B,x","SCIFFRXA"); - GEL_WatchAdd("*0x705C,x","SCIFFCTA"); -} -hotmenu SCI_B_All_Regs() -{ - GEL_WatchAdd("*0x7750,x","SCICCRB"); - GEL_WatchAdd("*0x7751,x","SCICTL1B"); - GEL_WatchAdd("*0x7752,x","SCIHBAUDB"); - GEL_WatchAdd("*0x7753,x","SCILBAUDB"); - GEL_WatchAdd("*0x7754,x","SCICTL2B"); - GEL_WatchAdd("*0x7755,x","SCIRXSTB"); - GEL_WatchAdd("*0x7756,x","SCIRXEMUB"); - GEL_WatchAdd("*0x7757,x","SCIRXBUFB"); - GEL_WatchAdd("*0x7759,x","SCITXBUFB"); - GEL_WatchAdd("*0x775A,x","SCIFFTXB"); - GEL_WatchAdd("*0x775B,x","SCIFFRXB"); - GEL_WatchAdd("*0x775C,x","SCIFFCTB"); - GEL_WatchAdd("*0x775F,x","SCIPRIB"); -} - -hotmenu SCI_B_FIFO_Registers() -{ - GEL_WatchAdd("*0x775A,x","SCIFFTXB"); - GEL_WatchAdd("*0x775B,x","SCIFFRXB"); - GEL_WatchAdd("*0x775C,x","SCIFFCTB"); -} -hotmenu SCI_C_All_Regs() -{ - GEL_WatchAdd("*0x7770,x","SCICCRC"); - GEL_WatchAdd("*0x7771,x","SCICTL1C"); - GEL_WatchAdd("*0x7772,x","SCIHBAUDC"); - GEL_WatchAdd("*0x7773,x","SCILBAUDC"); - GEL_WatchAdd("*0x7774,x","SCICTL2C"); - GEL_WatchAdd("*0x7775,x","SCIRXSTC"); - GEL_WatchAdd("*0x7776,x","SCIRXEMUC"); - GEL_WatchAdd("*0x7777,x","SCIRXBUFC"); - GEL_WatchAdd("*0x7779,x","SCITXBUFC"); - GEL_WatchAdd("*0x777A,x","SCIFFTXC"); - GEL_WatchAdd("*0x777B,x","SCIFFRXC"); - GEL_WatchAdd("*0x777C,x","SCIFFCTC"); - GEL_WatchAdd("*0x777F,x","SCIPRIC"); -} -hotmenu SCI_C_FIFO_Registers() -{ - GEL_WatchAdd("*0x777A,x","SCIFFTXC"); - GEL_WatchAdd("*0x777B,x","SCIFFRXC"); - GEL_WatchAdd("*0x777C,x","SCIFFCTC"); -} - - -/********************************************************************/ -/* Serial Peripheral Interface Registers */ -/********************************************************************/ -menuitem "Watch SPI Registers"; - -hotmenu SPI_A_All_Regs() -{ - GEL_WatchAdd("*0x7040,x","SPIA SPICCR"); - GEL_WatchAdd("*0x7041,x","SPIA SPICTL"); - GEL_WatchAdd("*0x7042,x","SPIA SPIST"); - GEL_WatchAdd("*0x7044,x","SPIA SPIBRR"); - GEL_WatchAdd("*0x7046,x","SPIA SPIEMU"); - GEL_WatchAdd("*0x7047,x","SPIA SPIRXBUF"); - GEL_WatchAdd("*0x7048,x","SPIA SPITXBUF"); - GEL_WatchAdd("*0x7049,x","SPIA SPIDAT"); - GEL_WatchAdd("*0x704A,x","SPIA SPIFFTX"); - GEL_WatchAdd("*0x704B,x","SPIA SPIFFRX"); - GEL_WatchAdd("*0x704C,x","SPIA SPIFFCT"); - GEL_WatchAdd("*0x704F,x","SPIA SPIPRI"); -} -hotmenu SPI_A_FIFO_Registers() -{ - GEL_WatchAdd("*0x704A,x","SPIA SPIFFTX"); - GEL_WatchAdd("*0x704B,x","SPIA SPIFFRX"); - GEL_WatchAdd("*0x704C,x","SPIA SPIFFCT"); -} - - -/********************************************************************/ -/* Watchdog Timer Registers */ -/********************************************************************/ -menuitem "Watch Watchdog Timer Registers"; - -hotmenu All_Watchdog_Regs() -{ - GEL_WatchAdd("*0x7023,x","WDCNTR"); - GEL_WatchAdd("*0x7025,x","WDKEY"); - GEL_WatchAdd("*0x7029,x","WDCR"); - GEL_WatchAdd("*0x7022,x","SCSR"); -} - -/********************************************************************/ -/*** End of file ***/ diff --git a/Source/External/v120/DSP2833x_common/gel/f28235.gel b/Source/External/v120/DSP2833x_common/gel/f28235.gel deleted file mode 100644 index 9d35fee..0000000 --- a/Source/External/v120/DSP2833x_common/gel/f28235.gel +++ /dev/null @@ -1,2939 +0,0 @@ -/********************************************************************/ -/* f28235.gel */ -/* Version 3.30.2 */ -/* */ -/* This GEL file is to be used with the TMS320F28235 DSP. */ -/* Changes may be required to support specific hardware designs. */ -/* */ -/* Code Composer Studio supports six reserved GEL functions that */ -/* automatically get executed if they are defined. They are: */ -/* */ -/* StartUp() - Executed whenever CCS is invoked */ -/* OnReset() - Executed after Debug->Reset CPU */ -/* OnRestart() - Executed after Debug->Restart */ -/* OnPreFileLoaded() - Executed before File->Load Program */ -/* OnFileLoaded() - Executed after File->Load Program */ -/* OnTargetConnect() - Executed after Debug->Connect */ -/* */ -/********************************************************************/ - -StartUp() -{ - -/* The next line automatically loads the .gel file that comes */ -/* with the DSP2833x Peripheral Header Files download. To use, */ -/* uncomment, and adjust the directory path as needed. */ -// GEL_LoadGel("c:\\CCStudio_v3.3\\cc\\gel\\DSP2833x_Peripheral.gel"); - -} - -OnReset(int nErrorCode) -{ - C28x_Mode(); - Unlock_CSM(); - ADC_Cal(); - -} - -OnRestart(int nErrorCode) -{ -/* CCS will call OnRestart() when you do a Debug->Restart and */ -/* after you load a new file. Between running interrupt based */ -/* programs, this function will clear interrupts and help keep */ -/* the processor from going off into invalid memory. */ - C28x_Mode(); - IER = 0; - IFR = 0; - ADC_Cal(); -} - -int TxtOutCtl=0; -OnPreFileLoaded() -{ - XINTF_Enable(); - if (TxtOutCtl==0) - { - GEL_TextOut("\nNOTES:\nGel will enable XINTFx16 during Debug only.\nEnable XINTF in code prior to use."); - TxtOutCtl=1; - } -} - -OnFileLoaded(int nErrorCode, int bSymbolsOnly) -{ - ADC_Cal(); -} - -OnTargetConnect() -{ - C28x_Mode(); - F28235_Memory_Map(); /* Initialize the CCS memory map */ - -/* Check to see if CCS has been started-up with the DSP already */ -/* running in real-time mode. The user can add whatever */ -/* custom initialization stuff they want to each case. */ - - if (GEL_IsInRealtimeMode()) /* Do real-time mode target initialization */ - { - - } - else /* Do stop-mode target initialization */ - { - GEL_Reset(); /* Reset DSP */ - } - -} - - -/********************************************************************/ -/* These functions are launched by the GEL_Toolbar button plugin */ -/********************************************************************/ -GEL_Toolbar1() -{ - Run_Realtime_with_Reset(); -} -GEL_Toolbar2() -{ - Run_Realtime_with_Restart(); -} -GEL_Toolbar3() -{ - Full_Halt(); -} -GEL_Toolbar4() -{ - Full_Halt_with_Reset(); -} - -int GEL_Toolbar5_Toggle = 0; -GEL_Toolbar5() -{ - if(GEL_Toolbar5_Toggle == 0) - { - GEL_Toolbar5_Toggle = 1; - GEL_OpenWindow("GEL_Buttons",1,4); - GEL_TextOut("Button 1: Run_Realtime_with_Reset()","GEL_Buttons",0,0); - GEL_TextOut("Button 2: Run_Realtime_with_Restart()","GEL_Buttons",0,1); - GEL_TextOut("Button 3: Full_Halt()", "GEL_Buttons",0,2); - GEL_TextOut("Button 4: Full_Halt_with_Reset()","GEL_Buttons",0,3); - } - else - { - GEL_Toolbar5_Toggle = 0; - GEL_CloseWindow("GEL_Buttons"); - } -} - - -/********************************************************************/ -/* These functions are useful to engage/dis-enagage realtime */ -/* emulation mode during debug. They save the user from having to */ -/* manually perform these steps in CCS. */ -/********************************************************************/ -menuitem "Realtime Emulation Control"; - -hotmenu Run_Realtime_with_Reset() -{ - GEL_Reset(); /* Reset the DSP */ - ST1 = ST1 & 0xFFFD; /* clear DBGM bit in ST1 */ - GEL_EnableRealtime(); /* Enable Realtime mode */ - GEL_Run(); /* Run the DSP */ -} -hotmenu Run_Realtime_with_Restart() -{ - GEL_Restart(); /* Reset the DSP */ - ST1 = ST1 & 0xFFFD; /* clear DBGM bit in ST1 */ - GEL_EnableRealtime(); /* Enable Realtime mode */ - GEL_Run(); /* Run the DSP */ -} -hotmenu Full_Halt() -{ - GEL_DisableRealtime(); /* Disable Realtime mode */ - GEL_Halt(); /* Halt the DSP */ -} -hotmenu Full_Halt_with_Reset() -{ - GEL_DisableRealtime(); /* Disable Realtime mode */ - GEL_Halt(); /* Halt the DSP */ - GEL_Reset(); /* Reset the DSP */ -} - - -/********************************************************************/ -/* F28235 Memory Map */ -/* */ -/* Note: M0M1MAP and VMAP signals tied high on F28235 core */ -/* */ -/* 0x000000 - 0x0003ff M0 SARAM (Prog and Data) */ -/* 0x000400 - 0x0007ff M1 SARAM (Prog and Data) */ -/* 0x000800 - 0x001fff Peripheral Frame0 (PF0) (Data only) */ -/* 0x004000 - 0x004fff XINTF Zone 0 (Prog and Data) */ -/* 0x005000 - 0x005fff Peripheral Frame3 (PF3) (Data only) */ -/* 0x006000 - 0x006fff Peripheral Frame1 (PF1) (Data only) */ -/* 0x007000 - 0x007fff Peripheral Frame2 (PF2) (Data only) */ -/* 0x008000 - 0x008fff L0 SARAM (Prog and Data) */ -/* 0x009000 - 0x009fff L1 SARAM (Prog and Data) */ -/* 0x00A000 - 0x00Afff L2 SARAM (Prog and Data) */ -/* 0x00B000 - 0x00Bfff L3 SARAM (Prog and Data) */ -/* 0x00C000 - 0x00Cfff L4 SARAM (Prog and Data) */ -/* 0x00D000 - 0x00Dfff L5 SARAM (Prog and Data) */ -/* 0x00E000 - 0x00Efff L6 SARAM (Prog and Data) */ -/* 0x00F000 - 0x00Ffff L7 SARAM (Prog and Data) */ -/* 0x100000 - 0x1fffff XINTF Zone 6 (Prog and Data) */ -/* 0x200000 - 0x2fffff XINTF Zone 7 (Prog and Data */ -/* 0x300000 - 0x33ffff Flash (Prog and Data) */ -/* 0x380080 - 0x380088 ADC_cal function (Prog and Data) */ -/* 0x380090 - 0x380090 PARTID value (Prog and Data) */ -/* 0x380400 - 0x3807ff OTP (Prog and Data) */ -/* 0x3f8000 - 0x3f8fff L0 SARAM (Prog and Data) */ -/* 0x3f9000 - 0x3f9fff L1 SARAM (Prog and Data) */ -/* 0x3fA000 - 0x3fAfff L2 SARAM (Prog and Data) */ -/* 0x3fB000 - 0x3fBfff L3 SARAM (Prog and Data) */ -/* 0x3fe000 - 0x3fffff BOOT ROM (Prog and Data) */ -/********************************************************************/ -menuitem "Initialize Memory Map"; - -hotmenu F28235_Memory_Map() -{ - GEL_MapReset(); - GEL_MapOn(); - - /* Program memory map */ - GEL_MapAdd(0x0,0,0x400,1,1); /* M0 SARAM */ - GEL_MapAdd(0x400,0,0x400,1,1); /* M1 SARAM */ - GEL_MapAdd(0x4000,0,0x1000,1,1); /* Zone 0 */ - GEL_MapAdd(0x8000,0,0x1000,1,1); /* L0 SARAM */ - GEL_MapAdd(0x9000,0,0x1000,1,1); /* L1 SARAM */ - GEL_MapAdd(0xA000,0,0x1000,1,1); /* L2 SARAM */ - GEL_MapAdd(0xB000,0,0x1000,1,1); /* L3 SARAM */ - GEL_MapAdd(0xC000,0,0x1000,1,1); /* L4 SARAM */ - GEL_MapAdd(0xD000,0,0x1000,1,1); /* L5 SARAM */ - GEL_MapAdd(0xE000,0,0x1000,1,1); /* L6 SARAM */ - GEL_MapAdd(0xF000,0,0x1000,1,1); /* L7 SARAM */ - GEL_MapAdd(0x100000,0,0x100000,1,1); /* Zone 6 */ - GEL_MapAdd(0x200000,0,0x100000,1,1); /* Zone 7 */ - GEL_MapAdd(0x300000,0,0x40000,1,0); /* FLASH */ - GEL_MapAdd(0x380080,0,0x00009,1,0); /* ADC_cal function*/ - GEL_MapAdd(0x380090,0,0x00001,1,0); /* PARTID value */ - GEL_MapAdd(0x380400,0,0x00400,1,0); /* OTP */ - GEL_MapAdd(0x3f8000,0,0x1000,1,1); /* L0 SARAM Mirror */ - GEL_MapAdd(0x3f9000,0,0x1000,1,1); /* L1 SARAM Mirror */ - GEL_MapAdd(0x3fA000,0,0x1000,1,1); /* L2 SARAM Mirror */ - GEL_MapAdd(0x3fb000,0,0x1000,1,1); /* L3 SARAM Mirror */ - GEL_MapAdd(0x3fe000,0,0x2000,1,0); /* BOOT ROM */ - - /* Data memory map */ - GEL_MapAdd(0x000,1,0x400,1,1); /* M0 SARAM */ - GEL_MapAdd(0x400,1,0x400,1,1); /* M1 SARAM */ - GEL_MapAdd(0x800,1,0x1800,1,1); /* PF0 */ - GEL_MapAdd(0x4000,1,0x1000,1,1); /* Zone 0 */ - GEL_MapAdd(0x5000,1,0x1000,1,1); /* PF3 */ - GEL_MapAdd(0x6000,1,0x1000,1,1); /* PF1 */ - GEL_MapAddStr(0x7000,1,0x1000,"R|W|AS2",0); /* PF2 */ - GEL_MapAdd(0x8000,1,0x1000,1,1); /* L0 SARAM */ - GEL_MapAdd(0x9000,1,0x1000,1,1); /* L1 SARAM */ - GEL_MapAdd(0xA000,1,0x1000,1,1); /* L2 SARAM */ - GEL_MapAdd(0xB000,1,0x1000,1,1); /* L3 SARAM */ - GEL_MapAdd(0xC000,1,0x1000,1,1); /* L4 SARAM */ - GEL_MapAdd(0xD000,1,0x1000,1,1); /* L5 SARAM */ - GEL_MapAdd(0xE000,1,0x1000,1,1); /* L6 SARAM */ - GEL_MapAdd(0xF000,1,0x1000,1,1); /* L7 SARAM */ - GEL_MapAdd(0x100000,1,0x100000,1,1); /* Zone 6 */ - GEL_MapAdd(0x200000,1,0x100000,1,1); /* Zone 7 */ - GEL_MapAdd(0x300000,1,0x40000,1,0); /* FLASH */ - GEL_MapAdd(0x380400,1,0x00400,1,0); /* OTP */ - GEL_MapAdd(0x380080,1,0x00009,1,0); /* ADC_cal function*/ - GEL_MapAdd(0x380090,1,0x00001,1,0); /* PARTID value */ - GEL_MapAdd(0x3f8000,1,0x1000,1,1); /* L0 SARAM Mirror */ - GEL_MapAdd(0x3f9000,1,0x1000,1,1); /* L1 SARAM Mirror */ - GEL_MapAdd(0x3fA000,1,0x1000,1,1); /* L2 SARAM Mirror */ - GEL_MapAdd(0x3fb000,1,0x1000,1,1); /* L3 SARAM Mirror */ - GEL_MapAdd(0x3fe000,1,0x2000,1,0); /* BOOT ROM */ -} - - -/********************************************************************/ -/* The ESTOP0 fill functions are useful for debug. They fill the */ -/* RAM with software breakpoints that will trap runaway code. */ -/********************************************************************/ -hotmenu Fill_F28235_RAM_with_ESTOP0() -{ - GEL_MemoryFill(0x000000,1,0x000800,0x7625); /* Fill M0/M1 */ - GEL_MemoryFill(0x008000,1,0x002000,0x7625); /* Fill L0/L1 */ - GEL_MemoryFill(0x00A000,1,0x002000,0x7625); /* Fill L2/L3 */ - GEL_MemoryFill(0x00C000,1,0x002000,0x7625); /* Fill L4/L5 */ - GEL_MemoryFill(0x00E000,1,0x002000,0x7625); /* Fill L6/L7 */ -} - - -/********************************************************************/ -menuitem "Watchdog"; -hotmenu Disable_WD() -{ - *0x7029 = *0x7029 | 0x0068; /* Set the WDDIS bit */ - *0x7025 = 0x0055; /* Service the WD */ - *0x7025 = 0x00AA; /* once to be safe. */ - GEL_TextOut("\nWatchdog Timer Disabled"); -} - - -/********************************************************************/ -menuitem "Code Security Module" -hotmenu Unlock_CSM() -{ - /* Perform dummy reads of the password locations */ - XAR0 = *0x33FFF8; - XAR0 = *0x33FFF9; - XAR0 = *0x33FFFA; - XAR0 = *0x33FFFB; - XAR0 = *0x33FFFC; - XAR0 = *0x33FFFD; - XAR0 = *0x33FFFE; - XAR0 = *0x33FFFF; - - /* Write passwords to the KEY registers. 0xFFFF's are dummy passwords. - User should replace them with the correct password for their DSP */ - *0xAE0 = 0xFFFF; - *0xAE1 = 0xFFFF; - *0xAE2 = 0xFFFF; - *0xAE3 = 0xFFFF; - *0xAE4 = 0xFFFF; - *0xAE5 = 0xFFFF; - *0xAE6 = 0xFFFF; - *0xAE7 = 0xFFFF; -} - - -/********************************************************************/ -menuitem "Addressing Modes"; -hotmenu C28x_Mode() -{ - ST1 = ST1 & (~0x0100); /* AMODE = 0 */ - ST1 = ST1 | 0x0200; /* OBJMODE = 1 */ -} -hotmenu C24x_Mode() -{ - ST1 = ST1 | 0x0100; /* AMODE = 1 */ - ST1 = ST1 | 0x0200; /* OBJMODE = 1 */ -} -hotmenu C27x_Mode() -{ - ST1 = ST1 & (~0x0100); /* AMODE = 0 */ - ST1 = ST1 & (~0x0200); /* OBJMODE = 0 */ -} - - -/********************************************************************/ -/* PLL Ratios */ -/* */ -/* The following table describes the PLL clocking ratios (0..10) */ -/* */ -/* Ratio CLKIN Description */ -/* ----- -------------- ------------ */ -/* 0 OSCCLK/2 PLL bypassed */ -/* 1 (OSCCLK * 1)/2 15 Mhz for 30 Mhz CLKIN */ -/* 2 (OSCCLK * 2)/2 30 Mhz for 30 Mhz CLKIN */ -/* 3 (OSCCLK * 3)/2 45 Mhz for 30 Mhz CLKIN */ -/* 4 (OSCCLK * 4)/2 60 Mhz for 30 Mhz CLKIN */ -/* 5 (OSCCLK * 5)/2 75 Mhz for 30 Mhz CLKIN */ -/* 6 (OSCCLK * 6)/2 90 Mhz for 30 Mhz CLKIN */ -/* 7 (OSCCLK * 7)/2 105 Mhz for 30 Mhz CLKIN */ -/* 8 (OSCCLK * 8)/2 120 Mhz for 30 Mhz CLKIN */ -/* 9 (OSCCLK * 9)/2 135 Mhz for 30 Mhz CLKIN */ -/* 10 (OSCCLK * 10)/2 150 Mhz for 30 Mhz CLKIN */ -/********************************************************************/ -menuitem "Set PLL Ratio"; - -hotmenu Bypass() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 0; /* CLKIN = OSCCLK/2, PLL is bypassed */ - PLL_Wait(); -} -hotmenu OSCCLK_x1_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 1; /* CLKIN = (OSCCLK * 1)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x2_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 2; /* CLKIN = (OSCCLK * 2)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x3_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 3; /* CLKIN = (OSCCLK * 3)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x4_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 4; /* CLKIN = (OSCCLK * 4)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x5_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 5; /* CLKIN = (OSCCLK * 5)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x6_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 6; /* CLKIN = (OSCCLK * 6)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x7_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 7; /* CLKIN = (OSCCLK * 7)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x8_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 8; /* CLKIN = (OSCCLK * 8)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x9_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 9; /* CLKIN = (OSCCLK * 9)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x10_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 10; /* CLKIN = (OSCCLK * 10)/2 */ - PLL_Wait(); -} -// hotmenu OSCCLK_x1_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 1; /* CLKIN = (OSCCLK * 1)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x2_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 2; /* CLKIN = (OSCCLK * 2)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x3_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 3; /* CLKIN = (OSCCLK * 3)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x4_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 4; /* CLKIN = (OSCCLK * 4)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x5_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 5; /* CLKIN = (OSCCLK * 5)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x6_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 6; /* CLKIN = (OSCCLK * 6)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x7_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 7; /* CLKIN = (OSCCLK * 7)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x8_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 8; /* CLKIN = (OSCCLK * 8)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x9_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 9; /* CLKIN = (OSCCLK * 9)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x10_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 10; /* CLKIN = (OSCCLK * 10)/1 */ -// PLL_Wait(); -// } - - - -/********************************************************************/ -/* For F2823x devices, DIVSEL is 1/4 by default. Switch it to 1/2 */ -/********************************************************************/ - -DIVSEL_div2() -{ - int temp; - int PLLSTS; - - PLLSTS = 0x7011; - - temp = *PLLSTS; - temp &= 0xFE7F; /* Clear bits 7 & 8 */ - temp |= 2 << 7; /* Set bit 8 */ - *PLLSTS = temp; /* Switch to 1/2 */ -} - - - -/********************************************************************/ -/* For F2823x devices, DIVSEL is 1/4 by default. Switch it to /1 */ -/********************************************************************/ - -DIVSEL_div1() -{ - int temp; - int PLLSTS; - - PLLSTS = 0x7011; - - DIVSEL_div2(); /* First switch DIVSEL to 1/2 and wait */ - wait(); - temp = *PLLSTS; - temp |= 3 << 7; /* Set bits 7 & 8 */ - *PLLSTS = temp; /* Switch to 1/2 */ -} - -wait() -{ - int delay = 0; - for (delay = 0; delay <= 5; delay ++) - {} -} - -/********************************************************************/ -/* For F2823x devices, check the PLLOCKS bit for PLL lock. */ -/********************************************************************/ -PLL_Wait() -{ - int PLLSTS; - int delay = 0; - - PLLSTS = 0x7011; - - - while ( ( (unsigned int)*PLLSTS & 0x0001) != 0x0001) - { - delay++; - GEL_TextOut("Waiting for PLL Lock, PLLSTS = %x\n",,,,,(unsigned int)*PLLSTS); - } - GEL_TextOut("\nPLL lock complete, PLLSTS = %x\n",,,,,(unsigned int)*PLLSTS); -} - -/********************************************************************/ -/* Load the ADC Calibration values from TI OTP */ -/********************************************************************/ -menuitem "ADC Calibration" -hotmenu ADC_Cal() -{ - /* Perform dummy reads of the password locations */ - XAR0 = *0x33FFF8; - XAR0 = *0x33FFF9; - XAR0 = *0x33FFFA; - XAR0 = *0x33FFFB; - XAR0 = *0x33FFFC; - XAR0 = *0x33FFFD; - XAR0 = *0x33FFFE; - XAR0 = *0x33FFFF; - - - if(((*0x0AEF) & 0x0001) == 0) - { - XAR0 = *0x701C; - *0x701C |= 0x0008; - *0x711C = *0x380083; - *0x711D = *0x380085; - *0x701C = XAR0; - XAR0 = 0; - - } - else - { - GEL_TextOut("\nADC Calibration not complete, check if device is unlocked and recalibrate."); - } -} - -/********************************************************************/ -/* Enable the XINTF and configure GPIOs for XINTF function */ -/********************************************************************/ -menuitem "XINTF Enable" -hotmenu XINTF_Enable() -{ - - /* enable XINTF clock (XTIMCLK) */ - - *0x7020 = 0x3700; - /* GPBMUX1: XA0-XA7, XA16, XZCS0, */ - /* XZCS7, XREADY, XRNW, XWE0 */ - /* GPAMUX2: XA17-XA19, XZCS6 */ - /* GPCMUX2: XA8-XA15 */ - /* GPCMUX1: XD0-XD15 */ - *(unsigned long *)0x6F96 = 0xFFFFFFC0; /* GPBMUX1 */ - *(unsigned long *)0x6f88 = 0xFF000000; /* GPAMUX2 */ - *(unsigned long *)0x6FA8 = 0x0000AAAA; /* GPCMUX2 */ - *(unsigned long *)0x6FA6 = 0xAAAAAAAA; /* GPCMUX1 */ - - /* Uncomment for x32 data bus */ - /* GPBMUX2: XD16-XD31 */ -// *(unsigned long *)0x6F98 = 0xFFFFFFFF; /* GPBMUX2 */ - - /* Zone timing. - /* Each zone can be configured seperately */ - /* Uncomment the x16 or the x32 timing */ - /* depending on the data bus width for */ - /* the zone */ - - /* x16 Timing */ - *(unsigned long *)0x0B20 = 0x0043FFFF; /* Zone0 */ - *(unsigned long *)0x0B2C = 0x0043FFFF; /* Zone6 */ - *(unsigned long *)0x0B2E = 0x0043FFFF; /* Zone7 */ - - /* x32 Timing: -// *(unsigned long *)0x0B20 = 0x0041FFFF; /* x32 */ -// *(unsigned long *)0x0B2C = 0x0041FFFF; /* x32 */ -// *(unsigned long *)0x0B2E = 0x0041FFFF; /* x32 */ - - -} - - - - - -/********************************************************************/ -/* The below are used to display the symbolic names of the F28235 */ -/* memory mapped registers in the watch window. To view these */ -/* registers, click on the GEL menu button in Code Composer Studio, */ -/* then select which registers or groups of registers you want to */ -/* view. They will appear in the watch window under the Watch1 tab. */ -/********************************************************************/ - -/* Add a space line to the GEL menu */ -menuitem "______________________________________"; -hotmenu __() {} - -/********************************************************************/ -/* A/D Converter Registers */ -/********************************************************************/ -menuitem "Watch ADC Registers"; - -hotmenu All_ADC_Regs() -{ - GEL_WatchAdd("*0x7100,x","ADCTRL1"); - GEL_WatchAdd("*0x7101,x","ADCTRL2"); - GEL_WatchAdd("*0x7102,x","ADCMAXCONV"); - GEL_WatchAdd("*0x7103,x","ADCCHSELSEQ1"); - GEL_WatchAdd("*0x7104,x","ADCCHSELSEQ2"); - GEL_WatchAdd("*0x7105,x","ADCCHSELSEQ3"); - GEL_WatchAdd("*0x7106,x","ADCCHSELSEQ4"); - GEL_WatchAdd("*0x7107,x","ADCASEQSR"); - GEL_WatchAdd("*0x7108,x","ADCRESULT0"); - GEL_WatchAdd("*0x7109,x","ADCRESULT1"); - GEL_WatchAdd("*0x710A,x","ADCRESULT2"); - GEL_WatchAdd("*0x710B,x","ADCRESULT3"); - GEL_WatchAdd("*0x710C,x","ADCRESULT4"); - GEL_WatchAdd("*0x710D,x","ADCRESULT5"); - GEL_WatchAdd("*0x710E,x","ADCRESULT6"); - GEL_WatchAdd("*0x710F,x","ADCRESULT7"); - GEL_WatchAdd("*0x7110,x","ADCRESULT8"); - GEL_WatchAdd("*0x7111,x","ADCRESULT9"); - GEL_WatchAdd("*0x7112,x","ADCRESULT10"); - GEL_WatchAdd("*0x7113,x","ADCRESULT11"); - GEL_WatchAdd("*0x7114,x","ADCRESULT12"); - GEL_WatchAdd("*0x7115,x","ADCRESULT13"); - GEL_WatchAdd("*0x7116,x","ADCRESULT14"); - GEL_WatchAdd("*0x7117,x","ADCRESULT15"); - GEL_WatchAdd("*0x7118,x","ADCTRL3"); - GEL_WatchAdd("*0x7119,x","ADCST"); - GEL_WatchAdd("*0x711C,x","ADCREFSEL"); - GEL_WatchAdd("*0x711D,x","ADCOFFTRIM"); - - GEL_WatchAdd("*0x0B00,x","ADCRESULT0 Mirror"); - GEL_WatchAdd("*0x0B01,x","ADCRESULT1 Mirror"); - GEL_WatchAdd("*0x0B02,x","ADCRESULT2 Mirror"); - GEL_WatchAdd("*0x0B03,x","ADCRESULT3 Mirror"); - GEL_WatchAdd("*0x0B04,x","ADCRESULT4 Mirror"); - GEL_WatchAdd("*0x0B05,x","ADCRESULT5 Mirror"); - GEL_WatchAdd("*0x0B06,x","ADCRESULT6 Mirror"); - GEL_WatchAdd("*0x0B07,x","ADCRESULT7 Mirror"); - GEL_WatchAdd("*0x0B08,x","ADCRESULT8 Mirror"); - GEL_WatchAdd("*0x0B09,x","ADCRESULT9 Mirror"); - GEL_WatchAdd("*0x0B0A,x","ADCRESULT10 Mirror"); - GEL_WatchAdd("*0x0B0B,x","ADCRESULT11 Mirror"); - GEL_WatchAdd("*0x0B0C,x","ADCRESULT12 Mirror"); - GEL_WatchAdd("*0x0B0D,x","ADCRESULT13 Mirror"); - GEL_WatchAdd("*0x0B0E,x","ADCRESULT14 Mirror"); - GEL_WatchAdd("*0x0B0F,x","ADCRESULT15 Mirror"); -} -hotmenu ADC_Control_Regs() -{ - GEL_WatchAdd("*0x7100,x","ADCTRL1"); - GEL_WatchAdd("*0x7101,x","ADCTRL2"); - GEL_WatchAdd("*0x7102,x","ADCMAXCONV"); - GEL_WatchAdd("*0x7107,x","ADCASEQSR"); - GEL_WatchAdd("*0x7118,x","ADCTRL3"); - GEL_WatchAdd("*0x7119,x","ADCST"); - GEL_WatchAdd("*0x711C,x","ADCREFSEL"); - GEL_WatchAdd("*0x711D,x","ADCOFFTRIM"); -} -hotmenu ADCCHSELSEQx_Regs() -{ - GEL_WatchAdd("*0x7103,x","ADCCHSELSEQ1"); - GEL_WatchAdd("*0x7104,x","ADCCHSELSEQ2"); - GEL_WatchAdd("*0x7105,x","ADCCHSELSEQ3"); - GEL_WatchAdd("*0x7106,x","ADCCHSELSEQ4"); -} -hotmenu ADCRESULT_0_to_7() -{ - GEL_WatchAdd("*0x7108,x","ADCRESULT0"); - GEL_WatchAdd("*0x7109,x","ADCRESULT1"); - GEL_WatchAdd("*0x710A,x","ADCRESULT2"); - GEL_WatchAdd("*0x710B,x","ADCRESULT3"); - GEL_WatchAdd("*0x710C,x","ADCRESULT4"); - GEL_WatchAdd("*0x710D,x","ADCRESULT5"); - GEL_WatchAdd("*0x710E,x","ADCRESULT6"); - GEL_WatchAdd("*0x710F,x","ADCRESULT7"); -} -hotmenu ADCRESULT_8_to_15() -{ - GEL_WatchAdd("*0x7110,x","ADCRESULT8"); - GEL_WatchAdd("*0x7111,x","ADCRESULT9"); - GEL_WatchAdd("*0x7112,x","ADCRESULT10"); - GEL_WatchAdd("*0x7113,x","ADCRESULT11"); - GEL_WatchAdd("*0x7114,x","ADCRESULT12"); - GEL_WatchAdd("*0x7115,x","ADCRESULT13"); - GEL_WatchAdd("*0x7116,x","ADCRESULT14"); - GEL_WatchAdd("*0x7117,x","ADCRESULT15"); -} -hotmenu ADCRESULT_Mirror_0_to_7() -{ - GEL_WatchAdd("*0x0B00,x","ADCRESULT0 Mirror"); - GEL_WatchAdd("*0x0B01,x","ADCRESULT1 Mirror"); - GEL_WatchAdd("*0x0B02,x","ADCRESULT2 Mirror"); - GEL_WatchAdd("*0x0B03,x","ADCRESULT3 Mirror"); - GEL_WatchAdd("*0x0B04,x","ADCRESULT4 Mirror"); - GEL_WatchAdd("*0x0B05,x","ADCRESULT5 Mirror"); - GEL_WatchAdd("*0x0B06,x","ADCRESULT6 Mirror"); - GEL_WatchAdd("*0x0B07,x","ADCRESULT7 Mirror"); -} -hotmenu ADCRESULT_Mirror_8_to_15() -{ - GEL_WatchAdd("*0x0B08,x","ADCRESULT8 Mirror"); - GEL_WatchAdd("*0x0B09,x","ADCRESULT9 Mirror"); - GEL_WatchAdd("*0x0B0A,x","ADCRESULT10 Mirror"); - GEL_WatchAdd("*0x0B0B,x","ADCRESULT11 Mirror"); - GEL_WatchAdd("*0x0B0C,x","ADCRESULT12 Mirror"); - GEL_WatchAdd("*0x0B0D,x","ADCRESULT13 Mirror"); - GEL_WatchAdd("*0x0B0E,x","ADCRESULT14 Mirror"); - GEL_WatchAdd("*0x0B0F,x","ADCRESULT15 Mirror"); -} - - -/********************************************************************/ -/* Clocking and Low-Power Registers */ -/********************************************************************/ -menuitem "Watch Clocking and Low-Power Registers"; - -hotmenu All_Clocking_and_Low_Power_Regs() -{ - GEL_WatchAdd("*0x7010,x","XCLK"); - GEL_WatchAdd("*0x7011,x","PLLSTS"); - GEL_WatchAdd("*0x701A,x","HISPCP"); - GEL_WatchAdd("*0x701B,x","LOSPCP"); - GEL_WatchAdd("*0x701C,x","PCLKCR0"); - GEL_WatchAdd("*0x701D,x","PCLKCR1"); - GEL_WatchAdd("*0x701E,x","LPMCR0"); - GEL_WatchAdd("*0x7020,x","PCLKCR3"); - GEL_WatchAdd("*0x7021,x","PLLCR"); -} - - -/********************************************************************/ -/* Code Security Module Registers */ -/********************************************************************/ -menuitem "Watch Code Security Module Registers"; - -hotmenu CSMSCR() -{ - GEL_WatchAdd("*0x0AEF,x","CSMSCR"); - GEL_WatchAdd("(*0x0AEF>>15)&1,d"," FORCESEC bit"); - GEL_WatchAdd("(*0x0AEF)&1,d"," SECURE bit"); -} -hotmenu PWL_Locations() -{ - GEL_WatchAdd("*0x33FFF8,x","PWL0"); - GEL_WatchAdd("*0x33FFF9,x","PWL1"); - GEL_WatchAdd("*0x33FFFA,x","PWL2"); - GEL_WatchAdd("*0x33FFFB,x","PWL3"); - GEL_WatchAdd("*0x33FFFC,x","PWL4"); - GEL_WatchAdd("*0x33FFFD,x","PWL5"); - GEL_WatchAdd("*0x33FFFE,x","PWL6"); - GEL_WatchAdd("*0x33FFFF,x","PWL7"); -} - - -/********************************************************************/ -/* CPU Timer Registers */ -/********************************************************************/ -menuitem "Watch CPU Timer Registers"; - -hotmenu All_CPU_Timer0_Regs() -{ - GEL_WatchAdd("*0x0C00,x","TIMER0TIM"); - GEL_WatchAdd("*0x0C01,x","TIMER0TIMH"); - GEL_WatchAdd("*0x0C02,x","TIMER0PRD"); - GEL_WatchAdd("*0x0C03,x","TIMER0PRDH"); - GEL_WatchAdd("*0x0C04,x","TIMER0TCR"); - GEL_WatchAdd("*0x0C06,x","TIMER0TPR"); - GEL_WatchAdd("*0x0C07,x","TIMER0TPRH"); -} -hotmenu All_CPU_Timer1_Regs() -{ - GEL_WatchAdd("*0x0C08,x","TIMER1TIM"); - GEL_WatchAdd("*0x0C09,x","TIMER1TIMH"); - GEL_WatchAdd("*0x0C0A,x","TIMER1PRD"); - GEL_WatchAdd("*0x0C0B,x","TIMER1PRDH"); - GEL_WatchAdd("*0x0C0C,x","TIMER1TCR"); - GEL_WatchAdd("*0x0C0E,x","TIMER1TPR"); - GEL_WatchAdd("*0x0C0F,x","TIMER1TPRH"); -} -hotmenu All_CPU_Timer2_Regs() -{ - GEL_WatchAdd("*0x0C10,x","TIMER2TIM"); - GEL_WatchAdd("*0x0C11,x","TIMER2TIMH"); - GEL_WatchAdd("*0x0C12,x","TIMER2PRD"); - GEL_WatchAdd("*0x0C13,x","TIMER2PRDH"); - GEL_WatchAdd("*0x0C14,x","TIMER2TCR"); - GEL_WatchAdd("*0x0C16,x","TIMER2TPR"); - GEL_WatchAdd("*0x0C17,x","TIMER2TPRH"); -} - - -/********************************************************************/ -/* Device Emulation Registers */ -/********************************************************************/ -menuitem "Watch Device Emulation Registers"; - -hotmenu All_Emulation_Regs() -{ - GEL_WatchAdd("*(long *)0x0880,x","DEVICECNF"); - GEL_WatchAdd("*0x0882,x","CLASSID"); - GEL_WatchAdd("*0x0883,x","REVID"); - GEL_WatchAdd("*0x0884,x","PROTSTART"); - GEL_WatchAdd("*0x0885,x","PROTRANGE"); - GEL_WatchAdd("*0x380090,x","PARTID"); -} -/********************************************************************/ -/* DMA Registers */ -/********************************************************************/ -menuitem "Watch DMA Registers"; - -hotmenu All_DMA_Regs() -{ - GEL_WatchAdd("*0x1000,x","DMACTRL"); - GEL_WatchAdd("*0x1001,x","DEBUGCTRL"); - GEL_WatchAdd("*0x1002,x","REVISION"); - GEL_WatchAdd("*0x1004,x","PRIORITYCTRL1"); - GEL_WatchAdd("*0x1006,x","PRIORITYSTAT"); - - GEL_WatchAdd("*0x1020,x","DMA Ch1 MODE"); - GEL_WatchAdd("*0x1021,x","DMA Ch1 CONTROL"); - GEL_WatchAdd("*0x1022,x","DMA Ch1 BURST_SIZE"); - GEL_WatchAdd("*0x1023,x","DMA Ch1 BURST_COUNT"); - GEL_WatchAdd("*0x1024,x","DMA Ch1 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1025,x","DMA Ch1 DST_BURST_STEP"); - GEL_WatchAdd("*0x1026,x","DMA Ch1 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1027,x","DMA Ch1 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1028,x","DMA Ch1 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1029,x","DMA Ch1 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x102A,x","DMA Ch1 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x102B,x","DMA Ch1 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x102C,x","DMA Ch1 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x102D,x","DMA Ch1 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x102E,x","DMA Ch1 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x102F,x","DMA Ch1 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1030,x","DMA Ch1 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1032,x","DMA Ch1 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1034,x","DMA Ch1 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1036,x","DMA Ch1 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1038,x","DMA Ch1 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x103A,x","DMA Ch1 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x103C,x","DMA Ch1 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x103E,x","DMA Ch1 DST_ADDR_ACTIVE"); - - GEL_WatchAdd("*0x1040,x","DMA Ch2 MODE"); - GEL_WatchAdd("*0x1041,x","DMA Ch2 CONTROL"); - GEL_WatchAdd("*0x1042,x","DMA Ch2 BURST_SIZE"); - GEL_WatchAdd("*0x1043,x","DMA Ch2 BURST_COUNT"); - GEL_WatchAdd("*0x1044,x","DMA Ch2 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1045,x","DMA Ch2 DST_BURST_STEP"); - GEL_WatchAdd("*0x1046,x","DMA Ch2 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1047,x","DMA Ch2 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1048,x","DMA Ch2 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1049,x","DMA Ch2 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x104A,x","DMA Ch2 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x104B,x","DMA Ch2 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x104C,x","DMA Ch2 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x104D,x","DMA Ch2 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x104E,x","DMA Ch2 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x104F,x","DMA Ch2 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1050,x","DMA Ch2 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1052,x","DMA Ch2 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1054,x","DMA Ch2 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1056,x","DMA Ch2 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1058,x","DMA Ch2 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x105A,x","DMA Ch2 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x105C,x","DMA Ch2 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x105E,x","DMA Ch2 DST_ADDR_ACTIVE"); - - GEL_WatchAdd("*0x1060,x","DMA Ch3 MODE"); - GEL_WatchAdd("*0x1061,x","DMA Ch3 CONTROL"); - GEL_WatchAdd("*0x1062,x","DMA Ch3 BURST_SIZE"); - GEL_WatchAdd("*0x1063,x","DMA Ch3 BURST_COUNT"); - GEL_WatchAdd("*0x1064,x","DMA Ch3 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1065,x","DMA Ch3 DST_BURST_STEP"); - GEL_WatchAdd("*0x1066,x","DMA Ch3 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1067,x","DMA Ch3 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1068,x","DMA Ch3 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1069,x","DMA Ch3 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x106A,x","DMA Ch3 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x106B,x","DMA Ch3 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x106C,x","DMA Ch3 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x106D,x","DMA Ch3 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x106E,x","DMA Ch3 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x106F,x","DMA Ch3 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1070,x","DMA Ch3 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1072,x","DMA Ch3 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1074,x","DMA Ch3 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1076,x","DMA Ch3 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1078,x","DMA Ch3 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x107A,x","DMA Ch3 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x107C,x","DMA Ch3 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x107E,x","DMA Ch3 DST_ADDR_ACTIVE"); - - GEL_WatchAdd("*0x1080,x","DMA Ch4 MODE"); - GEL_WatchAdd("*0x1081,x","DMA Ch4 CONTROL"); - GEL_WatchAdd("*0x1082,x","DMA Ch4 BURST_SIZE"); - GEL_WatchAdd("*0x1083,x","DMA Ch4 BURST_COUNT"); - GEL_WatchAdd("*0x1084,x","DMA Ch4 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1085,x","DMA Ch4 DST_BURST_STEP"); - GEL_WatchAdd("*0x1086,x","DMA Ch4 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1087,x","DMA Ch4 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1088,x","DMA Ch4 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1089,x","DMA Ch4 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x108A,x","DMA Ch4 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x108B,x","DMA Ch4 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x108C,x","DMA Ch4 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x108D,x","DMA Ch4 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x108E,x","DMA Ch4 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x108F,x","DMA Ch4 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1090,x","DMA Ch4 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1092,x","DMA Ch4 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1094,x","DMA Ch4 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1096,x","DMA Ch4 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1098,x","DMA Ch4 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x109A,x","DMA Ch4 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x109C,x","DMA Ch4 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x109E,x","DMA Ch4 DST_ADDR_ACTIVE"); - - GEL_WatchAdd("*0x10A0,x","DMA Ch5 MODE"); - GEL_WatchAdd("*0x10A1,x","DMA Ch5 CONTROL"); - GEL_WatchAdd("*0x10A2,x","DMA Ch5 BURST_SIZE"); - GEL_WatchAdd("*0x10A3,x","DMA Ch5 BURST_COUNT"); - GEL_WatchAdd("*0x10A4,x","DMA Ch5 SRC_BURST_STEP"); - GEL_WatchAdd("*0x10A5,x","DMA Ch5 DST_BURST_STEP"); - GEL_WatchAdd("*0x10A6,x","DMA Ch5 TRANSFER_SIZE"); - GEL_WatchAdd("*0x10A7,x","DMA Ch5 TRANSFER_COUNT"); - GEL_WatchAdd("*0x10A8,x","DMA Ch5 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x10A9,x","DMA Ch5 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x10AA,x","DMA Ch5 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x10AB,x","DMA Ch5 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x10AC,x","DMA Ch5 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x10AD,x","DMA Ch5 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x10AE,x","DMA Ch5 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x10AF,x","DMA Ch5 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x10B0,x","DMA Ch5 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10B2,x","DMA Ch5 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10B4,x","DMA Ch5 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10B6,x","DMA Ch5 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10B8,x","DMA Ch5 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10BA,x","DMA Ch5 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10BC,x","DMA Ch5 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10BE,x","DMA Ch5 DST_ADDR_ACTIVE"); - - GEL_WatchAdd("*0x10C0,x","DMA Ch6 MODE"); - GEL_WatchAdd("*0x10C1,x","DMA Ch6 CONTROL"); - GEL_WatchAdd("*0x10C2,x","DMA Ch6 BURST_SIZE"); - GEL_WatchAdd("*0x10C3,x","DMA Ch6 BURST_COUNT"); - GEL_WatchAdd("*0x10C4,x","DMA Ch6 SRC_BURST_STEP"); - GEL_WatchAdd("*0x10C5,x","DMA Ch6 DST_BURST_STEP"); - GEL_WatchAdd("*0x10C6,x","DMA Ch6 TRANSFER_SIZE"); - GEL_WatchAdd("*0x10C7,x","DMA Ch6 TRANSFER_COUNT"); - GEL_WatchAdd("*0x10C8,x","DMA Ch6 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x10C9,x","DMA Ch6 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x10CA,x","DMA Ch6 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x10CB,x","DMA Ch6 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x10CC,x","DMA Ch6 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x10CD,x","DMA Ch6 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x10CE,x","DMA Ch6 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x10CF,x","DMA Ch6 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x10D0,x","DMA Ch6 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10D2,x","DMA Ch6 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10D4,x","DMA Ch6 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10D6,x","DMA Ch6 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10D8,x","DMA Ch6 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10DA,x","DMA Ch6 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10DC,x","DMA Ch6 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10DE,x","DMA Ch6 DST_ADDR_ACTIVE"); - - -} -hotmenu DMA_Channel_1_regs() -{ - GEL_WatchAdd("*0x1020,x","DMA Ch1 MODE"); - GEL_WatchAdd("*0x1021,x","DMA Ch1 CONTROL"); - GEL_WatchAdd("*0x1022,x","DMA Ch1 BURST_SIZE"); - GEL_WatchAdd("*0x1023,x","DMA Ch1 BURST_COUNT"); - GEL_WatchAdd("*0x1024,x","DMA Ch1 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1025,x","DMA Ch1 DST_BURST_STEP"); - GEL_WatchAdd("*0x1026,x","DMA Ch1 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1027,x","DMA Ch1 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1028,x","DMA Ch1 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1029,x","DMA Ch1 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x102A,x","DMA Ch1 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x102B,x","DMA Ch1 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x102C,x","DMA Ch1 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x102D,x","DMA Ch1 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x102E,x","DMA Ch1 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x102F,x","DMA Ch1 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1030,x","DMA Ch1 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1032,x","DMA Ch1 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1034,x","DMA Ch1 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1036,x","DMA Ch1 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1038,x","DMA Ch1 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x103A,x","DMA Ch1 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x103C,x","DMA Ch1 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x103E,x","DMA Ch1 DST_ADDR_ACTIVE"); -} - -hotmenu DMA_Channel_2_regs() -{ - GEL_WatchAdd("*0x1040,x","DMA Ch2 MODE"); - GEL_WatchAdd("*0x1041,x","DMA Ch2 CONTROL"); - GEL_WatchAdd("*0x1042,x","DMA Ch2 BURST_SIZE"); - GEL_WatchAdd("*0x1043,x","DMA Ch2 BURST_COUNT"); - GEL_WatchAdd("*0x1044,x","DMA Ch2 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1045,x","DMA Ch2 DST_BURST_STEP"); - GEL_WatchAdd("*0x1046,x","DMA Ch2 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1047,x","DMA Ch2 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1048,x","DMA Ch2 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1049,x","DMA Ch2 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x104A,x","DMA Ch2 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x104B,x","DMA Ch2 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x104C,x","DMA Ch2 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x104D,x","DMA Ch2 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x104E,x","DMA Ch2 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x104F,x","DMA Ch2 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1050,x","DMA Ch2 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1052,x","DMA Ch2 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1054,x","DMA Ch2 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1056,x","DMA Ch2 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1058,x","DMA Ch2 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x105A,x","DMA Ch2 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x105C,x","DMA Ch2 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x105E,x","DMA Ch2 DST_ADDR_ACTIVE"); -} -hotmenu DMA_Channel_3_regs() -{ - GEL_WatchAdd("*0x1060,x","DMA Ch3 MODE"); - GEL_WatchAdd("*0x1061,x","DMA Ch3 CONTROL"); - GEL_WatchAdd("*0x1062,x","DMA Ch3 BURST_SIZE"); - GEL_WatchAdd("*0x1063,x","DMA Ch3 BURST_COUNT"); - GEL_WatchAdd("*0x1064,x","DMA Ch3 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1065,x","DMA Ch3 DST_BURST_STEP"); - GEL_WatchAdd("*0x1066,x","DMA Ch3 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1067,x","DMA Ch3 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1068,x","DMA Ch3 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1069,x","DMA Ch3 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x106A,x","DMA Ch3 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x106B,x","DMA Ch3 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x106C,x","DMA Ch3 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x106D,x","DMA Ch3 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x106E,x","DMA Ch3 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x106F,x","DMA Ch3 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1070,x","DMA Ch3 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1072,x","DMA Ch3 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1074,x","DMA Ch3 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1076,x","DMA Ch3 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1078,x","DMA Ch3 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x107A,x","DMA Ch3 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x107C,x","DMA Ch3 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x107E,x","DMA Ch3 DST_ADDR_ACTIVE"); -} -hotmenu DMA_Channel_4_regs() -{ - GEL_WatchAdd("*0x1080,x","DMA Ch4 MODE"); - GEL_WatchAdd("*0x1081,x","DMA Ch4 CONTROL"); - GEL_WatchAdd("*0x1082,x","DMA Ch4 BURST_SIZE"); - GEL_WatchAdd("*0x1083,x","DMA Ch4 BURST_COUNT"); - GEL_WatchAdd("*0x1084,x","DMA Ch4 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1085,x","DMA Ch4 DST_BURST_STEP"); - GEL_WatchAdd("*0x1086,x","DMA Ch4 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1087,x","DMA Ch4 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1088,x","DMA Ch4 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1089,x","DMA Ch4 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x108A,x","DMA Ch4 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x108B,x","DMA Ch4 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x108C,x","DMA Ch4 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x108D,x","DMA Ch4 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x108E,x","DMA Ch4 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x108F,x","DMA Ch4 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1090,x","DMA Ch4 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1092,x","DMA Ch4 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1094,x","DMA Ch4 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1096,x","DMA Ch4 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1098,x","DMA Ch4 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x109A,x","DMA Ch4 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x109C,x","DMA Ch4 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x109E,x","DMA Ch4 DST_ADDR_ACTIVE"); -} -hotmenu DMA_Channel_5_regs() -{ - GEL_WatchAdd("*0x10A0,x","DMA Ch5 MODE"); - GEL_WatchAdd("*0x10A1,x","DMA Ch5 CONTROL"); - GEL_WatchAdd("*0x10A2,x","DMA Ch5 BURST_SIZE"); - GEL_WatchAdd("*0x10A3,x","DMA Ch5 BURST_COUNT"); - GEL_WatchAdd("*0x10A4,x","DMA Ch5 SRC_BURST_STEP"); - GEL_WatchAdd("*0x10A5,x","DMA Ch5 DST_BURST_STEP"); - GEL_WatchAdd("*0x10A6,x","DMA Ch5 TRANSFER_SIZE"); - GEL_WatchAdd("*0x10A7,x","DMA Ch5 TRANSFER_COUNT"); - GEL_WatchAdd("*0x10A8,x","DMA Ch5 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x10A9,x","DMA Ch5 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x10AA,x","DMA Ch5 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x10AB,x","DMA Ch5 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x10AC,x","DMA Ch5 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x10AD,x","DMA Ch5 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x10AE,x","DMA Ch5 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x10AF,x","DMA Ch5 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x10B0,x","DMA Ch5 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10B2,x","DMA Ch5 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10B4,x","DMA Ch5 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10B6,x","DMA Ch5 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10B8,x","DMA Ch5 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10BA,x","DMA Ch5 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10BC,x","DMA Ch5 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10BE,x","DMA Ch5 DST_ADDR_ACTIVE"); -} -hotmenu DMA_Channel_6_regs() -{ - GEL_WatchAdd("*0x10C0,x","DMA Ch6 MODE"); - GEL_WatchAdd("*0x10C1,x","DMA Ch6 CONTROL"); - GEL_WatchAdd("*0x10C2,x","DMA Ch6 BURST_SIZE"); - GEL_WatchAdd("*0x10C3,x","DMA Ch6 BURST_COUNT"); - GEL_WatchAdd("*0x10C4,x","DMA Ch6 SRC_BURST_STEP"); - GEL_WatchAdd("*0x10C5,x","DMA Ch6 DST_BURST_STEP"); - GEL_WatchAdd("*0x10C6,x","DMA Ch6 TRANSFER_SIZE"); - GEL_WatchAdd("*0x10C7,x","DMA Ch6 TRANSFER_COUNT"); - GEL_WatchAdd("*0x10C8,x","DMA Ch6 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x10C9,x","DMA Ch6 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x10CA,x","DMA Ch6 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x10CB,x","DMA Ch6 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x10CC,x","DMA Ch6 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x10CD,x","DMA Ch6 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x10CE,x","DMA Ch6 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x10CF,x","DMA Ch6 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x10D0,x","DMA Ch6 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10D2,x","DMA Ch6 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10D4,x","DMA Ch6 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10D6,x","DMA Ch6 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10D8,x","DMA Ch6 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10DA,x","DMA Ch6 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10DC,x","DMA Ch6 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10DE,x","DMA Ch6 DST_ADDR_ACTIVE"); -} - -/********************************************************************/ -/* eCAN Registers */ -/********************************************************************/ -menuitem "Watch eCAN Registers"; - -hotmenu eCAN_A_Global_Regs() -{ - GEL_WatchAdd("*(long *)0x6000,x","eCANA CANME"); - GEL_WatchAdd("*(long *)0x6002,x","eCANA CANMD"); - GEL_WatchAdd("*(long *)0x6004,x","eCANA CANTRS"); - GEL_WatchAdd("*(long *)0x6006,x","eCANA CANTRR"); - GEL_WatchAdd("*(long *)0x6008,x","eCANA CANTA"); - GEL_WatchAdd("*(long *)0x600A,x","eCANA CANAA"); - GEL_WatchAdd("*(long *)0x600C,x","eCANA CANRMP"); - GEL_WatchAdd("*(long *)0x600E,x","eCANA CANRML"); - GEL_WatchAdd("*(long *)0x6010,x","eCANA CANRFP"); - GEL_WatchAdd("*(long *)0x6014,x","eCANA CANMC"); - GEL_WatchAdd("*(long *)0x6016,x","eCANA CANBTC"); - GEL_WatchAdd("*(long *)0x6018,x","eCANA CANES"); - GEL_WatchAdd("*(long *)0x601A,x","eCANA CANTEC"); - GEL_WatchAdd("*(long *)0x601C,x","eCANA CANREC"); - GEL_WatchAdd("*(long *)0x601E,x","eCANA CANGIF0"); - GEL_WatchAdd("*(long *)0x6020,x","eCANA CANGIM"); - GEL_WatchAdd("*(long *)0x6022,x","eCANA CANGIF1"); - GEL_WatchAdd("*(long *)0x6024,x","eCANA CANMIM"); - GEL_WatchAdd("*(long *)0x6026,x","eCANA CANMIL"); - GEL_WatchAdd("*(long *)0x6028,x","eCANA CANOPC"); - GEL_WatchAdd("*(long *)0x602A,x","eCANA CANTIOC"); - GEL_WatchAdd("*(long *)0x602C,x","eCANA CANRIOC"); - GEL_WatchAdd("*(long *)0x602E,x","eCANA CANLNT"); - GEL_WatchAdd("*(long *)0x6030,x","eCANA CANTOC"); - GEL_WatchAdd("*(long *)0x6032,x","eCANA CANTOS"); -} -hotmenu eCAN_A_Mailbox_0_to_1_Regs() -{ - GEL_WatchAdd("*(long *)0x6040,x","eCANA LAM0"); - GEL_WatchAdd("*(long *)0x6080,x","eCANA MOTS0"); - GEL_WatchAdd("*(long *)0x60C0,x","eCANA MOTO0"); - GEL_WatchAdd("*(long *)0x6100,x","eCANA MID0"); - GEL_WatchAdd("*(long *)0x6102,x","eCANA MCF0"); - GEL_WatchAdd("*(long *)0x6104,x","eCANA MDL0"); - GEL_WatchAdd("*(long *)0x6106,x","eCANA MDH0"); - - GEL_WatchAdd("*(long *)0x6042,x","eCANA LAM1"); - GEL_WatchAdd("*(long *)0x6082,x","eCANA MOTS1"); - GEL_WatchAdd("*(long *)0x60C2,x","eCANA MOTO1"); - GEL_WatchAdd("*(long *)0x6108,x","eCANA MID1"); - GEL_WatchAdd("*(long *)0x610A,x","eCANA MCF1"); - GEL_WatchAdd("*(long *)0x610C,x","eCANA MDL1"); - GEL_WatchAdd("*(long *)0x610E,x","eCANA MDH1"); -} -hotmenu eCAN_A_Mailbox_2_to_3_Regs() -{ - GEL_WatchAdd("*(long *)0x6044,x","eCANA LAM2"); - GEL_WatchAdd("*(long *)0x6084,x","eCANA MOTS2"); - GEL_WatchAdd("*(long *)0x60C4,x","eCANA MOTO2"); - GEL_WatchAdd("*(long *)0x6110,x","eCANA MID2"); - GEL_WatchAdd("*(long *)0x6112,x","eCANA MCF2"); - GEL_WatchAdd("*(long *)0x6114,x","eCANA MDL2"); - GEL_WatchAdd("*(long *)0x6116,x","eCANA MDH2"); - - GEL_WatchAdd("*(long *)0x6046,x","eCANA LAM3"); - GEL_WatchAdd("*(long *)0x6086,x","eCANA MOTS3"); - GEL_WatchAdd("*(long *)0x60C6,x","eCANA MOTO3"); - GEL_WatchAdd("*(long *)0x6118,x","eCANA MID3"); - GEL_WatchAdd("*(long *)0x611A,x","eCANA MCF3"); - GEL_WatchAdd("*(long *)0x611C,x","eCANA MDL3"); - GEL_WatchAdd("*(long *)0x611E,x","eCANA MDH3"); -} -hotmenu eCAN_A_Mailbox_4_to_5_Regs() -{ - GEL_WatchAdd("*(long *)0x6048,x","eCANA LAM4"); - GEL_WatchAdd("*(long *)0x6088,x","eCANA MOTS4"); - GEL_WatchAdd("*(long *)0x60C8,x","eCANA MOTO4"); - GEL_WatchAdd("*(long *)0x6120,x","eCANA MID4"); - GEL_WatchAdd("*(long *)0x6122,x","eCANA MCF4"); - GEL_WatchAdd("*(long *)0x6124,x","eCANA MDL4"); - GEL_WatchAdd("*(long *)0x6126,x","eCANA MDH4"); - - GEL_WatchAdd("*(long *)0x604A,x","eCANA LAM5"); - GEL_WatchAdd("*(long *)0x608A,x","eCANA MOTS5"); - GEL_WatchAdd("*(long *)0x60CA,x","eCANA MOTO5"); - GEL_WatchAdd("*(long *)0x6128,x","eCANA MID5"); - GEL_WatchAdd("*(long *)0x612A,x","eCANA MCF5"); - GEL_WatchAdd("*(long *)0x612C,x","eCANA MDL5"); - GEL_WatchAdd("*(long *)0x612E,x","eCANA MDH5"); -} -hotmenu eCAN_A_Mailbox_6_to_7_Regs() -{ - GEL_WatchAdd("*(long *)0x604C,x","eCANA LAM6"); - GEL_WatchAdd("*(long *)0x608C,x","eCANA MOTS6"); - GEL_WatchAdd("*(long *)0x60CC,x","eCANA MOTO6"); - GEL_WatchAdd("*(long *)0x6130,x","eCANA MID6"); - GEL_WatchAdd("*(long *)0x6132,x","eCANA MCF6"); - GEL_WatchAdd("*(long *)0x6134,x","eCANA MDL6"); - GEL_WatchAdd("*(long *)0x6136,x","eCANA MDH6"); - - GEL_WatchAdd("*(long *)0x604E,x","eCANA LAM7"); - GEL_WatchAdd("*(long *)0x608E,x","eCANA MOTS7"); - GEL_WatchAdd("*(long *)0x60CE,x","eCANA MOTO7"); - GEL_WatchAdd("*(long *)0x6138,x","eCANA MID7"); - GEL_WatchAdd("*(long *)0x613A,x","eCANA MCF7"); - GEL_WatchAdd("*(long *)0x613C,x","eCANA MDL7"); - GEL_WatchAdd("*(long *)0x613E,x","eCANA MDH7"); -} -hotmenu eCAN_A_Mailbox_8_to_9_Regs() -{ - GEL_WatchAdd("*(long *)0x6050,x","eCANA LAM8"); - GEL_WatchAdd("*(long *)0x6090,x","eCANA MOTS8"); - GEL_WatchAdd("*(long *)0x60D0,x","eCANA MOTO8"); - GEL_WatchAdd("*(long *)0x6140,x","eCANA MID8"); - GEL_WatchAdd("*(long *)0x6142,x","eCANA MCF8"); - GEL_WatchAdd("*(long *)0x6144,x","eCANA MDL8"); - GEL_WatchAdd("*(long *)0x6146,x","eCANA MDH8"); - - GEL_WatchAdd("*(long *)0x6052,x","eCANA LAM9"); - GEL_WatchAdd("*(long *)0x6092,x","eCANA MOTS9"); - GEL_WatchAdd("*(long *)0x60D2,x","eCANA MOTO9"); - GEL_WatchAdd("*(long *)0x6148,x","eCANA MID9"); - GEL_WatchAdd("*(long *)0x614A,x","eCANA MCF9"); - GEL_WatchAdd("*(long *)0x614C,x","eCANA MDL9"); - GEL_WatchAdd("*(long *)0x614E,x","eCANA MDH9"); -} -hotmenu eCAN_A_Mailbox_10_to_11_Regs() -{ - GEL_WatchAdd("*(long *)0x6054,x","eCANA LAM10"); - GEL_WatchAdd("*(long *)0x6094,x","eCANA MOTS10"); - GEL_WatchAdd("*(long *)0x60D4,x","eCANA MOTO10"); - GEL_WatchAdd("*(long *)0x6150,x","eCANA MID10"); - GEL_WatchAdd("*(long *)0x6152,x","eCANA MCF10"); - GEL_WatchAdd("*(long *)0x6154,x","eCANA MDL10"); - GEL_WatchAdd("*(long *)0x6156,x","eCANA MDH10"); - - GEL_WatchAdd("*(long *)0x6056,x","eCANA LAM11"); - GEL_WatchAdd("*(long *)0x6096,x","eCANA MOTS11"); - GEL_WatchAdd("*(long *)0x60D6,x","eCANA MOTO11"); - GEL_WatchAdd("*(long *)0x6158,x","eCANA MID11"); - GEL_WatchAdd("*(long *)0x615A,x","eCANA MCF11"); - GEL_WatchAdd("*(long *)0x615C,x","eCANA MDL11"); - GEL_WatchAdd("*(long *)0x615E,x","eCANA MDH11"); -} -hotmenu eCAN_A_Mailbox_12_to_13_Regs() -{ - GEL_WatchAdd("*(long *)0x6058,x","eCANA LAM12"); - GEL_WatchAdd("*(long *)0x6098,x","eCANA MOTS12"); - GEL_WatchAdd("*(long *)0x60D8,x","eCANA MOTO12"); - GEL_WatchAdd("*(long *)0x6160,x","eCANA MID12"); - GEL_WatchAdd("*(long *)0x6162,x","eCANA MCF12"); - GEL_WatchAdd("*(long *)0x6164,x","eCANA MDL12"); - GEL_WatchAdd("*(long *)0x6166,x","eCANA MDH12"); - - GEL_WatchAdd("*(long *)0x605A,x","eCANA LAM13"); - GEL_WatchAdd("*(long *)0x609A,x","eCANA MOTS13"); - GEL_WatchAdd("*(long *)0x60DA,x","eCANA MOTO13"); - GEL_WatchAdd("*(long *)0x6168,x","eCANA MID13"); - GEL_WatchAdd("*(long *)0x616A,x","eCANA MCF13"); - GEL_WatchAdd("*(long *)0x616C,x","eCANA MDL13"); - GEL_WatchAdd("*(long *)0x616E,x","eCANA MDH13"); -} -hotmenu eCAN_A_Mailbox_14_to_15_Regs() -{ - GEL_WatchAdd("*(long *)0x605C,x","eCANA LAM14"); - GEL_WatchAdd("*(long *)0x609C,x","eCANA MOTS14"); - GEL_WatchAdd("*(long *)0x60DC,x","eCANA MOTO14"); - GEL_WatchAdd("*(long *)0x6170,x","eCANA MID14"); - GEL_WatchAdd("*(long *)0x6172,x","eCANA MCF14"); - GEL_WatchAdd("*(long *)0x6174,x","eCANA MDL14"); - GEL_WatchAdd("*(long *)0x6176,x","eCANA MDH14"); - - GEL_WatchAdd("*(long *)0x605E,x","eCANA LAM15"); - GEL_WatchAdd("*(long *)0x609E,x","eCANA MOTS15"); - GEL_WatchAdd("*(long *)0x60DE,x","eCANA MOTO15"); - GEL_WatchAdd("*(long *)0x6178,x","eCANA MID15"); - GEL_WatchAdd("*(long *)0x617A,x","eCANA MCF15"); - GEL_WatchAdd("*(long *)0x617C,x","eCANA MDL15"); - GEL_WatchAdd("*(long *)0x617E,x","eCANA MDH15"); -} -hotmenu eCAN_A_Mailbox_16_to_17_Regs() -{ - GEL_WatchAdd("*(long *)0x6060,x","eCANA LAM16"); - GEL_WatchAdd("*(long *)0x60A0,x","eCANA MOTS16"); - GEL_WatchAdd("*(long *)0x60E0,x","eCANA MOTO16"); - GEL_WatchAdd("*(long *)0x6180,x","eCANA MID16"); - GEL_WatchAdd("*(long *)0x6182,x","eCANA MCF16"); - GEL_WatchAdd("*(long *)0x6184,x","eCANA MDL16"); - GEL_WatchAdd("*(long *)0x6186,x","eCANA MDH16"); - - GEL_WatchAdd("*(long *)0x6062,x","eCANA LAM17"); - GEL_WatchAdd("*(long *)0x60A2,x","eCANA MOTS17"); - GEL_WatchAdd("*(long *)0x60E2,x","eCANA MOTO17"); - GEL_WatchAdd("*(long *)0x6188,x","eCANA MID17"); - GEL_WatchAdd("*(long *)0x618A,x","eCANA MCF17"); - GEL_WatchAdd("*(long *)0x618C,x","eCANA MDL17"); - GEL_WatchAdd("*(long *)0x618E,x","eCANA MDH17"); -} -hotmenu eCAN_A_Mailbox_18_to_19_Regs() -{ - GEL_WatchAdd("*(long *)0x6064,x","eCANA LAM18"); - GEL_WatchAdd("*(long *)0x60A4,x","eCANA MOTS18"); - GEL_WatchAdd("*(long *)0x60E4,x","eCANA MOTO18"); - GEL_WatchAdd("*(long *)0x6190,x","eCANA MID18"); - GEL_WatchAdd("*(long *)0x6192,x","eCANA MCF18"); - GEL_WatchAdd("*(long *)0x6194,x","eCANA MDL18"); - GEL_WatchAdd("*(long *)0x6196,x","eCANA MDH18"); - - GEL_WatchAdd("*(long *)0x6066,x","eCANA LAM19"); - GEL_WatchAdd("*(long *)0x60A6,x","eCANA MOTS19"); - GEL_WatchAdd("*(long *)0x60E6,x","eCANA MOTO19"); - GEL_WatchAdd("*(long *)0x6198,x","eCANA MID19"); - GEL_WatchAdd("*(long *)0x619A,x","eCANA MCF19"); - GEL_WatchAdd("*(long *)0x619C,x","eCANA MDL19"); - GEL_WatchAdd("*(long *)0x619E,x","eCANA MDH19"); -} -hotmenu eCAN_A_Mailbox_20_to_21_Regs() -{ - GEL_WatchAdd("*(long *)0x6068,x","eCANA LAM20"); - GEL_WatchAdd("*(long *)0x60A8,x","eCANA MOTS20"); - GEL_WatchAdd("*(long *)0x60E8,x","eCANA MOTO20"); - GEL_WatchAdd("*(long *)0x61A0,x","eCANA MID20"); - GEL_WatchAdd("*(long *)0x61A2,x","eCANA MCF20"); - GEL_WatchAdd("*(long *)0x61A4,x","eCANA MDL20"); - GEL_WatchAdd("*(long *)0x61A6,x","eCANA MDH20"); - - GEL_WatchAdd("*(long *)0x606A,x","eCANA LAM21"); - GEL_WatchAdd("*(long *)0x60AA,x","eCANA MOTS21"); - GEL_WatchAdd("*(long *)0x60EA,x","eCANA MOTO21"); - GEL_WatchAdd("*(long *)0x61A8,x","eCANA MID21"); - GEL_WatchAdd("*(long *)0x61AA,x","eCANA MCF21"); - GEL_WatchAdd("*(long *)0x61AC,x","eCANA MDL21"); - GEL_WatchAdd("*(long *)0x61AE,x","eCANA MDH21"); -} -hotmenu eCAN_A_Mailbox_22_to_23_Regs() -{ - GEL_WatchAdd("*(long *)0x606C,x","eCANA LAM22"); - GEL_WatchAdd("*(long *)0x60AC,x","eCANA MOTS22"); - GEL_WatchAdd("*(long *)0x60EC,x","eCANA MOTO22"); - GEL_WatchAdd("*(long *)0x61B0,x","eCANA MID22"); - GEL_WatchAdd("*(long *)0x61B2,x","eCANA MCF22"); - GEL_WatchAdd("*(long *)0x61B4,x","eCANA MDL22"); - GEL_WatchAdd("*(long *)0x61B6,x","eCANA MDH22"); - - GEL_WatchAdd("*(long *)0x606E,x","eCANA LAM23"); - GEL_WatchAdd("*(long *)0x60AE,x","eCANA MOTS23"); - GEL_WatchAdd("*(long *)0x60EE,x","eCANA MOTO23"); - GEL_WatchAdd("*(long *)0x61B8,x","eCANA MID23"); - GEL_WatchAdd("*(long *)0x61BA,x","eCANA MCF23"); - GEL_WatchAdd("*(long *)0x61BC,x","eCANA MDL23"); - GEL_WatchAdd("*(long *)0x61BE,x","eCANA MDH23"); -} -hotmenu eCAN_A_Mailbox_24_to_25_Regs() -{ - GEL_WatchAdd("*(long *)0x6070,x","eCANA LAM24"); - GEL_WatchAdd("*(long *)0x60B0,x","eCANA MOTS24"); - GEL_WatchAdd("*(long *)0x60F0,x","eCANA MOTO24"); - GEL_WatchAdd("*(long *)0x61C0,x","eCANA MID24"); - GEL_WatchAdd("*(long *)0x61C2,x","eCANA MCF24"); - GEL_WatchAdd("*(long *)0x61C4,x","eCANA MDL24"); - GEL_WatchAdd("*(long *)0x61C6,x","eCANA MDH24"); - - GEL_WatchAdd("*(long *)0x6072,x","eCANA LAM25"); - GEL_WatchAdd("*(long *)0x60B2,x","eCANA MOTS25"); - GEL_WatchAdd("*(long *)0x60F2,x","eCANA MOTO25"); - GEL_WatchAdd("*(long *)0x61C8,x","eCANA MID25"); - GEL_WatchAdd("*(long *)0x61CA,x","eCANA MCF25"); - GEL_WatchAdd("*(long *)0x61CC,x","eCANA MDL25"); - GEL_WatchAdd("*(long *)0x61CE,x","eCANA MDH25"); -} -hotmenu eCAN_A_Mailbox_26_to_27_Regs() -{ - GEL_WatchAdd("*(long *)0x6074,x","eCANA LAM26"); - GEL_WatchAdd("*(long *)0x60B4,x","eCANA MOTS26"); - GEL_WatchAdd("*(long *)0x60F4,x","eCANA MOTO26"); - GEL_WatchAdd("*(long *)0x61D0,x","eCANA MID26"); - GEL_WatchAdd("*(long *)0x61D2,x","eCANA MCF26"); - GEL_WatchAdd("*(long *)0x61D4,x","eCANA MDL26"); - GEL_WatchAdd("*(long *)0x61D6,x","eCANA MDH26"); - - GEL_WatchAdd("*(long *)0x6076,x","eCANA LAM27"); - GEL_WatchAdd("*(long *)0x60B6,x","eCANA MOTS27"); - GEL_WatchAdd("*(long *)0x60F6,x","eCANA MOTO27"); - GEL_WatchAdd("*(long *)0x61D8,x","eCANA MID27"); - GEL_WatchAdd("*(long *)0x61DA,x","eCANA MCF27"); - GEL_WatchAdd("*(long *)0x61DC,x","eCANA MDL27"); - GEL_WatchAdd("*(long *)0x61DE,x","eCANA MDH27"); -} -hotmenu eCAN_A_Mailbox_28_to_29_Regs() -{ - GEL_WatchAdd("*(long *)0x6078,x","eCANA LAM28"); - GEL_WatchAdd("*(long *)0x60B8,x","eCANA MOTS28"); - GEL_WatchAdd("*(long *)0x60F8,x","eCANA MOTO28"); - GEL_WatchAdd("*(long *)0x61E0,x","eCANA MID28"); - GEL_WatchAdd("*(long *)0x61E2,x","eCANA MCF28"); - GEL_WatchAdd("*(long *)0x61E4,x","eCANA MDL28"); - GEL_WatchAdd("*(long *)0x61E6,x","eCANA MDH28"); - - GEL_WatchAdd("*(long *)0x607A,x","eCANA LAM29"); - GEL_WatchAdd("*(long *)0x60BA,x","eCANA MOTS29"); - GEL_WatchAdd("*(long *)0x60FA,x","eCANA MOTO29"); - GEL_WatchAdd("*(long *)0x61E8,x","eCANA MID29"); - GEL_WatchAdd("*(long *)0x61EA,x","eCANA MCF29"); - GEL_WatchAdd("*(long *)0x61EC,x","eCANA MDL29"); - GEL_WatchAdd("*(long *)0x61EE,x","eCANA MDH29"); -} -hotmenu eCAN_A_Mailbox_30_to_31_Regs() -{ - GEL_WatchAdd("*(long *)0x607C,x","eCANA LAM30"); - GEL_WatchAdd("*(long *)0x60BC,x","eCANA MOTS30"); - GEL_WatchAdd("*(long *)0x60FC,x","eCANA MOTO30"); - GEL_WatchAdd("*(long *)0x61F0,x","eCANA MID30"); - GEL_WatchAdd("*(long *)0x61F2,x","eCANA MCF30"); - GEL_WatchAdd("*(long *)0x61F4,x","eCANA MDL30"); - GEL_WatchAdd("*(long *)0x61F6,x","eCANA MDH30"); - - GEL_WatchAdd("*(long *)0x607E,x","eCANA LAM31"); - GEL_WatchAdd("*(long *)0x60BE,x","eCANA MOTS31"); - GEL_WatchAdd("*(long *)0x60FE,x","eCANA MOTO31"); - GEL_WatchAdd("*(long *)0x61F8,x","eCANA MID31"); - GEL_WatchAdd("*(long *)0x61FA,x","eCANA MCF31"); - GEL_WatchAdd("*(long *)0x61FC,x","eCANA MDL31"); - GEL_WatchAdd("*(long *)0x61FE,x","eCANA MDH31"); -} -hotmenu eCAN_B_Global_Regs() -{ - GEL_WatchAdd("*(long *)0x6200,x","eCANB CANME"); - GEL_WatchAdd("*(long *)0x6202,x","eCANB CANMD"); - GEL_WatchAdd("*(long *)0x6204,x","eCANB CANTRS"); - GEL_WatchAdd("*(long *)0x6206,x","eCANB CANTRR"); - GEL_WatchAdd("*(long *)0x6208,x","eCANB CANTA"); - GEL_WatchAdd("*(long *)0x620A,x","eCANB CANAA"); - GEL_WatchAdd("*(long *)0x620C,x","eCANB CANRMP"); - GEL_WatchAdd("*(long *)0x620E,x","eCANB CANRML"); - GEL_WatchAdd("*(long *)0x6210,x","eCANB CANRFP"); - GEL_WatchAdd("*(long *)0x6214,x","eCANB CANMC"); - GEL_WatchAdd("*(long *)0x6216,x","eCANB CANBTC"); - GEL_WatchAdd("*(long *)0x6218,x","eCANB CANES"); - GEL_WatchAdd("*(long *)0x621A,x","eCANB CANTEC"); - GEL_WatchAdd("*(long *)0x621C,x","eCANB CANREC"); - GEL_WatchAdd("*(long *)0x621E,x","eCANB CANGIF0"); - GEL_WatchAdd("*(long *)0x6220,x","eCANB CANGIM"); - GEL_WatchAdd("*(long *)0x6222,x","eCANB CANGIF1"); - GEL_WatchAdd("*(long *)0x6224,x","eCANB CANMIM"); - GEL_WatchAdd("*(long *)0x6226,x","eCANB CANMIL"); - GEL_WatchAdd("*(long *)0x6228,x","eCANB CANOPC"); - GEL_WatchAdd("*(long *)0x622A,x","eCANB CANTIOC"); - GEL_WatchAdd("*(long *)0x622C,x","eCANB CANRIOC"); - GEL_WatchAdd("*(long *)0x622E,x","eCANB CANLNT"); - GEL_WatchAdd("*(long *)0x6230,x","eCANB CANTOC"); - GEL_WatchAdd("*(long *)0x6232,x","eCANB CANTOS"); -} -hotmenu eCAN_B_Mailbox_0_to_1_Regs() -{ - GEL_WatchAdd("*(long *)0x6240,x","eCANB LAM0"); - GEL_WatchAdd("*(long *)0x6280,x","eCANB MOTS0"); - GEL_WatchAdd("*(long *)0x62C0,x","eCANB MOTO0"); - GEL_WatchAdd("*(long *)0x6300,x","eCANB MID0"); - GEL_WatchAdd("*(long *)0x6302,x","eCANB MCF0"); - GEL_WatchAdd("*(long *)0x6304,x","eCANB MDL0"); - GEL_WatchAdd("*(long *)0x6306,x","eCANB MDH0"); - - GEL_WatchAdd("*(long *)0x6242,x","eCANB LAM1"); - GEL_WatchAdd("*(long *)0x6282,x","eCANB MOTS1"); - GEL_WatchAdd("*(long *)0x62C2,x","eCANB MOTO1"); - GEL_WatchAdd("*(long *)0x6308,x","eCANB MID1"); - GEL_WatchAdd("*(long *)0x630A,x","eCANB MCF1"); - GEL_WatchAdd("*(long *)0x630C,x","eCANB MDL1"); - GEL_WatchAdd("*(long *)0x630E,x","eCANB MDH1"); -} -hotmenu eCAN_B_Mailbox_2_to_3_Regs() -{ - GEL_WatchAdd("*(long *)0x6244,x","eCANB LAM2"); - GEL_WatchAdd("*(long *)0x6284,x","eCANB MOTS2"); - GEL_WatchAdd("*(long *)0x62C4,x","eCANB MOTO2"); - GEL_WatchAdd("*(long *)0x6310,x","eCANB MID2"); - GEL_WatchAdd("*(long *)0x6312,x","eCANB MCF2"); - GEL_WatchAdd("*(long *)0x6314,x","eCANB MDL2"); - GEL_WatchAdd("*(long *)0x6316,x","eCANB MDH2"); - - GEL_WatchAdd("*(long *)0x6246,x","eCANB LAM3"); - GEL_WatchAdd("*(long *)0x6286,x","eCANB MOTS3"); - GEL_WatchAdd("*(long *)0x62C6,x","eCANB MOTO3"); - GEL_WatchAdd("*(long *)0x6318,x","eCANB MID3"); - GEL_WatchAdd("*(long *)0x631A,x","eCANB MCF3"); - GEL_WatchAdd("*(long *)0x631C,x","eCANB MDL3"); - GEL_WatchAdd("*(long *)0x631E,x","eCANB MDH3"); -} -hotmenu eCAN_B_Mailbox_4_to_5_Regs() -{ - GEL_WatchAdd("*(long *)0x6248,x","eCANB LAM4"); - GEL_WatchAdd("*(long *)0x6288,x","eCANB MOTS4"); - GEL_WatchAdd("*(long *)0x62C8,x","eCANB MOTO4"); - GEL_WatchAdd("*(long *)0x6320,x","eCANB MID4"); - GEL_WatchAdd("*(long *)0x6322,x","eCANB MCF4"); - GEL_WatchAdd("*(long *)0x6324,x","eCANB MDL4"); - GEL_WatchAdd("*(long *)0x6326,x","eCANB MDH4"); - - GEL_WatchAdd("*(long *)0x624A,x","eCANB LAM5"); - GEL_WatchAdd("*(long *)0x628A,x","eCANB MOTS5"); - GEL_WatchAdd("*(long *)0x62CA,x","eCANB MOTO5"); - GEL_WatchAdd("*(long *)0x6328,x","eCANB MID5"); - GEL_WatchAdd("*(long *)0x632A,x","eCANB MCF5"); - GEL_WatchAdd("*(long *)0x632C,x","eCANB MDL5"); - GEL_WatchAdd("*(long *)0x632E,x","eCANB MDH5"); -} -hotmenu eCAN_B_Mailbox_6_to_7_Regs() -{ - GEL_WatchAdd("*(long *)0x624C,x","eCANB LAM6"); - GEL_WatchAdd("*(long *)0x628C,x","eCANB MOTS6"); - GEL_WatchAdd("*(long *)0x62CC,x","eCANB MOTO6"); - GEL_WatchAdd("*(long *)0x6330,x","eCANB MID6"); - GEL_WatchAdd("*(long *)0x6332,x","eCANB MCF6"); - GEL_WatchAdd("*(long *)0x6334,x","eCANB MDL6"); - GEL_WatchAdd("*(long *)0x6336,x","eCANB MDH6"); - - GEL_WatchAdd("*(long *)0x624E,x","eCANB LAM7"); - GEL_WatchAdd("*(long *)0x628E,x","eCANB MOTS7"); - GEL_WatchAdd("*(long *)0x62CE,x","eCANB MOTO7"); - GEL_WatchAdd("*(long *)0x6338,x","eCANB MID7"); - GEL_WatchAdd("*(long *)0x633A,x","eCANB MCF7"); - GEL_WatchAdd("*(long *)0x633C,x","eCANB MDL7"); - GEL_WatchAdd("*(long *)0x633E,x","eCANB MDH7"); -} -hotmenu eCAN_B_Mailbox_8_to_9_Regs() -{ - GEL_WatchAdd("*(long *)0x6250,x","eCANB LAM8"); - GEL_WatchAdd("*(long *)0x6290,x","eCANB MOTS8"); - GEL_WatchAdd("*(long *)0x62D0,x","eCANB MOTO8"); - GEL_WatchAdd("*(long *)0x6340,x","eCANB MID8"); - GEL_WatchAdd("*(long *)0x6342,x","eCANB MCF8"); - GEL_WatchAdd("*(long *)0x6344,x","eCANB MDL8"); - GEL_WatchAdd("*(long *)0x6346,x","eCANB MDH8"); - - GEL_WatchAdd("*(long *)0x6252,x","eCANB LAM9"); - GEL_WatchAdd("*(long *)0x6292,x","eCANB MOTS9"); - GEL_WatchAdd("*(long *)0x62D2,x","eCANB MOTO9"); - GEL_WatchAdd("*(long *)0x6348,x","eCANB MID9"); - GEL_WatchAdd("*(long *)0x634A,x","eCANB MCF9"); - GEL_WatchAdd("*(long *)0x634C,x","eCANB MDL9"); - GEL_WatchAdd("*(long *)0x634E,x","eCANB MDH9"); -} -hotmenu eCAN_B_Mailbox_10_to_11_Regs() -{ - GEL_WatchAdd("*(long *)0x6254,x","eCANB LAM10"); - GEL_WatchAdd("*(long *)0x6294,x","eCANB MOTS10"); - GEL_WatchAdd("*(long *)0x62D4,x","eCANB MOTO10"); - GEL_WatchAdd("*(long *)0x6350,x","eCANB MID10"); - GEL_WatchAdd("*(long *)0x6352,x","eCANB MCF10"); - GEL_WatchAdd("*(long *)0x6354,x","eCANB MDL10"); - GEL_WatchAdd("*(long *)0x6356,x","eCANB MDH10"); - - GEL_WatchAdd("*(long *)0x6256,x","eCANB LAM11"); - GEL_WatchAdd("*(long *)0x6296,x","eCANB MOTS11"); - GEL_WatchAdd("*(long *)0x62D6,x","eCANB MOTO11"); - GEL_WatchAdd("*(long *)0x6358,x","eCANB MID11"); - GEL_WatchAdd("*(long *)0x635A,x","eCANB MCF11"); - GEL_WatchAdd("*(long *)0x635C,x","eCANB MDL11"); - GEL_WatchAdd("*(long *)0x635E,x","eCANB MDH11"); -} -hotmenu eCAN_B_Mailbox_12_to_13_Regs() -{ - GEL_WatchAdd("*(long *)0x6258,x","eCANB LAM12"); - GEL_WatchAdd("*(long *)0x6298,x","eCANB MOTS12"); - GEL_WatchAdd("*(long *)0x62D8,x","eCANB MOTO12"); - GEL_WatchAdd("*(long *)0x6360,x","eCANB MID12"); - GEL_WatchAdd("*(long *)0x6362,x","eCANB MCF12"); - GEL_WatchAdd("*(long *)0x6364,x","eCANB MDL12"); - GEL_WatchAdd("*(long *)0x6366,x","eCANB MDH12"); - - GEL_WatchAdd("*(long *)0x625A,x","eCANB LAM13"); - GEL_WatchAdd("*(long *)0x629A,x","eCANB MOTS13"); - GEL_WatchAdd("*(long *)0x62DA,x","eCANB MOTO13"); - GEL_WatchAdd("*(long *)0x6368,x","eCANB MID13"); - GEL_WatchAdd("*(long *)0x636A,x","eCANB MCF13"); - GEL_WatchAdd("*(long *)0x636C,x","eCANB MDL13"); - GEL_WatchAdd("*(long *)0x636E,x","eCANB MDH13"); -} -hotmenu eCAN_B_Mailbox_14_to_15_Regs() -{ - GEL_WatchAdd("*(long *)0x625C,x","eCANB LAM14"); - GEL_WatchAdd("*(long *)0x629C,x","eCANB MOTS14"); - GEL_WatchAdd("*(long *)0x62DC,x","eCANB MOTO14"); - GEL_WatchAdd("*(long *)0x6370,x","eCANB MID14"); - GEL_WatchAdd("*(long *)0x6372,x","eCANB MCF14"); - GEL_WatchAdd("*(long *)0x6374,x","eCANB MDL14"); - GEL_WatchAdd("*(long *)0x6376,x","eCANB MDH14"); - - GEL_WatchAdd("*(long *)0x625E,x","eCANB LAM15"); - GEL_WatchAdd("*(long *)0x629E,x","eCANB MOTS15"); - GEL_WatchAdd("*(long *)0x62DE,x","eCANB MOTO15"); - GEL_WatchAdd("*(long *)0x6378,x","eCANB MID15"); - GEL_WatchAdd("*(long *)0x637A,x","eCANB MCF15"); - GEL_WatchAdd("*(long *)0x637C,x","eCANB MDL15"); - GEL_WatchAdd("*(long *)0x637E,x","eCANB MDH15"); -} -hotmenu eCAN_B_Mailbox_16_to_17_Regs() -{ - GEL_WatchAdd("*(long *)0x6260,x","eCANB LAM16"); - GEL_WatchAdd("*(long *)0x62A0,x","eCANB MOTS16"); - GEL_WatchAdd("*(long *)0x62E0,x","eCANB MOTO16"); - GEL_WatchAdd("*(long *)0x6380,x","eCANB MID16"); - GEL_WatchAdd("*(long *)0x6382,x","eCANB MCF16"); - GEL_WatchAdd("*(long *)0x6384,x","eCANB MDL16"); - GEL_WatchAdd("*(long *)0x6386,x","eCANB MDH16"); - - GEL_WatchAdd("*(long *)0x6262,x","eCANB LAM17"); - GEL_WatchAdd("*(long *)0x62A2,x","eCANB MOTS17"); - GEL_WatchAdd("*(long *)0x62E2,x","eCANB MOTO17"); - GEL_WatchAdd("*(long *)0x6388,x","eCANB MID17"); - GEL_WatchAdd("*(long *)0x638A,x","eCANB MCF17"); - GEL_WatchAdd("*(long *)0x638C,x","eCANB MDL17"); - GEL_WatchAdd("*(long *)0x638E,x","eCANB MDH17"); -} -hotmenu eCAN_B_Mailbox_18_to_19_Regs() -{ - GEL_WatchAdd("*(long *)0x6264,x","eCANB LAM18"); - GEL_WatchAdd("*(long *)0x62A4,x","eCANB MOTS18"); - GEL_WatchAdd("*(long *)0x62E4,x","eCANB MOTO18"); - GEL_WatchAdd("*(long *)0x6390,x","eCANB MID18"); - GEL_WatchAdd("*(long *)0x6392,x","eCANB MCF18"); - GEL_WatchAdd("*(long *)0x6394,x","eCANB MDL18"); - GEL_WatchAdd("*(long *)0x6396,x","eCANB MDH18"); - - GEL_WatchAdd("*(long *)0x6266,x","eCANB LAM19"); - GEL_WatchAdd("*(long *)0x62A6,x","eCANB MOTS19"); - GEL_WatchAdd("*(long *)0x62E6,x","eCANB MOTO19"); - GEL_WatchAdd("*(long *)0x6398,x","eCANB MID19"); - GEL_WatchAdd("*(long *)0x639A,x","eCANB MCF19"); - GEL_WatchAdd("*(long *)0x639C,x","eCANB MDL19"); - GEL_WatchAdd("*(long *)0x639E,x","eCANB MDH19"); -} -hotmenu eCAN_B_Mailbox_20_to_21_Regs() -{ - GEL_WatchAdd("*(long *)0x6268,x","eCANB LAM20"); - GEL_WatchAdd("*(long *)0x62A8,x","eCANB MOTS20"); - GEL_WatchAdd("*(long *)0x62E8,x","eCANB MOTO20"); - GEL_WatchAdd("*(long *)0x63A0,x","eCANB MID20"); - GEL_WatchAdd("*(long *)0x63A2,x","eCANB MCF20"); - GEL_WatchAdd("*(long *)0x63A4,x","eCANB MDL20"); - GEL_WatchAdd("*(long *)0x63A6,x","eCANB MDH20"); - - GEL_WatchAdd("*(long *)0x626A,x","eCANB LAM21"); - GEL_WatchAdd("*(long *)0x62AA,x","eCANB MOTS21"); - GEL_WatchAdd("*(long *)0x62EA,x","eCANB MOTO21"); - GEL_WatchAdd("*(long *)0x63A8,x","eCANB MID21"); - GEL_WatchAdd("*(long *)0x63AA,x","eCANB MCF21"); - GEL_WatchAdd("*(long *)0x63AC,x","eCANB MDL21"); - GEL_WatchAdd("*(long *)0x63AE,x","eCANB MDH21"); -} -hotmenu eCAN_B_Mailbox_22_to_23_Regs() -{ - GEL_WatchAdd("*(long *)0x626C,x","eCANB LAM22"); - GEL_WatchAdd("*(long *)0x62AC,x","eCANB MOTS22"); - GEL_WatchAdd("*(long *)0x62EC,x","eCANB MOTO22"); - GEL_WatchAdd("*(long *)0x63B0,x","eCANB MID22"); - GEL_WatchAdd("*(long *)0x63B2,x","eCANB MCF22"); - GEL_WatchAdd("*(long *)0x63B4,x","eCANB MDL22"); - GEL_WatchAdd("*(long *)0x63B6,x","eCANB MDH22"); - - GEL_WatchAdd("*(long *)0x626E,x","eCANB LAM23"); - GEL_WatchAdd("*(long *)0x62AE,x","eCANB MOTS23"); - GEL_WatchAdd("*(long *)0x62EE,x","eCANB MOTO23"); - GEL_WatchAdd("*(long *)0x63B8,x","eCANB MID23"); - GEL_WatchAdd("*(long *)0x63BA,x","eCANB MCF23"); - GEL_WatchAdd("*(long *)0x63BC,x","eCANB MDL23"); - GEL_WatchAdd("*(long *)0x63BE,x","eCANB MDH23"); -} -hotmenu eCAN_B_Mailbox_24_to_25_Regs() -{ - GEL_WatchAdd("*(long *)0x6270,x","eCANB LAM24"); - GEL_WatchAdd("*(long *)0x62B0,x","eCANB MOTS24"); - GEL_WatchAdd("*(long *)0x62F0,x","eCANB MOTO24"); - GEL_WatchAdd("*(long *)0x63C0,x","eCANB MID24"); - GEL_WatchAdd("*(long *)0x63C2,x","eCANB MCF24"); - GEL_WatchAdd("*(long *)0x63C4,x","eCANB MDL24"); - GEL_WatchAdd("*(long *)0x63C6,x","eCANB MDH24"); - - GEL_WatchAdd("*(long *)0x6272,x","eCANB LAM25"); - GEL_WatchAdd("*(long *)0x62B2,x","eCANB MOTS25"); - GEL_WatchAdd("*(long *)0x62F2,x","eCANB MOTO25"); - GEL_WatchAdd("*(long *)0x63C8,x","eCANB MID25"); - GEL_WatchAdd("*(long *)0x63CA,x","eCANB MCF25"); - GEL_WatchAdd("*(long *)0x63CC,x","eCANB MDL25"); - GEL_WatchAdd("*(long *)0x63CE,x","eCANB MDH25"); -} -hotmenu eCAN_B_Mailbox_26_to_27_Regs() -{ - GEL_WatchAdd("*(long *)0x6274,x","eCANB LAM26"); - GEL_WatchAdd("*(long *)0x62B4,x","eCANB MOTS26"); - GEL_WatchAdd("*(long *)0x62F4,x","eCANB MOTO26"); - GEL_WatchAdd("*(long *)0x63D0,x","eCANB MID26"); - GEL_WatchAdd("*(long *)0x63D2,x","eCANB MCF26"); - GEL_WatchAdd("*(long *)0x63D4,x","eCANB MDL26"); - GEL_WatchAdd("*(long *)0x63D6,x","eCANB MDH26"); - - GEL_WatchAdd("*(long *)0x6276,x","eCANB LAM27"); - GEL_WatchAdd("*(long *)0x62B6,x","eCANB MOTS27"); - GEL_WatchAdd("*(long *)0x62F6,x","eCANB MOTO27"); - GEL_WatchAdd("*(long *)0x63D8,x","eCANB MID27"); - GEL_WatchAdd("*(long *)0x63DA,x","eCANB MCF27"); - GEL_WatchAdd("*(long *)0x63DC,x","eCANB MDL27"); - GEL_WatchAdd("*(long *)0x63DE,x","eCANB MDH27"); -} -hotmenu eCAN_B_Mailbox_28_to_29_Regs() -{ - GEL_WatchAdd("*(long *)0x6278,x","eCANB LAM28"); - GEL_WatchAdd("*(long *)0x62B8,x","eCANB MOTS28"); - GEL_WatchAdd("*(long *)0x62F8,x","eCANB MOTO28"); - GEL_WatchAdd("*(long *)0x63E0,x","eCANB MID28"); - GEL_WatchAdd("*(long *)0x63E2,x","eCANB MCF28"); - GEL_WatchAdd("*(long *)0x63E4,x","eCANB MDL28"); - GEL_WatchAdd("*(long *)0x63E6,x","eCANB MDH28"); - - GEL_WatchAdd("*(long *)0x627A,x","eCANB LAM29"); - GEL_WatchAdd("*(long *)0x62BA,x","eCANB MOTS29"); - GEL_WatchAdd("*(long *)0x62FA,x","eCANB MOTO29"); - GEL_WatchAdd("*(long *)0x63E8,x","eCANB MID29"); - GEL_WatchAdd("*(long *)0x63EA,x","eCANB MCF29"); - GEL_WatchAdd("*(long *)0x63EC,x","eCANB MDL29"); - GEL_WatchAdd("*(long *)0x63EE,x","eCANB MDH29"); -} -hotmenu eCAN_B_Mailbox_30_to_31_Regs() -{ - GEL_WatchAdd("*(long *)0x627C,x","eCANB LAM30"); - GEL_WatchAdd("*(long *)0x62BC,x","eCANB MOTS30"); - GEL_WatchAdd("*(long *)0x62FC,x","eCANB MOTO30"); - GEL_WatchAdd("*(long *)0x63F0,x","eCANB MID30"); - GEL_WatchAdd("*(long *)0x63F2,x","eCANB MCF30"); - GEL_WatchAdd("*(long *)0x63F4,x","eCANB MDL30"); - GEL_WatchAdd("*(long *)0x63F6,x","eCANB MDH30"); - - GEL_WatchAdd("*(long *)0x627E,x","eCANB LAM31"); - GEL_WatchAdd("*(long *)0x62BE,x","eCANB MOTS31"); - GEL_WatchAdd("*(long *)0x62FE,x","eCANB MOTO31"); - GEL_WatchAdd("*(long *)0x63F8,x","eCANB MID31"); - GEL_WatchAdd("*(long *)0x63FA,x","eCANB MCF31"); - GEL_WatchAdd("*(long *)0x63FC,x","eCANB MDL31"); - GEL_WatchAdd("*(long *)0x63FE,x","eCANB MDH31"); -} - - -/********************************************************************/ -/* Enhanced Capture Registers */ -/********************************************************************/ -menuitem "Watch eCAP Registers"; - -hotmenu eCAP1_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6A00,x","eCAP1 TSCNT"); - GEL_WatchAdd("*(long *)0x6A02,x","eCAP1 CNTPHS"); - GEL_WatchAdd("*(long *)0x6A04,x","eCAP1 CAP1"); - GEL_WatchAdd("*(long *)0x6A06,x","eCAP1 CAP2"); - GEL_WatchAdd("*(long *)0x6A08,x","eCAP1 CAP3"); - GEL_WatchAdd("*(long *)0x6A0A,x","eCAP1 CAP4"); - GEL_WatchAdd("*0x6A14,x","eCAP1 ECCTL1"); - GEL_WatchAdd("*0x6A15,x","eCAP1 ECCTL2"); - GEL_WatchAdd("*0x6A16,x","eCAP1 ECEINT"); - GEL_WatchAdd("*0x6A17,x","eCAP1 ECFLG"); - GEL_WatchAdd("*0x6A18,x","eCAP1 ECCLR"); - GEL_WatchAdd("*0x6A19,x","eCAP1 ECFRC"); -} -hotmenu eCAP2_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6A20,x","eCAP2 TSCNT"); - GEL_WatchAdd("*(long *)0x6A22,x","eCAP2 CNTPHS"); - GEL_WatchAdd("*(long *)0x6A24,x","eCAP2 CAP1"); - GEL_WatchAdd("*(long *)0x6A26,x","eCAP2 CAP2"); - GEL_WatchAdd("*(long *)0x6A28,x","eCAP2 CAP3"); - GEL_WatchAdd("*(long *)0x6A2A,x","eCAP2 CAP4"); - GEL_WatchAdd("*0x6A34,x","eCAP2 ECCTL1"); - GEL_WatchAdd("*0x6A35,x","eCAP2 ECCTL2"); - GEL_WatchAdd("*0x6A36,x","eCAP2 ECEINT"); - GEL_WatchAdd("*0x6A37,x","eCAP2 ECFLG"); - GEL_WatchAdd("*0x6A38,x","eCAP2 ECCLR"); - GEL_WatchAdd("*0x6A39,x","eCAP2 ECFRC"); -} -hotmenu eCAP3_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6A40,x","eCAP3 TSCNT"); - GEL_WatchAdd("*(long *)0x6A42,x","eCAP3 CNTPHS"); - GEL_WatchAdd("*(long *)0x6A44,x","eCAP3 CAP1"); - GEL_WatchAdd("*(long *)0x6A46,x","eCAP3 CAP2"); - GEL_WatchAdd("*(long *)0x6A48,x","eCAP3 CAP3"); - GEL_WatchAdd("*(long *)0x6A4A,x","eCAP3 CAP4"); - GEL_WatchAdd("*0x6A54,x","eCAP3 ECCTL1"); - GEL_WatchAdd("*0x6A55,x","eCAP3 ECCTL2"); - GEL_WatchAdd("*0x6A56,x","eCAP3 ECEINT"); - GEL_WatchAdd("*0x6A57,x","eCAP3 ECFLG"); - GEL_WatchAdd("*0x6A58,x","eCAP3 ECCLR"); - GEL_WatchAdd("*0x6A59,x","eCAP3 ECFRC"); -} -hotmenu eCAP4_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6A60,x","eCAP4 TSCNT"); - GEL_WatchAdd("*(long *)0x6A62,x","eCAP4 CNTPHS"); - GEL_WatchAdd("*(long *)0x6A64,x","eCAP4 CAP1"); - GEL_WatchAdd("*(long *)0x6A66,x","eCAP4 CAP2"); - GEL_WatchAdd("*(long *)0x6A68,x","eCAP4 CAP3"); - GEL_WatchAdd("*(long *)0x6A6A,x","eCAP4 CAP4"); - GEL_WatchAdd("*0x6A74,x","eCAP4 ECCTL1"); - GEL_WatchAdd("*0x6A75,x","eCAP4 ECCTL2"); - GEL_WatchAdd("*0x6A76,x","eCAP4 ECEINT"); - GEL_WatchAdd("*0x6A77,x","eCAP4 ECFLG"); - GEL_WatchAdd("*0x6A78,x","eCAP4 ECCLR"); - GEL_WatchAdd("*0x6A79,x","eCAP4 ECFRC"); -} -hotmenu eCAP5_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6A80,x","eCAP5 TSCNT"); - GEL_WatchAdd("*(long *)0x6A82,x","eCAP5 CNTPHS"); - GEL_WatchAdd("*(long *)0x6A84,x","eCAP5 CAP1"); - GEL_WatchAdd("*(long *)0x6A86,x","eCAP5 CAP2"); - GEL_WatchAdd("*(long *)0x6A88,x","eCAP5 CAP3"); - GEL_WatchAdd("*(long *)0x6A8A,x","eCAP5 CAP4"); - GEL_WatchAdd("*0x6A94,x","eCAP5 ECCTL1"); - GEL_WatchAdd("*0x6A95,x","eCAP5 ECCTL2"); - GEL_WatchAdd("*0x6A96,x","eCAP5 ECEINT"); - GEL_WatchAdd("*0x6A97,x","eCAP5 ECFLG"); - GEL_WatchAdd("*0x6A98,x","eCAP5 ECCLR"); - GEL_WatchAdd("*0x6A99,x","eCAP5 ECFRC"); -} -hotmenu eCAP6_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6AA0,x","eCAP6 TSCNT"); - GEL_WatchAdd("*(long *)0x6AA2,x","eCAP6 CNTPHS"); - GEL_WatchAdd("*(long *)0x6AA4,x","eCAP6 CAP1"); - GEL_WatchAdd("*(long *)0x6AA6,x","eCAP6 CAP2"); - GEL_WatchAdd("*(long *)0x6AA8,x","eCAP6 CAP3"); - GEL_WatchAdd("*(long *)0x6AAA,x","eCAP6 CAP4"); - GEL_WatchAdd("*0x6AB4,x","eCAP6 ECCTL1"); - GEL_WatchAdd("*0x6AB5,x","eCAP6 ECCTL2"); - GEL_WatchAdd("*0x6AB6,x","eCAP6 ECEINT"); - GEL_WatchAdd("*0x6AB7,x","eCAP6 ECFLG"); - GEL_WatchAdd("*0x6AB8,x","eCAP6 ECCLR"); - GEL_WatchAdd("*0x6AB9,x","eCAP6 ECFRC"); -} - - -/********************************************************************/ -/* Enhanced PWM Registers */ -/********************************************************************/ -menuitem "Watch ePWM Registers"; - -hotmenu ePWM1_All_Regs() -{ - GEL_WatchAdd("*0x6800,x","ePWM1 TBCTL"); - GEL_WatchAdd("*0x6801,x","ePWM1 TBSTS"); - GEL_WatchAdd("*0x6802,x","ePWM1 TBPHSHR"); - GEL_WatchAdd("*0x6803,x","ePWM1 TBPHS"); - GEL_WatchAdd("*0x6804,x","ePWM1 TBCTR"); - GEL_WatchAdd("*0x6805,x","ePWM1 TBPRD"); - GEL_WatchAdd("*0x6807,x","ePWM1 CMPCTL"); - GEL_WatchAdd("*0x6808,x","ePWM1 CMPAHR"); - GEL_WatchAdd("*0x6809,x","ePWM1 CMPA"); - GEL_WatchAdd("*0x680A,x","ePWM1 CMPB"); - GEL_WatchAdd("*0x680B,x","ePWM1 AQCTLA"); - GEL_WatchAdd("*0x680C,x","ePWM1 AQCTLB"); - GEL_WatchAdd("*0x680D,x","ePWM1 AQSFRC"); - GEL_WatchAdd("*0x680E,x","ePWM1 AQCSFRC"); - GEL_WatchAdd("*0x680F,x","ePWM1 DBCTL"); - GEL_WatchAdd("*0x6810,x","ePWM1 DBRED"); - GEL_WatchAdd("*0x6811,x","ePWM1 DBFED"); - GEL_WatchAdd("*0x6812,x","ePWM1 TZSEL"); - GEL_WatchAdd("*0x6813,x","ePWM1 TZDCSEL"); - GEL_WatchAdd("*0x6814,x","ePWM1 TZCTL"); - GEL_WatchAdd("*0x6815,x","ePWM1 TZEINT"); - GEL_WatchAdd("*0x6816,x","ePWM1 TZFLG"); - GEL_WatchAdd("*0x6817,x","ePWM1 TZCLR"); - GEL_WatchAdd("*0x6818,x","ePWM1 TZFRC"); - GEL_WatchAdd("*0x6819,x","ePWM1 ETSEL"); - GEL_WatchAdd("*0x681A,x","ePWM1 ETPS"); - GEL_WatchAdd("*0x681B,x","ePWM1 ETFLG"); - GEL_WatchAdd("*0x681C,x","ePWM1 ETCLR"); - GEL_WatchAdd("*0x681D,x","ePWM1 ETFRC"); - GEL_WatchAdd("*0x681E,x","ePWM1 PCCTL"); - GEL_WatchAdd("*0x6820,x","ePWM1 HRCNFG"); -} -hotmenu ePWM1_TB_Regs() -{ - GEL_WatchAdd("*0x6800,x","ePWM1 TBCTL"); - GEL_WatchAdd("*0x6801,x","ePWM1 TBSTS"); - GEL_WatchAdd("*0x6802,x","ePWM1 TBPHSHR"); - GEL_WatchAdd("*0x6803,x","ePWM1 TBPHS"); - GEL_WatchAdd("*0x6804,x","ePWM1 TBCTR"); - GEL_WatchAdd("*0x6805,x","ePWM1 TBPRD"); -} -hotmenu ePWM1_CMP_Regs() -{ - GEL_WatchAdd("*0x6807,x","ePWM1 CMPCTL"); - GEL_WatchAdd("*0x6808,x","ePWM1 CMPAHR"); - GEL_WatchAdd("*0x6809,x","ePWM1 CMPA"); - GEL_WatchAdd("*0x680A,x","ePWM1 CMPB"); -} -hotmenu ePWM1_AQ_Regs() -{ - GEL_WatchAdd("*0x680B,x","ePWM1 AQCTLA"); - GEL_WatchAdd("*0x680C,x","ePWM1 AQCTLB"); - GEL_WatchAdd("*0x680D,x","ePWM1 AQSFRC"); - GEL_WatchAdd("*0x680E,x","ePWM1 AQCSFRC"); -} -hotmenu ePWM1_DB_Regs() -{ - GEL_WatchAdd("*0x680F,x","ePWM1 DBCTL"); - GEL_WatchAdd("*0x6810,x","ePWM1 DBRED"); - GEL_WatchAdd("*0x6811,x","ePWM1 DBFED"); -} -hotmenu ePWM1_TZ_Regs() -{ - GEL_WatchAdd("*0x6812,x","ePWM1 TZSEL"); - GEL_WatchAdd("*0x6814,x","ePWM1 TZCTL"); - GEL_WatchAdd("*0x6815,x","ePWM1 TZEINT"); - GEL_WatchAdd("*0x6816,x","ePWM1 TZFLG"); - GEL_WatchAdd("*0x6817,x","ePWM1 TZCLR"); - GEL_WatchAdd("*0x6818,x","ePWM1 TZFRC"); -} -hotmenu ePWM1_ET_Regs() -{ - GEL_WatchAdd("*0x6819,x","ePWM1 ETSEL"); - GEL_WatchAdd("*0x681A,x","ePWM1 ETPS"); - GEL_WatchAdd("*0x681B,x","ePWM1 ETFLG"); - GEL_WatchAdd("*0x681C,x","ePWM1 ETCLR"); - GEL_WatchAdd("*0x681D,x","ePWM1 ETFRC"); -} -hotmenu ePWM2_All_Regs() -{ - GEL_WatchAdd("*0x6840,x","ePWM2 TBCTL"); - GEL_WatchAdd("*0x6841,x","ePWM2 TBSTS"); - GEL_WatchAdd("*0x6842,x","ePWM2 TBPHSHR"); - GEL_WatchAdd("*0x6843,x","ePWM2 TBPHS"); - GEL_WatchAdd("*0x6844,x","ePWM2 TBCTR"); - GEL_WatchAdd("*0x6845,x","ePWM2 TBPRD"); - GEL_WatchAdd("*0x6847,x","ePWM2 CMPCTL"); - GEL_WatchAdd("*0x6848,x","ePWM2 CMPAHR"); - GEL_WatchAdd("*0x6849,x","ePWM2 CMPA"); - GEL_WatchAdd("*0x684A,x","ePWM2 CMPB"); - GEL_WatchAdd("*0x684B,x","ePWM2 AQCTLA"); - GEL_WatchAdd("*0x684C,x","ePWM2 AQCTLB"); - GEL_WatchAdd("*0x684D,x","ePWM2 AQSFRC"); - GEL_WatchAdd("*0x684E,x","ePWM2 AQCSFRC"); - GEL_WatchAdd("*0x684F,x","ePWM2 DBCTL"); - GEL_WatchAdd("*0x6850,x","ePWM2 DBRED"); - GEL_WatchAdd("*0x6851,x","ePWM2 DBFED"); - GEL_WatchAdd("*0x6852,x","ePWM2 TZSEL"); - GEL_WatchAdd("*0x6853,x","ePWM2 TZDCSEL"); - GEL_WatchAdd("*0x6854,x","ePWM2 TZCTL"); - GEL_WatchAdd("*0x6855,x","ePWM2 TZEINT"); - GEL_WatchAdd("*0x6856,x","ePWM2 TZFLG"); - GEL_WatchAdd("*0x6857,x","ePWM2 TZCLR"); - GEL_WatchAdd("*0x6858,x","ePWM2 TZFRC"); - GEL_WatchAdd("*0x6859,x","ePWM2 ETSEL"); - GEL_WatchAdd("*0x685A,x","ePWM2 ETPS"); - GEL_WatchAdd("*0x685B,x","ePWM2 ETFLG"); - GEL_WatchAdd("*0x685C,x","ePWM2 ETCLR"); - GEL_WatchAdd("*0x685D,x","ePWM2 ETFRC"); - GEL_WatchAdd("*0x685E,x","ePWM2 PCCTL"); - GEL_WatchAdd("*0x6860,x","ePWM2 HRCNFG"); -} -hotmenu ePWM2_TB_Regs() -{ - GEL_WatchAdd("*0x6840,x","ePWM2 TBCTL"); - GEL_WatchAdd("*0x6841,x","ePWM2 TBSTS"); - GEL_WatchAdd("*0x6842,x","ePWM2 TBPHSHR"); - GEL_WatchAdd("*0x6843,x","ePWM2 TBPHS"); - GEL_WatchAdd("*0x6844,x","ePWM2 TBCTR"); - GEL_WatchAdd("*0x6845,x","ePWM2 TBPRD"); -} -hotmenu ePWM2_CMP_Regs() -{ - GEL_WatchAdd("*0x6847,x","ePWM2 CMPCTL"); - GEL_WatchAdd("*0x6848,x","ePWM2 CMPAHR"); - GEL_WatchAdd("*0x6849,x","ePWM2 CMPA"); - GEL_WatchAdd("*0x684A,x","ePWM2 CMPB"); -} -hotmenu ePWM2_AQ_Regs() -{ - GEL_WatchAdd("*0x684B,x","ePWM2 AQCTLA"); - GEL_WatchAdd("*0x684C,x","ePWM2 AQCTLB"); - GEL_WatchAdd("*0x684D,x","ePWM2 AQSFRC"); - GEL_WatchAdd("*0x684E,x","ePWM2 AQCSFRC"); -} -hotmenu ePWM2_DB_Regs() -{ - GEL_WatchAdd("*0x684F,x","ePWM2 DBCTL"); - GEL_WatchAdd("*0x6850,x","ePWM2 DBRED"); - GEL_WatchAdd("*0x6851,x","ePWM2 DBFED"); -} -hotmenu ePWM2_TZ_Regs() -{ - GEL_WatchAdd("*0x6852,x","ePWM2 TZSEL"); - GEL_WatchAdd("*0x6854,x","ePWM2 TZCTL"); - GEL_WatchAdd("*0x6855,x","ePWM2 TZEINT"); - GEL_WatchAdd("*0x6856,x","ePWM2 TZFLG"); - GEL_WatchAdd("*0x6857,x","ePWM2 TZCLR"); - GEL_WatchAdd("*0x6858,x","ePWM2 TZFRC"); -} -hotmenu ePWM2_ET_Regs() -{ - GEL_WatchAdd("*0x6859,x","ePWM2 ETSEL"); - GEL_WatchAdd("*0x685A,x","ePWM2 ETPS"); - GEL_WatchAdd("*0x685B,x","ePWM2 ETFLG"); - GEL_WatchAdd("*0x685C,x","ePWM2 ETCLR"); - GEL_WatchAdd("*0x685D,x","ePWM2 ETFRC"); -} -hotmenu ePWM3_All_Regs() -{ - GEL_WatchAdd("*0x6880,x","ePWM3 TBCTL"); - GEL_WatchAdd("*0x6881,x","ePWM3 TBSTS"); - GEL_WatchAdd("*0x6882,x","ePWM3 TBPHSHR"); - GEL_WatchAdd("*0x6883,x","ePWM3 TBPHS"); - GEL_WatchAdd("*0x6884,x","ePWM3 TBCTR"); - GEL_WatchAdd("*0x6885,x","ePWM3 TBPRD"); - GEL_WatchAdd("*0x6887,x","ePWM3 CMPCTL"); - GEL_WatchAdd("*0x6888,x","ePWM3 CMPAHR"); - GEL_WatchAdd("*0x6889,x","ePWM3 CMPA"); - GEL_WatchAdd("*0x688A,x","ePWM3 CMPB"); - GEL_WatchAdd("*0x688B,x","ePWM3 AQCTLA"); - GEL_WatchAdd("*0x688C,x","ePWM3 AQCTLB"); - GEL_WatchAdd("*0x688D,x","ePWM3 AQSFRC"); - GEL_WatchAdd("*0x688E,x","ePWM3 AQCSFRC"); - GEL_WatchAdd("*0x688F,x","ePWM3 DBCTL"); - GEL_WatchAdd("*0x6890,x","ePWM3 DBRED"); - GEL_WatchAdd("*0x6891,x","ePWM3 DBFED"); - GEL_WatchAdd("*0x6892,x","ePWM3 TZSEL"); - GEL_WatchAdd("*0x6893,x","ePWM3 TZDCSEL"); - GEL_WatchAdd("*0x6894,x","ePWM3 TZCTL"); - GEL_WatchAdd("*0x6895,x","ePWM3 TZEINT"); - GEL_WatchAdd("*0x6896,x","ePWM3 TZFLG"); - GEL_WatchAdd("*0x6897,x","ePWM3 TZCLR"); - GEL_WatchAdd("*0x6898,x","ePWM3 TZFRC"); - GEL_WatchAdd("*0x6899,x","ePWM3 ETSEL"); - GEL_WatchAdd("*0x689A,x","ePWM3 ETPS"); - GEL_WatchAdd("*0x689B,x","ePWM3 ETFLG"); - GEL_WatchAdd("*0x689C,x","ePWM3 ETCLR"); - GEL_WatchAdd("*0x689D,x","ePWM3 ETFRC"); - GEL_WatchAdd("*0x689E,x","ePWM3 PCCTL"); - GEL_WatchAdd("*0x68A0,x","ePWM3 HRCNFG"); -} -hotmenu ePWM3_TB_Regs() -{ - GEL_WatchAdd("*0x6880,x","ePWM3 TBCTL"); - GEL_WatchAdd("*0x6881,x","ePWM3 TBSTS"); - GEL_WatchAdd("*0x6882,x","ePWM3 TBPHSHR"); - GEL_WatchAdd("*0x6883,x","ePWM3 TBPHS"); - GEL_WatchAdd("*0x6884,x","ePWM3 TBCTR"); - GEL_WatchAdd("*0x6885,x","ePWM3 TBPRD"); -} -hotmenu ePWM3_CMP_Regs() -{ - GEL_WatchAdd("*0x6887,x","ePWM3 CMPCTL"); - GEL_WatchAdd("*0x6888,x","ePWM3 CMPAHR"); - GEL_WatchAdd("*0x6889,x","ePWM3 CMPA"); - GEL_WatchAdd("*0x688A,x","ePWM3 CMPB"); -} -hotmenu ePWM3_AQ_Regs() -{ - GEL_WatchAdd("*0x688B,x","ePWM3 AQCTLA"); - GEL_WatchAdd("*0x688C,x","ePWM3 AQCTLB"); - GEL_WatchAdd("*0x688D,x","ePWM3 AQSFRC"); - GEL_WatchAdd("*0x688E,x","ePWM3 AQCSFRC"); -} -hotmenu ePWM3_DB_Regs() -{ - GEL_WatchAdd("*0x688F,x","ePWM3 DBCTL"); - GEL_WatchAdd("*0x6890,x","ePWM3 DBRED"); - GEL_WatchAdd("*0x6891,x","ePWM3 DBFED"); -} -hotmenu ePWM3_TZ_Regs() -{ - GEL_WatchAdd("*0x6892,x","ePWM3 TZSEL"); - GEL_WatchAdd("*0x6894,x","ePWM3 TZCTL"); - GEL_WatchAdd("*0x6895,x","ePWM3 TZEINT"); - GEL_WatchAdd("*0x6896,x","ePWM3 TZFLG"); - GEL_WatchAdd("*0x6897,x","ePWM3 TZCLR"); - GEL_WatchAdd("*0x6898,x","ePWM3 TZFRC"); -} -hotmenu ePWM3_ET_Regs() -{ - GEL_WatchAdd("*0x6899,x","ePWM3 ETSEL"); - GEL_WatchAdd("*0x689A,x","ePWM3 ETPS"); - GEL_WatchAdd("*0x689B,x","ePWM3 ETFLG"); - GEL_WatchAdd("*0x689C,x","ePWM3 ETCLR"); - GEL_WatchAdd("*0x689D,x","ePWM3 ETFRC"); -} -hotmenu ePWM4_All_Regs() -{ - GEL_WatchAdd("*0x68C0,x","ePWM4 TBCTL"); - GEL_WatchAdd("*0x68C1,x","ePWM4 TBSTS"); - GEL_WatchAdd("*0x68C2,x","ePWM4 TBPHSHR"); - GEL_WatchAdd("*0x68C3,x","ePWM4 TBPHS"); - GEL_WatchAdd("*0x68C4,x","ePWM4 TBCTR"); - GEL_WatchAdd("*0x68C5,x","ePWM4 TBPRD"); - GEL_WatchAdd("*0x68C7,x","ePWM4 CMPCTL"); - GEL_WatchAdd("*0x68C8,x","ePWM4 CMPAHR"); - GEL_WatchAdd("*0x68C9,x","ePWM4 CMPA"); - GEL_WatchAdd("*0x68CA,x","ePWM4 CMPB"); - GEL_WatchAdd("*0x68CB,x","ePWM4 AQCTLA"); - GEL_WatchAdd("*0x68CC,x","ePWM4 AQCTLB"); - GEL_WatchAdd("*0x68CD,x","ePWM4 AQSFRC"); - GEL_WatchAdd("*0x68CE,x","ePWM4 AQCSFRC"); - GEL_WatchAdd("*0x68CF,x","ePWM4 DBCTL"); - GEL_WatchAdd("*0x68D0,x","ePWM4 DBRED"); - GEL_WatchAdd("*0x68D1,x","ePWM4 DBFED"); - GEL_WatchAdd("*0x68D2,x","ePWM4 TZSEL"); - GEL_WatchAdd("*0x68D3,x","ePWM4 TZDCSEL"); - GEL_WatchAdd("*0x68D4,x","ePWM4 TZCTL"); - GEL_WatchAdd("*0x68D5,x","ePWM4 TZEINT"); - GEL_WatchAdd("*0x68D6,x","ePWM4 TZFLG"); - GEL_WatchAdd("*0x68D7,x","ePWM4 TZCLR"); - GEL_WatchAdd("*0x68D8,x","ePWM4 TZFRC"); - GEL_WatchAdd("*0x68D9,x","ePWM4 ETSEL"); - GEL_WatchAdd("*0x68DA,x","ePWM4 ETPS"); - GEL_WatchAdd("*0x68DB,x","ePWM4 ETFLG"); - GEL_WatchAdd("*0x68DC,x","ePWM4 ETCLR"); - GEL_WatchAdd("*0x68DD,x","ePWM4 ETFRC"); - GEL_WatchAdd("*0x68DE,x","ePWM4 PCCTL"); - GEL_WatchAdd("*0x68E0,x","ePWM4 HRCNFG"); -} -hotmenu ePWM4_TB_Regs() -{ - GEL_WatchAdd("*0x68C0,x","ePWM4 TBCTL"); - GEL_WatchAdd("*0x68C1,x","ePWM4 TBSTS"); - GEL_WatchAdd("*0x68C2,x","ePWM4 TBPHSHR"); - GEL_WatchAdd("*0x68C3,x","ePWM4 TBPHS"); - GEL_WatchAdd("*0x68C4,x","ePWM4 TBCTR"); - GEL_WatchAdd("*0x68C5,x","ePWM4 TBPRD"); -} -hotmenu ePWM4_CMP_Regs() -{ - GEL_WatchAdd("*0x68C7,x","ePWM4 CMPCTL"); - GEL_WatchAdd("*0x68C8,x","ePWM4 CMPAHR"); - GEL_WatchAdd("*0x68C9,x","ePWM4 CMPA"); - GEL_WatchAdd("*0x68CA,x","ePWM4 CMPB"); -} -hotmenu ePWM4_AQ_Regs() -{ - GEL_WatchAdd("*0x68CB,x","ePWM4 AQCTLA"); - GEL_WatchAdd("*0x68CC,x","ePWM4 AQCTLB"); - GEL_WatchAdd("*0x68CD,x","ePWM4 AQSFRC"); - GEL_WatchAdd("*0x68CE,x","ePWM4 AQCSFRC"); -} -hotmenu ePWM4_DB_Regs() -{ - GEL_WatchAdd("*0x68CF,x","ePWM4 DBCTL"); - GEL_WatchAdd("*0x68D0,x","ePWM4 DBRED"); - GEL_WatchAdd("*0x68D1,x","ePWM4 DBFED"); -} -hotmenu ePWM4_TZ_Regs() -{ - GEL_WatchAdd("*0x68D2,x","ePWM4 TZSEL"); - GEL_WatchAdd("*0x68D4,x","ePWM4 TZCTL"); - GEL_WatchAdd("*0x68D5,x","ePWM4 TZEINT"); - GEL_WatchAdd("*0x68D6,x","ePWM4 TZFLG"); - GEL_WatchAdd("*0x68D7,x","ePWM4 TZCLR"); - GEL_WatchAdd("*0x68D8,x","ePWM4 TZFRC"); -} -hotmenu ePWM4_ET_Regs() -{ - GEL_WatchAdd("*0x68D9,x","ePWM4 ETSEL"); - GEL_WatchAdd("*0x68DA,x","ePWM4 ETPS"); - GEL_WatchAdd("*0x68DB,x","ePWM4 ETFLG"); - GEL_WatchAdd("*0x68DC,x","ePWM4 ETCLR"); - GEL_WatchAdd("*0x68DD,x","ePWM4 ETFRC"); -} -hotmenu ePWM5_All_Regs() -{ - GEL_WatchAdd("*0x6900,x","ePWM5 TBCTL"); - GEL_WatchAdd("*0x6901,x","ePWM5 TBSTS"); - GEL_WatchAdd("*0x6902,x","ePWM5 TBPHSHR"); - GEL_WatchAdd("*0x6903,x","ePWM5 TBPHS"); - GEL_WatchAdd("*0x6904,x","ePWM5 TBCTR"); - GEL_WatchAdd("*0x6905,x","ePWM5 TBPRD"); - GEL_WatchAdd("*0x6907,x","ePWM5 CMPCTL"); - GEL_WatchAdd("*0x6908,x","ePWM5 CMPAHR"); - GEL_WatchAdd("*0x6909,x","ePWM5 CMPA"); - GEL_WatchAdd("*0x690A,x","ePWM5 CMPB"); - GEL_WatchAdd("*0x690B,x","ePWM5 AQCTLA"); - GEL_WatchAdd("*0x690C,x","ePWM5 AQCTLB"); - GEL_WatchAdd("*0x690D,x","ePWM5 AQSFRC"); - GEL_WatchAdd("*0x690E,x","ePWM5 AQCSFRC"); - GEL_WatchAdd("*0x690F,x","ePWM5 DBCTL"); - GEL_WatchAdd("*0x6910,x","ePWM5 DBRED"); - GEL_WatchAdd("*0x6911,x","ePWM5 DBFED"); - GEL_WatchAdd("*0x6912,x","ePWM5 TZSEL"); - GEL_WatchAdd("*0x6913,x","ePWM5 TZDCSEL"); - GEL_WatchAdd("*0x6914,x","ePWM5 TZCTL"); - GEL_WatchAdd("*0x6915,x","ePWM5 TZEINT"); - GEL_WatchAdd("*0x6916,x","ePWM5 TZFLG"); - GEL_WatchAdd("*0x6917,x","ePWM5 TZCLR"); - GEL_WatchAdd("*0x6918,x","ePWM5 TZFRC"); - GEL_WatchAdd("*0x6919,x","ePWM5 ETSEL"); - GEL_WatchAdd("*0x691A,x","ePWM5 ETPS"); - GEL_WatchAdd("*0x691B,x","ePWM5 ETFLG"); - GEL_WatchAdd("*0x691C,x","ePWM5 ETCLR"); - GEL_WatchAdd("*0x691D,x","ePWM5 ETFRC"); - GEL_WatchAdd("*0x691E,x","ePWM5 PCCTL"); - GEL_WatchAdd("*0x6920,x","ePWM5 HRCNFG"); -} -hotmenu ePWM5_TB_Regs() -{ - GEL_WatchAdd("*0x6900,x","ePWM5 TBCTL"); - GEL_WatchAdd("*0x6901,x","ePWM5 TBSTS"); - GEL_WatchAdd("*0x6902,x","ePWM5 TBPHSHR"); - GEL_WatchAdd("*0x6903,x","ePWM5 TBPHS"); - GEL_WatchAdd("*0x6904,x","ePWM5 TBCTR"); - GEL_WatchAdd("*0x6905,x","ePWM5 TBPRD"); -} -hotmenu ePWM5_CMP_Regs() -{ - GEL_WatchAdd("*0x6907,x","ePWM5 CMPCTL"); - GEL_WatchAdd("*0x6908,x","ePWM5 CMPAHR"); - GEL_WatchAdd("*0x6909,x","ePWM5 CMPA"); - GEL_WatchAdd("*0x690A,x","ePWM5 CMPB"); -} -hotmenu ePWM5_AQ_Regs() -{ - GEL_WatchAdd("*0x690B,x","ePWM5 AQCTLA"); - GEL_WatchAdd("*0x690C,x","ePWM5 AQCTLB"); - GEL_WatchAdd("*0x690D,x","ePWM5 AQSFRC"); - GEL_WatchAdd("*0x690E,x","ePWM5 AQCSFRC"); -} -hotmenu ePWM5_DB_Regs() -{ - GEL_WatchAdd("*0x690F,x","ePWM5 DBCTL"); - GEL_WatchAdd("*0x6910,x","ePWM5 DBRED"); - GEL_WatchAdd("*0x6911,x","ePWM5 DBFED"); -} -hotmenu ePWM5_TZ_Regs() -{ - GEL_WatchAdd("*0x6912,x","ePWM5 TZSEL"); - GEL_WatchAdd("*0x6914,x","ePWM5 TZCTL"); - GEL_WatchAdd("*0x6915,x","ePWM5 TZEINT"); - GEL_WatchAdd("*0x6916,x","ePWM5 TZFLG"); - GEL_WatchAdd("*0x6917,x","ePWM5 TZCLR"); - GEL_WatchAdd("*0x6918,x","ePWM5 TZFRC"); -} -hotmenu ePWM5_ET_Regs() -{ - GEL_WatchAdd("*0x6919,x","ePWM5 ETSEL"); - GEL_WatchAdd("*0x691A,x","ePWM5 ETPS"); - GEL_WatchAdd("*0x691B,x","ePWM5 ETFLG"); - GEL_WatchAdd("*0x691C,x","ePWM5 ETCLR"); - GEL_WatchAdd("*0x691D,x","ePWM5 ETFRC"); -} -hotmenu ePWM6_All_Regs() -{ - GEL_WatchAdd("*0x6940,x","ePWM6 TBCTL"); - GEL_WatchAdd("*0x6941,x","ePWM6 TBSTS"); - GEL_WatchAdd("*0x6942,x","ePWM6 TBPHSHR"); - GEL_WatchAdd("*0x6943,x","ePWM6 TBPHS"); - GEL_WatchAdd("*0x6944,x","ePWM6 TBCTR"); - GEL_WatchAdd("*0x6945,x","ePWM6 TBPRD"); - GEL_WatchAdd("*0x6947,x","ePWM6 CMPCTL"); - GEL_WatchAdd("*0x6948,x","ePWM6 CMPAHR"); - GEL_WatchAdd("*0x6949,x","ePWM6 CMPA"); - GEL_WatchAdd("*0x694A,x","ePWM6 CMPB"); - GEL_WatchAdd("*0x694B,x","ePWM6 AQCTLA"); - GEL_WatchAdd("*0x694C,x","ePWM6 AQCTLB"); - GEL_WatchAdd("*0x694D,x","ePWM6 AQSFRC"); - GEL_WatchAdd("*0x694E,x","ePWM6 AQCSFRC"); - GEL_WatchAdd("*0x694F,x","ePWM6 DBCTL"); - GEL_WatchAdd("*0x6950,x","ePWM6 DBRED"); - GEL_WatchAdd("*0x6951,x","ePWM6 DBFED"); - GEL_WatchAdd("*0x6952,x","ePWM6 TZSEL"); - GEL_WatchAdd("*0x6953,x","ePWM6 TZDCSEL"); - GEL_WatchAdd("*0x6954,x","ePWM6 TZCTL"); - GEL_WatchAdd("*0x6955,x","ePWM6 TZEINT"); - GEL_WatchAdd("*0x6956,x","ePWM6 TZFLG"); - GEL_WatchAdd("*0x6957,x","ePWM6 TZCLR"); - GEL_WatchAdd("*0x6958,x","ePWM6 TZFRC"); - GEL_WatchAdd("*0x6959,x","ePWM6 ETSEL"); - GEL_WatchAdd("*0x695A,x","ePWM6 ETPS"); - GEL_WatchAdd("*0x695B,x","ePWM6 ETFLG"); - GEL_WatchAdd("*0x695C,x","ePWM6 ETCLR"); - GEL_WatchAdd("*0x695D,x","ePWM6 ETFRC"); - GEL_WatchAdd("*0x695E,x","ePWM6 PCCTL"); - GEL_WatchAdd("*0x6960,x","ePWM6 HRCNFG"); - -} -hotmenu ePWM6_TB_Regs() -{ - GEL_WatchAdd("*0x6940,x","ePWM6 TBCTL"); - GEL_WatchAdd("*0x6941,x","ePWM6 TBSTS"); - GEL_WatchAdd("*0x6942,x","ePWM6 TBPHSHR"); - GEL_WatchAdd("*0x6943,x","ePWM6 TBPHS"); - GEL_WatchAdd("*0x6944,x","ePWM6 TBCTR"); - GEL_WatchAdd("*0x6945,x","ePWM6 TBPRD"); -} -hotmenu ePWM6_CMP_Regs() -{ - GEL_WatchAdd("*0x6947,x","ePWM6 CMPCTL"); - GEL_WatchAdd("*0x6948,x","ePWM6 CMPAHR"); - GEL_WatchAdd("*0x6949,x","ePWM6 CMPA"); - GEL_WatchAdd("*0x694A,x","ePWM6 CMPB"); -} -hotmenu ePWM6_AQ_Regs() -{ - GEL_WatchAdd("*0x694B,x","ePWM6 AQCTLA"); - GEL_WatchAdd("*0x694C,x","ePWM6 AQCTLB"); - GEL_WatchAdd("*0x694D,x","ePWM6 AQSFRC"); - GEL_WatchAdd("*0x694E,x","ePWM6 AQCSFRC"); -} -hotmenu ePWM6_DB_Regs() -{ - GEL_WatchAdd("*0x694F,x","ePWM6 DBCTL"); - GEL_WatchAdd("*0x6950,x","ePWM6 DBRED"); - GEL_WatchAdd("*0x6951,x","ePWM6 DBFED"); -} -hotmenu ePWM6_TZ_Regs() -{ - GEL_WatchAdd("*0x6952,x","ePWM6 TZSEL"); - GEL_WatchAdd("*0x6954,x","ePWM6 TZCTL"); - GEL_WatchAdd("*0x6955,x","ePWM6 TZEINT"); - GEL_WatchAdd("*0x6956,x","ePWM6 TZFLG"); - GEL_WatchAdd("*0x6957,x","ePWM6 TZCLR"); - GEL_WatchAdd("*0x6958,x","ePWM6 TZFRC"); -} -hotmenu ePWM6_ET_Regs() -{ - GEL_WatchAdd("*0x6959,x","ePWM6 ETSEL"); - GEL_WatchAdd("*0x695A,x","ePWM6 ETPS"); - GEL_WatchAdd("*0x695B,x","ePWM6 ETFLG"); - GEL_WatchAdd("*0x695C,x","ePWM6 ETCLR"); - GEL_WatchAdd("*0x695D,x","ePWM6 ETFRC"); -} - - -/********************************************************************/ -/* Enhanced EQEP Registers */ -/********************************************************************/ -menuitem "Watch eQEP" - -hotmenu eQEP1_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6B00,x","eQEP1 QPOSCNT"); - GEL_WatchAdd("*(long *)0x6B02,x","eQEP1 QPOSINIT"); - GEL_WatchAdd("*(long *)0x6B04,x","eQEP1 QPOSMAX"); - GEL_WatchAdd("*(long *)0x6B06,x","eQEP1 QPOSCMP"); - GEL_WatchAdd("*(long *)0x6B08,x","eQEP1 QPOSILAT"); - GEL_WatchAdd("*(long *)0x6B0A,x","eQEP1 QPOSSLAT"); - GEL_WatchAdd("*(long *)0x6B0C,x","eQEP1 QPOSLAT"); - GEL_WatchAdd("*(long *)0x6B0E,x","eQEP1 QUTMR"); - GEL_WatchAdd("*(long *)0x6B10,x","eQEP1 QUPRD"); - GEL_WatchAdd("*0x6B12,x","eQEP1 QWDTMR"); - GEL_WatchAdd("*0x6B13,x","eQEP1 QWDPRD"); - GEL_WatchAdd("*0x6B14,x","eQEP1 QDECCTL"); - GEL_WatchAdd("*0x6B15,x","eQEP1 QEPCTL"); - GEL_WatchAdd("*0x6B16,x","eQEP1 QCAPCTL"); - GEL_WatchAdd("*0x6B17,x","eQEP1 QPOSCTL"); - GEL_WatchAdd("*0x6B18,x","eQEP1 QEINT"); - GEL_WatchAdd("*0x6B19,x","eQEP1 QFLG"); - GEL_WatchAdd("*0x6B1A,x","eQEP1 QCLR"); - GEL_WatchAdd("*0x6B1B,x","eQEP1 QFRC"); - GEL_WatchAdd("*0x6B1C,x","eQEP1 QEPSTS"); - GEL_WatchAdd("*0x6B1D,x","eQEP1 QCTMR"); - GEL_WatchAdd("*0x6B1E,x","eQEP1 QCPRD"); - GEL_WatchAdd("*0x6B1F,x","eQEP1 QCTMRLAT"); - GEL_WatchAdd("*0x6B20,x","eQEP1 QCPRDLAT"); -} -hotmenu eQEP2_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6B40,x","eQEP2 QPOSCNT"); - GEL_WatchAdd("*(long *)0x6B42,x","eQEP2 QPOSINIT"); - GEL_WatchAdd("*(long *)0x6B44,x","eQEP2 QPOSMAX"); - GEL_WatchAdd("*(long *)0x6B46,x","eQEP2 QPOSCMP"); - GEL_WatchAdd("*(long *)0x6B48,x","eQEP2 QPOSILAT"); - GEL_WatchAdd("*(long *)0x6B4A,x","eQEP2 QPOSSLAT"); - GEL_WatchAdd("*(long *)0x6B4C,x","eQEP2 QPOSLAT"); - GEL_WatchAdd("(long *)*0x6B4E,x","eQEP2 QUTMR"); - GEL_WatchAdd("*(long *)0x6B50,x","eQEP2 QUPRD"); - GEL_WatchAdd("*0x6B52,x","eQEP2 QWDTMR"); - GEL_WatchAdd("*0x6B53,x","eQEP2 QWDPRD"); - GEL_WatchAdd("*0x6B54,x","eQEP2 QDECCTL"); - GEL_WatchAdd("*0x6B55,x","eQEP2 QEPCTL"); - GEL_WatchAdd("*0x6B56,x","eQEP2 QCAPCTL"); - GEL_WatchAdd("*0x6B57,x","eQEP2 QPOSCTL"); - GEL_WatchAdd("*0x6B58,x","eQEP2 QEINT"); - GEL_WatchAdd("*0x6B59,x","eQEP2 QFLG"); - GEL_WatchAdd("*0x6B5A,x","eQEP2 QCLR"); - GEL_WatchAdd("*0x6B5B,x","eQEP2 QFRC"); - GEL_WatchAdd("*0x6B5C,x","eQEP2 QEPSTS"); - GEL_WatchAdd("*0x6B5D,x","eQEP2 QCTMR"); - GEL_WatchAdd("*0x6B5E,x","eQEP2 QCPRD"); - GEL_WatchAdd("*0x6B5F,x","eQEP2 QCTMRLAT"); - GEL_WatchAdd("*0x6B60,x","eQEP2 QCPRDLAT"); -} - - -/********************************************************************/ -/* External Interface Registers */ -/********************************************************************/ -menuitem "Watch External Interface Registers"; - -hotmenu All_External_Interface_Regs() -{ - GEL_WatchAdd("*(long *)0x0B20,x","XTIMING0"); - GEL_WatchAdd("*(long *)0x0B2C,x","XTIMING6"); - GEL_WatchAdd("*(long *)0x0B2E,x","XTIMING7"); - GEL_WatchAdd("*(long *)0x0B34,x","XINTCNF2"); - GEL_WatchAdd("*0x0B38,x","XBANK"); - GEL_WatchAdd("*0x0B3A,x","XREVISION"); - GEL_WatchAdd("*0x0B3D,x","XRESET"); -} - -/********************************************************************/ -/* External Interrupt Registers */ -/********************************************************************/ -menuitem "Watch External Interrupt Registers"; - -hotmenu All_XINT_Regs() -{ - GEL_WatchAdd("*0x7070,x","XINT1CR"); - GEL_WatchAdd("*0x7071,x","XINT2CR"); - GEL_WatchAdd("*0x7072,x","XINT3CR"); - GEL_WatchAdd("*0x7073,x","XINT4CR"); - GEL_WatchAdd("*0x7074,x","XINT5CR"); - GEL_WatchAdd("*0x7075,x","XINT6CR"); - GEL_WatchAdd("*0x7076,x","XINT7CR"); - GEL_WatchAdd("*0x7077,x","XNMICR"); - GEL_WatchAdd("*0x7078,x","XINT1CTR"); - GEL_WatchAdd("*0x7079,x","XINT2CTR"); - GEL_WatchAdd("*0x707F,x","XNMICTR"); -} -hotmenu XINT_Control_Regs() -{ - GEL_WatchAdd("*0x7070,x","XINT1CR"); - GEL_WatchAdd("*0x7071,x","XINT2CR"); - GEL_WatchAdd("*0x7072,x","XINT3CR"); - GEL_WatchAdd("*0x7073,x","XINT4CR"); - GEL_WatchAdd("*0x7074,x","XINT5CR"); - GEL_WatchAdd("*0x7075,x","XINT6CR"); - GEL_WatchAdd("*0x7076,x","XINT7CR"); - GEL_WatchAdd("*0x7077,x","XNMICR"); -} -hotmenu XINT_Counter_Regs() -{ - GEL_WatchAdd("*0x7078,x","XINT1CTR"); - GEL_WatchAdd("*0x7079,x","XINT2CTR"); - GEL_WatchAdd("*0x707F,x","XNMICTR"); -} - - -/********************************************************************/ -/* GPIO Registers */ -/********************************************************************/ -menuitem "Watch GPIO Registers"; - -hotmenu All_GPIO_CONTROL_Regs() -{ - GEL_WatchAdd("*(long *)0x6F80,x","GPACTRL"); - GEL_WatchAdd("*(long *)0x6F82,x","GPAQSEL1"); - GEL_WatchAdd("*(long *)0x6F84,x","GPAQSEL2"); - GEL_WatchAdd("*(long *)0x6F86,x","GPAMUX1"); - GEL_WatchAdd("*(long *)0x6F88,x","GPAMUX2"); - GEL_WatchAdd("*(long *)0x6F8A,x","GPADIR"); - GEL_WatchAdd("*(long *)0x6F8C,x","GPAPUD"); - - GEL_WatchAdd("*(long *)0x6F90,x","GPBCTRL"); - GEL_WatchAdd("*(long *)0x6F92,x","GPBQSEL1"); - GEL_WatchAdd("*(long *)0x6F94,x","GPBQSEL2"); - GEL_WatchAdd("*(long *)0x6F96,x","GPBMUX1"); - GEL_WatchAdd("*(long *)0x6F98,x","GPBMUX2"); - GEL_WatchAdd("*(long *)0x6F9A,x","GPBDIR"); - GEL_WatchAdd("*(long *)0x6F9C,x","GPBPUD"); - - GEL_WatchAdd("*(long *)0x6FA6,x","GPCMUX1"); - GEL_WatchAdd("*(long *)0x6FA8,x","GPCMUX2"); - GEL_WatchAdd("*(long *)0x6FAA,x","GPCDIR"); - GEL_WatchAdd("*(long *)0x6FAC,x","GPCPUD"); -} -hotmenu All_GPIO_DATA_Regs() -{ - GEL_WatchAdd("*(long *)0x6FC0,x","GPADAT"); - GEL_WatchAdd("*(long *)0x6FC2,x","GPASET"); - GEL_WatchAdd("*(long *)0x6FC4,x","GPACLEAR"); - GEL_WatchAdd("*(long *)0x6FC6,x","GPATOGGLE"); - - GEL_WatchAdd("*(long *)0x6FC8,x","GPBDAT"); - GEL_WatchAdd("*(long *)0x6FCA,x","GPBSET"); - GEL_WatchAdd("*(long *)0x6FCC,x","GPBCLEAR"); - GEL_WatchAdd("*(long *)0x6FCE,x","GPBTOGGLE"); - - GEL_WatchAdd("*(long *)0x6FD0,x","GPCDAT"); - GEL_WatchAdd("*(long *)0x6FD2,x","GPCSET"); - GEL_WatchAdd("*(long *)0x6FD4,x","GPCCLEAR"); - GEL_WatchAdd("*(long *)0x6FD6,x","GPCTOGGLE"); -} -hotmenu All_GPIO_INTERRUPT_Regs() -{ - GEL_WatchAdd("*0x6FE0,x","GPIOXINT1SEL"); - GEL_WatchAdd("*0x6FE1,x","GPIOXINT2SEL"); - GEL_WatchAdd("*0x6FE2,x","GPIOXNMISEL"); - GEL_WatchAdd("*0x6FE3,x","GPIOXINT3SEL"); - GEL_WatchAdd("*0x6FE4,x","GPIOXINT4SEL"); - GEL_WatchAdd("*0x6FE5,x","GPIOXINT5SEL"); - GEL_WatchAdd("*0x6FE6,x","GPIOXINT6SEL"); - GEL_WatchAdd("*0x6FE7,x","GPIOXINT7SEL"); - GEL_WatchAdd("*(long *)0x6FE8,x","GPIOLPMSEL"); -} -hotmenu All_GPA_Registers() -{ - GEL_WatchAdd("*(long *)0x6F80,x","GPACTRL"); - GEL_WatchAdd("*(long *)0x6F82,x","GPAQSEL1"); - GEL_WatchAdd("*(long *)0x6F84,x","GPAQSEL2"); - GEL_WatchAdd("*(long *)0x6F86,x","GPAMUX1"); - GEL_WatchAdd("*(long *)0x6F88,x","GPAMUX2"); - GEL_WatchAdd("*(long *)0x6F8A,x","GPADIR"); - GEL_WatchAdd("*(long *)0x6F8C,x","GPAPUD"); - - GEL_WatchAdd("*(long *)0x6FC0,x","GPADAT"); - GEL_WatchAdd("*(long *)0x6FC2,x","GPASET"); - GEL_WatchAdd("*(long *)0x6FC4,x","GPACLEAR"); - GEL_WatchAdd("*(long *)0x6FC6,x","GPATOGGLE"); -} -hotmenu All_GPB_Registers() -{ - GEL_WatchAdd("*(long *)0x6F90,x","GPBCTRL"); - GEL_WatchAdd("*(long *)0x6F92,x","GPBQSEL1"); - GEL_WatchAdd("*(long *)0x6F94,x","GPBQSEL2"); - GEL_WatchAdd("*(long *)0x6F96,x","GPBMUX1"); - GEL_WatchAdd("*(long *)0x6F98,x","GPBMUX2"); - GEL_WatchAdd("*(long *)0x6F9A,x","GPBDIR"); - GEL_WatchAdd("*(long *)0x6F9C,x","GPBPUD"); - - GEL_WatchAdd("*(long *)0x6FC8,x","GPBDAT"); - GEL_WatchAdd("*(long *)0x6FCA,x","GPBSET"); - GEL_WatchAdd("*(long *)0x6FCC,x","GPBCLEAR"); - GEL_WatchAdd("*(long *)0x6FCE,x","GPBTOGGLE"); -} -hotmenu All_GPC_Registers() -{ - GEL_WatchAdd("*(long *)0x6FA6,x","GPCMUX1"); - GEL_WatchAdd("*(long *)0x6FA8,x","GPCMUX2"); - GEL_WatchAdd("*(long *)0x6FAA,x","GPCDIR"); - GEL_WatchAdd("*(long *)0x6FAC,x","GPCPUD"); - - GEL_WatchAdd("*(long *)0x6FC8,x","GPBDAT"); - GEL_WatchAdd("*(long *)0x6FCA,x","GPBSET"); - GEL_WatchAdd("*(long *)0x6FCC,x","GPBCLEAR"); - GEL_WatchAdd("*(long *)0x6FCE,x","GPBTOGGLE"); - - GEL_WatchAdd("*(long *)0x6FD0,x","GPCDAT"); - GEL_WatchAdd("*(long *)0x6FD2,x","GPCSET"); - GEL_WatchAdd("*(long *)0x6FD4,x","GPCCLEAR"); - GEL_WatchAdd("*(long *)0x6FD6,x","GPCTOGGLE"); -} - - -/********************************************************************/ -/* Multichannel Serial Port Registers */ -/********************************************************************/ -menuitem "Watch McBSP Registers"; - -hotmenu All_McBSP_A_Regs() -{ - GEL_WatchAdd("*0x5000,x","McBSPA DRR2"); - GEL_WatchAdd("*0x5001,x","McBSPA DRR1"); - GEL_WatchAdd("*0x5002,x","McBSPA DXR2"); - GEL_WatchAdd("*0x5003,x","McBSPA DXR1"); - GEL_WatchAdd("*0x5004,x","McBSPA SPCR2"); - GEL_WatchAdd("*0x5005,x","McBSPA SPCR1"); - GEL_WatchAdd("*0x5006,x","McBSPA RCR2"); - GEL_WatchAdd("*0x5007,x","McBSPA RCR1"); - GEL_WatchAdd("*0x5008,x","McBSPA XCR2"); - GEL_WatchAdd("*0x5009,x","McBSPA XCR1"); - GEL_WatchAdd("*0x500A,x","McBSPA SRGR2"); - GEL_WatchAdd("*0x500B,x","McBSPA SRGR1"); - GEL_WatchAdd("*0x500C,x","McBSPA MCR2"); - GEL_WatchAdd("*0x500D,x","McBSPA MCR1"); - GEL_WatchAdd("*0x500E,x","McBSPA RCERA"); - GEL_WatchAdd("*0x500F,x","McBSPA RCERB"); - GEL_WatchAdd("*0x5010,x","McBSPA XCERA"); - GEL_WatchAdd("*0x5011,x","McBSPA XCERB"); - GEL_WatchAdd("*0x5012,x","McBSPA PCR1"); - GEL_WatchAdd("*0x5013,x","McBSPA RCERC"); - GEL_WatchAdd("*0x5014,x","McBSPA RCERD"); - GEL_WatchAdd("*0x5015,x","McBSPA XCERC"); - GEL_WatchAdd("*0x5016,x","McBSPA XCERD"); - GEL_WatchAdd("*0x5017,x","McBSPA RCERE"); - GEL_WatchAdd("*0x5018,x","McBSPA RCERF"); - GEL_WatchAdd("*0x5019,x","McBSPA XCERE"); - GEL_WatchAdd("*0x501A,x","McBSPA XCERF"); - GEL_WatchAdd("*0x501B,x","McBSPA RCERG"); - GEL_WatchAdd("*0x501C,x","McBSPA RCERH"); - GEL_WatchAdd("*0x501D,x","McBSPA XCERG"); - GEL_WatchAdd("*0x501E,x","McBSPA XCERH"); - GEL_WatchAdd("*0x5023,x","McBSPA MFFINT"); - GEL_WatchAdd("*0x503F,x","McBSPA Revision"); -} - -hotmenu All_McBSP_B_Regs() -{ - GEL_WatchAdd("*0x5040,x","McBSPB DRR2"); - GEL_WatchAdd("*0x5041,x","McBSPB DRR1"); - GEL_WatchAdd("*0x5042,x","McBSPB DXR2"); - GEL_WatchAdd("*0x5043,x","McBSPB DXR1"); - GEL_WatchAdd("*0x5044,x","McBSPB SPCR2"); - GEL_WatchAdd("*0x5045,x","McBSPB SPCR1"); - GEL_WatchAdd("*0x5046,x","McBSPB RCR2"); - GEL_WatchAdd("*0x5047,x","McBSPB RCR1"); - GEL_WatchAdd("*0x5048,x","McBSPB XCR2"); - GEL_WatchAdd("*0x5049,x","McBSPB XCR1"); - GEL_WatchAdd("*0x504A,x","McBSPB SRGR2"); - GEL_WatchAdd("*0x504B,x","McBSPB SRGR1"); - GEL_WatchAdd("*0x504C,x","McBSPB MCR2"); - GEL_WatchAdd("*0x504D,x","McBSPB MCR1"); - GEL_WatchAdd("*0x504E,x","McBSPB RCERA"); - GEL_WatchAdd("*0x504F,x","McBSPB RCERB"); - GEL_WatchAdd("*0x5050,x","McBSPB XCERA"); - GEL_WatchAdd("*0x5051,x","McBSPB XCERB"); - GEL_WatchAdd("*0x5052,x","McBSPB PCR1"); - GEL_WatchAdd("*0x5053,x","McBSPB RCERC"); - GEL_WatchAdd("*0x5054,x","McBSPB RCERD"); - GEL_WatchAdd("*0x5055,x","McBSPB XCERC"); - GEL_WatchAdd("*0x5056,x","McBSPB XCERD"); - GEL_WatchAdd("*0x5057,x","McBSPB RCERE"); - GEL_WatchAdd("*0x5058,x","McBSPB RCERF"); - GEL_WatchAdd("*0x5059,x","McBSPB XCERE"); - GEL_WatchAdd("*0x505A,x","McBSPB XCERF"); - GEL_WatchAdd("*0x505B,x","McBSPB RCERG"); - GEL_WatchAdd("*0x505C,x","McBSPB RCERH"); - GEL_WatchAdd("*0x505D,x","McBSPB XCERG"); - GEL_WatchAdd("*0x505E,x","McBSPB XCERH"); - GEL_WatchAdd("*0x5063,x","McBSPB MFFINT"); - GEL_WatchAdd("*0x506F,x","McBSPB Revision"); -} - - - -/********************************************************************/ -/* I2C Registers */ -/********************************************************************/ -menuitem "Watch I2C Registers"; - -hotmenu All_I2C_Regs() -{ - GEL_WatchAdd("*0x7900,x","I2COAR"); - GEL_WatchAdd("*0x7901,x","I2CIER"); - GEL_WatchAdd("*0x7902,x","I2CSTR"); - GEL_WatchAdd("*0x7903,x","I2CCLKL"); - GEL_WatchAdd("*0x7904,x","I2CCLKH"); - GEL_WatchAdd("*0x7905,x","I2CCNT"); - GEL_WatchAdd("*0x7906,x","I2CDRR"); - GEL_WatchAdd("*0x7907,x","I2CSAR"); - GEL_WatchAdd("*0x7908,x","I2CDXR"); - GEL_WatchAdd("*0x7909,x","I2CMDR"); - GEL_WatchAdd("*0x790A,x","I2CISRC"); - GEL_WatchAdd("*0x790C,x","I2CPSC"); - GEL_WatchAdd("*0x7920,x","I2CFFTX"); - GEL_WatchAdd("*0x7921,x","I2CFFRX"); -} - - -/********************************************************************/ -/* Peripheral Interrupt Expansion Registers */ -/********************************************************************/ -menuitem "Watch Peripheral Interrupt Expansion Registers"; - -hotmenu All_PIE_Regs() -{ - GEL_WatchAdd("*0x0CE0,x","PIECTRL"); - GEL_WatchAdd("*0x0CE1,x","PIEACK"); - GEL_WatchAdd("*0x0CE2,x","PIEIER1"); - GEL_WatchAdd("*0x0CE3,x","PIEIFR1"); - GEL_WatchAdd("*0x0CE4,x","PIEIER2"); - GEL_WatchAdd("*0x0CE5,x","PIEIFR2"); - GEL_WatchAdd("*0x0CE6,x","PIEIER3"); - GEL_WatchAdd("*0x0CE7,x","PIEIFR3"); - GEL_WatchAdd("*0x0CE8,x","PIEIER4"); - GEL_WatchAdd("*0x0CE9,x","PIEIFR4"); - GEL_WatchAdd("*0x0CEA,x","PIEIER5"); - GEL_WatchAdd("*0x0CEB,x","PIEIFR5"); - GEL_WatchAdd("*0x0CEC,x","PIEIER6"); - GEL_WatchAdd("*0x0CED,x","PIEIFR6"); - GEL_WatchAdd("*0x0CEE,x","PIEIER7"); - GEL_WatchAdd("*0x0CEF,x","PIEIFR7"); - GEL_WatchAdd("*0x0CF0,x","PIEIER8"); - GEL_WatchAdd("*0x0CF1,x","PIEIFR8"); - GEL_WatchAdd("*0x0CF2,x","PIEIER9"); - GEL_WatchAdd("*0x0CF3,x","PIEIFR9"); - GEL_WatchAdd("*0x0CF4,x","PIEIER10"); - GEL_WatchAdd("*0x0CF5,x","PIEIFR10"); - GEL_WatchAdd("*0x0CF6,x","PIEIER11"); - GEL_WatchAdd("*0x0CF7,x","PIEIFR11"); - GEL_WatchAdd("*0x0CF8,x","PIEIER12"); - GEL_WatchAdd("*0x0CF9,x","PIEIFR12"); -} -hotmenu PIECTRL() -{ - GEL_WatchAdd("*0x0CE0,x","PIECTRL"); -} -hotmenu PIEACK() -{ - GEL_WatchAdd("*0x0CE1,x","PIEACK"); -} -hotmenu PIEIER1_and_PIEIFR1() -{ - GEL_WatchAdd("*0x0CE2,x","PIEIER1"); - GEL_WatchAdd("*0x0CE3,x","PIEIFR1"); -} -hotmenu PIEIER2_and_PIEIFR2() -{ - GEL_WatchAdd("*0x0CE4,x","PIEIER2"); - GEL_WatchAdd("*0x0CE5,x","PIEIFR2"); -} -hotmenu PIEIER3_and_PIEIFR3() -{ - GEL_WatchAdd("*0x0CE6,x","PIEIER3"); - GEL_WatchAdd("*0x0CE7,x","PIEIFR3"); -} -hotmenu PIEIER4_and_PIEIFR4() -{ - GEL_WatchAdd("*0x0CE8,x","PIEIER4"); - GEL_WatchAdd("*0x0CE9,x","PIEIFR4"); -} -hotmenu PIEIER5_and_PIEIFR5() -{ - GEL_WatchAdd("*0x0CEA,x","PIEIER5"); - GEL_WatchAdd("*0x0CEB,x","PIEIFR5"); -} -hotmenu PIEIER6_and_PIEIFR6() -{ - GEL_WatchAdd("*0x0CEC,x","PIEIER6"); - GEL_WatchAdd("*0x0CED,x","PIEIFR6"); -} -hotmenu PIEIER7_and_PIEIFR7() -{ - GEL_WatchAdd("*0x0CEE,x","PIEIER7"); - GEL_WatchAdd("*0x0CEF,x","PIEIFR7"); -} -hotmenu PIEIER8_and_PIEIFR8() -{ - GEL_WatchAdd("*0x0CF0,x","PIEIER8"); - GEL_WatchAdd("*0x0CF1,x","PIEIFR8"); -} -hotmenu PIEIER9_and_PIEIFR9() -{ - GEL_WatchAdd("*0x0CF2,x","PIEIER9"); - GEL_WatchAdd("*0x0CF3,x","PIEIFR9"); -} -hotmenu PIEIFR10_and_PIEIFR10() -{ - GEL_WatchAdd("*0x0CF4,x","PIEIER10"); - GEL_WatchAdd("*0x0CF5,x","PIEIFR10"); -} -hotmenu PIEIER11_and_PIEIFR11() -{ - GEL_WatchAdd("*0x0CF6,x","PIEIER11"); - GEL_WatchAdd("*0x0CF7,x","PIEIFR11"); -} -hotmenu PIEIER12_and_PIEIFR12() -{ - GEL_WatchAdd("*0x0CF8,x","PIEIER12"); - GEL_WatchAdd("*0x0CF9,x","PIEIFR12"); -} - - -/********************************************************************/ -/* Serial Communication Interface Registers */ -/********************************************************************/ -menuitem "Watch SCI Registers"; - -hotmenu SCI_A_All_Regs() -{ - GEL_WatchAdd("*0x7050,x","SCICCRA"); - GEL_WatchAdd("*0x7051,x","SCICTL1A"); - GEL_WatchAdd("*0x7052,x","SCIHBAUDA"); - GEL_WatchAdd("*0x7053,x","SCILBAUDA"); - GEL_WatchAdd("*0x7054,x","SCICTL2A"); - GEL_WatchAdd("*0x7055,x","SCIRXSTA"); - GEL_WatchAdd("*0x7056,x","SCIRXEMUA"); - GEL_WatchAdd("*0x7057,x","SCIRXBUFA"); - GEL_WatchAdd("*0x7059,x","SCITXBUFA"); - GEL_WatchAdd("*0x705A,x","SCIFFTXA"); - GEL_WatchAdd("*0x705B,x","SCIFFRXA"); - GEL_WatchAdd("*0x705C,x","SCIFFCTA"); - GEL_WatchAdd("*0x705F,x","SCIPRIA"); -} -hotmenu SCI_A_FIFO_Registers() -{ - GEL_WatchAdd("*0x705A,x","SCIFFTXA"); - GEL_WatchAdd("*0x705B,x","SCIFFRXA"); - GEL_WatchAdd("*0x705C,x","SCIFFCTA"); -} -hotmenu SCI_B_All_Regs() -{ - GEL_WatchAdd("*0x7750,x","SCICCRB"); - GEL_WatchAdd("*0x7751,x","SCICTL1B"); - GEL_WatchAdd("*0x7752,x","SCIHBAUDB"); - GEL_WatchAdd("*0x7753,x","SCILBAUDB"); - GEL_WatchAdd("*0x7754,x","SCICTL2B"); - GEL_WatchAdd("*0x7755,x","SCIRXSTB"); - GEL_WatchAdd("*0x7756,x","SCIRXEMUB"); - GEL_WatchAdd("*0x7757,x","SCIRXBUFB"); - GEL_WatchAdd("*0x7759,x","SCITXBUFB"); - GEL_WatchAdd("*0x775A,x","SCIFFTXB"); - GEL_WatchAdd("*0x775B,x","SCIFFRXB"); - GEL_WatchAdd("*0x775C,x","SCIFFCTB"); - GEL_WatchAdd("*0x775F,x","SCIPRIB"); -} -hotmenu SCI_B_FIFO_Registers() -{ - GEL_WatchAdd("*0x775A,x","SCIFFTXB"); - GEL_WatchAdd("*0x775B,x","SCIFFRXB"); - GEL_WatchAdd("*0x775C,x","SCIFFCTB"); -} -hotmenu SCI_C_All_Regs() -{ - GEL_WatchAdd("*0x7770,x","SCICCRC"); - GEL_WatchAdd("*0x7771,x","SCICTL1C"); - GEL_WatchAdd("*0x7772,x","SCIHBAUDC"); - GEL_WatchAdd("*0x7773,x","SCILBAUDC"); - GEL_WatchAdd("*0x7774,x","SCICTL2C"); - GEL_WatchAdd("*0x7775,x","SCIRXSTC"); - GEL_WatchAdd("*0x7776,x","SCIRXEMUC"); - GEL_WatchAdd("*0x7777,x","SCIRXBUFC"); - GEL_WatchAdd("*0x7779,x","SCITXBUFC"); - GEL_WatchAdd("*0x777A,x","SCIFFTXC"); - GEL_WatchAdd("*0x777B,x","SCIFFRXC"); - GEL_WatchAdd("*0x777C,x","SCIFFCTC"); - GEL_WatchAdd("*0x777F,x","SCIPRIC"); -} -hotmenu SCI_C_FIFO_Registers() -{ - GEL_WatchAdd("*0x777A,x","SCIFFTXC"); - GEL_WatchAdd("*0x777B,x","SCIFFRXC"); - GEL_WatchAdd("*0x777C,x","SCIFFCTC"); -} - - -/********************************************************************/ -/* Serial Peripheral Interface Registers */ -/********************************************************************/ -menuitem "Watch SPI Registers"; - -hotmenu SPI_A_All_Regs() -{ - GEL_WatchAdd("*0x7040,x","SPIA SPICCR"); - GEL_WatchAdd("*0x7041,x","SPIA SPICTL"); - GEL_WatchAdd("*0x7042,x","SPIA SPIST"); - GEL_WatchAdd("*0x7044,x","SPIA SPIBRR"); - GEL_WatchAdd("*0x7046,x","SPIA SPIEMU"); - GEL_WatchAdd("*0x7047,x","SPIA SPIRXBUF"); - GEL_WatchAdd("*0x7048,x","SPIA SPITXBUF"); - GEL_WatchAdd("*0x7049,x","SPIA SPIDAT"); - GEL_WatchAdd("*0x704A,x","SPIA SPIFFTX"); - GEL_WatchAdd("*0x704B,x","SPIA SPIFFRX"); - GEL_WatchAdd("*0x704C,x","SPIA SPIFFCT"); - GEL_WatchAdd("*0x704F,x","SPIA SPIPRI"); -} -hotmenu SPI_A_FIFO_Registers() -{ - GEL_WatchAdd("*0x704A,x","SPIA SPIFFTX"); - GEL_WatchAdd("*0x704B,x","SPIA SPIFFRX"); - GEL_WatchAdd("*0x704C,x","SPIA SPIFFCT"); -} - - -/********************************************************************/ -/* Watchdog Timer Registers */ -/********************************************************************/ -menuitem "Watch Watchdog Timer Registers"; - -hotmenu All_Watchdog_Regs() -{ - GEL_WatchAdd("*0x7023,x","WDCNTR"); - GEL_WatchAdd("*0x7025,x","WDKEY"); - GEL_WatchAdd("*0x7029,x","WDCR"); - GEL_WatchAdd("*0x7022,x","SCSR"); -} - -/********************************************************************/ -/*** End of file ***/ diff --git a/Source/External/v120/DSP2833x_common/gel/f28332.gel b/Source/External/v120/DSP2833x_common/gel/f28332.gel deleted file mode 100644 index 9a9d2fb..0000000 --- a/Source/External/v120/DSP2833x_common/gel/f28332.gel +++ /dev/null @@ -1,2845 +0,0 @@ -/********************************************************************/ -/* f28332.gel */ -/* Version 3.30.2 */ -/* */ -/* This GEL file is to be used with the TMS320F28332 DSP. */ -/* Changes may be required to support specific hardware designs. */ -/* */ -/* Code Composer Studio supports six reserved GEL functions that */ -/* automatically get executed if they are defined. They are: */ -/* */ -/* StartUp() - Executed whenever CCS is invoked */ -/* OnReset() - Executed after Debug->Reset CPU */ -/* OnRestart() - Executed after Debug->Restart */ -/* OnPreFileLoaded() - Executed before File->Load Program */ -/* OnFileLoaded() - Executed after File->Load Program */ -/* OnTargetConnect() - Executed after Debug->Connect */ -/* */ -/********************************************************************/ - -StartUp() -{ - -/* The next line automatically loads the .gel file that comes */ -/* with the DSP2833x Peripheral Header Files download. To use, */ -/* uncomment, and adjust the directory path as needed. */ -// GEL_LoadGel("c:\\CCStudio_v3.3\\cc\\gel\\DSP2833x_Peripheral.gel"); - -} - -OnReset(int nErrorCode) -{ - C28x_Mode(); - Unlock_CSM(); - ADC_Cal(); -} - -OnRestart(int nErrorCode) -{ -/* CCS will call OnRestart() when you do a Debug->Restart and */ -/* after you load a new file. Between running interrupt based */ -/* programs, this function will clear interrupts and help keep */ -/* the processor from going off into invalid memory. */ - C28x_Mode(); - IER = 0; - IFR = 0; - ADC_Cal(); -} - -int TxtOutCtl=0; -OnPreFileLoaded() -{ - XINTF_Enable(); - if (TxtOutCtl==0) - { - GEL_TextOut("\nNOTES:\nGel will enable XINTFx16 during Debug only.\nEnable XINTF in code prior to use."); - GEL_TextOut("\nFPU Registers can be found via GEL->Watch FPU Registers."); - TxtOutCtl=1; - } -} - -OnFileLoaded(int nErrorCode, int bSymbolsOnly) -{ - ADC_Cal(); -} - -OnTargetConnect() -{ - C28x_Mode(); - F28332_Memory_Map(); /* Initialize the CCS memory map */ - -/* Check to see if CCS has been started-up with the DSP already */ -/* running in real-time mode. The user can add whatever */ -/* custom initialization stuff they want to each case. */ - - if (GEL_IsInRealtimeMode()) /* Do real-time mode target initialization */ - { - - } - else /* Do stop-mode target initialization */ - { - GEL_Reset(); /* Reset DSP */ - } - -} - - -/********************************************************************/ -/* These functions are launched by the GEL_Toolbar button plugin */ -/********************************************************************/ -GEL_Toolbar1() -{ - Run_Realtime_with_Reset(); -} -GEL_Toolbar2() -{ - Run_Realtime_with_Restart(); -} -GEL_Toolbar3() -{ - Full_Halt(); -} -GEL_Toolbar4() -{ - Full_Halt_with_Reset(); -} - -int GEL_Toolbar5_Toggle = 0; -GEL_Toolbar5() -{ - if(GEL_Toolbar5_Toggle == 0) - { - GEL_Toolbar5_Toggle = 1; - GEL_OpenWindow("GEL_Buttons",1,4); - GEL_TextOut("Button 1: Run_Realtime_with_Reset()","GEL_Buttons",0,0); - GEL_TextOut("Button 2: Run_Realtime_with_Restart()","GEL_Buttons",0,1); - GEL_TextOut("Button 3: Full_Halt()", "GEL_Buttons",0,2); - GEL_TextOut("Button 4: Full_Halt_with_Reset()","GEL_Buttons",0,3); - } - else - { - GEL_Toolbar5_Toggle = 0; - GEL_CloseWindow("GEL_Buttons"); - } -} - - -/********************************************************************/ -/* These functions are useful to engage/dis-enagage realtime */ -/* emulation mode during debug. They save the user from having to */ -/* manually perform these steps in CCS. */ -/********************************************************************/ -menuitem "Realtime Emulation Control"; - -hotmenu Run_Realtime_with_Reset() -{ - GEL_Reset(); /* Reset the DSP */ - ST1 = ST1 & 0xFFFD; /* clear DBGM bit in ST1 */ - GEL_EnableRealtime(); /* Enable Realtime mode */ - GEL_Run(); /* Run the DSP */ -} -hotmenu Run_Realtime_with_Restart() -{ - GEL_Restart(); /* Reset the DSP */ - ST1 = ST1 & 0xFFFD; /* clear DBGM bit in ST1 */ - GEL_EnableRealtime(); /* Enable Realtime mode */ - GEL_Run(); /* Run the DSP */ -} -hotmenu Full_Halt() -{ - GEL_DisableRealtime(); /* Disable Realtime mode */ - GEL_Halt(); /* Halt the DSP */ -} -hotmenu Full_Halt_with_Reset() -{ - GEL_DisableRealtime(); /* Disable Realtime mode */ - GEL_Halt(); /* Halt the DSP */ - GEL_Reset(); /* Reset the DSP */ -} - - -/********************************************************************/ -/* F28332 Memory Map */ -/* */ -/* Note: M0M1MAP and VMAP signals tied high on F28332 core */ -/* */ -/* 0x000000 - 0x0003ff M0 SARAM (Prog and Data) */ -/* 0x000400 - 0x0007ff M1 SARAM (Prog and Data) */ -/* 0x000800 - 0x001fff Peripheral Frame0 (PF0) (Data only) */ -/* 0x004000 - 0x004fff XINTF Zone 0 (Prog and Data) */ -/* 0x005000 - 0x005fff Peripheral Frame3 (PF3) (Data only) */ -/* 0x006000 - 0x006fff Peripheral Frame1 (PF1) (Data only) */ -/* 0x007000 - 0x007fff Peripheral Frame2 (PF2) (Data only) */ -/* 0x008000 - 0x008fff L0 SARAM (Prog and Data) */ -/* 0x009000 - 0x009fff L1 SARAM (Prog and Data) */ -/* 0x00A000 - 0x00Afff L2 SARAM (Prog and Data) */ -/* 0x00B000 - 0x00Bfff L3 SARAM (Prog and Data) */ -/* 0x00C000 - 0x00Cfff L4 SARAM (Prog and Data) */ -/* 0x00D000 - 0x00Dfff L5 SARAM (Prog and Data) */ -/* 0x100000 - 0x1fffff XINTF Zone 6 (Prog and Data) */ -/* 0x200000 - 0x2fffff XINTF Zone 7 (Prog and Data) */ -/* 0x330000 - 0x33ffff Flash (Prog and Data) */ -/* 0x380080 - 0x380088 ADC_cal function (Prog and Data) */ -/* 0x380090 - 0x380090 PARTID value (Prog and Data) */ -/* 0x380400 - 0x3807ff OTP (Prog and Data) */ -/* 0x3f8000 - 0x3f8fff L0 SARAM (Prog and Data) */ -/* 0x3f9000 - 0x3f9fff L1 SARAM (Prog and Data) */ -/* 0x3fA000 - 0x3fAfff L2 SARAM (Prog and Data) */ -/* 0x3fB000 - 0x3fBfff L3 SARAM (Prog and Data) */ -/* 0x3fe000 - 0x3fffff BOOT ROM (Prog and Data) */ -/********************************************************************/ -menuitem "Initialize Memory Map"; - -hotmenu F28332_Memory_Map() -{ - GEL_MapReset(); - GEL_MapOn(); - - /* Program memory map */ - GEL_MapAdd(0x0,0,0x400,1,1); /* M0 SARAM */ - GEL_MapAdd(0x400,0,0x400,1,1); /* M1 SARAM */ - GEL_MapAdd(0x4000,0,0x1000,1,1); /* Zone 0 */ - GEL_MapAdd(0x8000,0,0x1000,1,1); /* L0 SARAM */ - GEL_MapAdd(0x9000,0,0x1000,1,1); /* L1 SARAM */ - GEL_MapAdd(0xA000,0,0x1000,1,1); /* L2 SARAM */ - GEL_MapAdd(0xB000,0,0x1000,1,1); /* L3 SARAM */ - GEL_MapAdd(0xC000,0,0x1000,1,1); /* L4 SARAM */ - GEL_MapAdd(0xD000,0,0x1000,1,1); /* L5 SARAM */ - GEL_MapAdd(0x100000,0,0x100000,1,1); /* Zone 6 */ - GEL_MapAdd(0x200000,0,0x100000,1,1); /* Zone 7 */ - GEL_MapAdd(0x330000,0,0x10000,1,0); /* FLASH */ - GEL_MapAdd(0x380080,0,0x00009,1,0); /* ADC_cal function*/ - GEL_MapAdd(0x380090,0,0x00001,1,0); /* PARTID value */ - GEL_MapAdd(0x380400,0,0x00400,1,0); /* OTP */ - GEL_MapAdd(0x3f8000,0,0x1000,1,1); /* L0 SARAM Mirror */ - GEL_MapAdd(0x3f9000,0,0x1000,1,1); /* L1 SARAM Mirror */ - GEL_MapAdd(0x3fA000,0,0x1000,1,1); /* L2 SARAM Mirror */ - GEL_MapAdd(0x3fb000,0,0x1000,1,1); /* L3 SARAM Mirror */ - GEL_MapAdd(0x3fe000,0,0x2000,1,0); /* BOOT ROM */ - - /* Data memory map */ - GEL_MapAdd(0x000,1,0x400,1,1); /* M0 SARAM */ - GEL_MapAdd(0x400,1,0x400,1,1); /* M1 SARAM */ - GEL_MapAdd(0x800,1,0x1800,1,1); /* PF0 */ - GEL_MapAdd(0x4000,1,0x1000,1,1); /* Zone 0 */ - GEL_MapAdd(0x5000,1,0x1000,1,1); /* PF3 */ - GEL_MapAdd(0x6000,1,0x1000,1,1); /* PF1 */ - GEL_MapAddStr(0x7000,1,0x1000,"R|W|AS2",0); /* PF2 */ - GEL_MapAdd(0x8000,1,0x1000,1,1); /* L0 SARAM */ - GEL_MapAdd(0x9000,1,0x1000,1,1); /* L1 SARAM */ - GEL_MapAdd(0xA000,1,0x1000,1,1); /* L2 SARAM */ - GEL_MapAdd(0xB000,1,0x1000,1,1); /* L3 SARAM */ - GEL_MapAdd(0xC000,1,0x1000,1,1); /* L4 SARAM */ - GEL_MapAdd(0xD000,1,0x1000,1,1); /* L5 SARAM */ - GEL_MapAdd(0x100000,1,0x100000,1,1); /* Zone 6 */ - GEL_MapAdd(0x200000,1,0x100000,1,1); /* Zone 7 */ - GEL_MapAdd(0x330000,1,0x10000,1,0); /* FLASH */ - GEL_MapAdd(0x380080,1,0x00009,1,0); /* ADC_cal function*/ - GEL_MapAdd(0x380090,1,0x00001,1,0); /* PARTID value */ - GEL_MapAdd(0x380400,1,0x00400,1,0); /* OTP */ - GEL_MapAdd(0x3f8000,1,0x1000,1,1); /* L0 SARAM Mirror */ - GEL_MapAdd(0x3f9000,1,0x1000,1,1); /* L1 SARAM Mirror */ - GEL_MapAdd(0x3fA000,1,0x1000,1,1); /* L2 SARAM Mirror */ - GEL_MapAdd(0x3fb000,1,0x1000,1,1); /* L3 SARAM Mirror */ - GEL_MapAdd(0x3fe000,1,0x2000,1,0); /* BOOT ROM */ -} - - -/********************************************************************/ -/* The ESTOP0 fill functions are useful for debug. They fill the */ -/* RAM with software breakpoints that will trap runaway code. */ -/********************************************************************/ -hotmenu Fill_F28332_RAM_with_ESTOP0() -{ - GEL_MemoryFill(0x000000,1,0x000800,0x7625); /* Fill M0/M1 */ - GEL_MemoryFill(0x008000,1,0x002000,0x7625); /* Fill L0/L1 */ - GEL_MemoryFill(0x00A000,1,0x002000,0x7625); /* Fill L2/L3 */ - GEL_MemoryFill(0x00C000,1,0x002000,0x7625); /* Fill L4/L5 */ -} - - -/********************************************************************/ -menuitem "Watchdog"; -hotmenu Disable_WD() -{ - *0x7029 = *0x7029 | 0x0068; /* Set the WDDIS bit */ - *0x7025 = 0x0055; /* Service the WD */ - *0x7025 = 0x00AA; /* once to be safe. */ - GEL_TextOut("\nWatchdog Timer Disabled"); -} - - -/********************************************************************/ -menuitem "Code Security Module" -hotmenu Unlock_CSM() -{ - /* Perform dummy reads of the password locations */ - XAR0 = *0x33FFF8; - XAR0 = *0x33FFF9; - XAR0 = *0x33FFFA; - XAR0 = *0x33FFFB; - XAR0 = *0x33FFFC; - XAR0 = *0x33FFFD; - XAR0 = *0x33FFFE; - XAR0 = *0x33FFFF; - - /* Write passwords to the KEY registers. 0xFFFF's are dummy passwords. - User should replace them with the correct password for their DSP */ - *0xAE0 = 0xFFFF; - *0xAE1 = 0xFFFF; - *0xAE2 = 0xFFFF; - *0xAE3 = 0xFFFF; - *0xAE4 = 0xFFFF; - *0xAE5 = 0xFFFF; - *0xAE6 = 0xFFFF; - *0xAE7 = 0xFFFF; -} - - -/********************************************************************/ -menuitem "Addressing Modes"; -hotmenu C28x_Mode() -{ - ST1 = ST1 & (~0x0100); /* AMODE = 0 */ - ST1 = ST1 | 0x0200; /* OBJMODE = 1 */ -} -hotmenu C24x_Mode() -{ - ST1 = ST1 | 0x0100; /* AMODE = 1 */ - ST1 = ST1 | 0x0200; /* OBJMODE = 1 */ -} -hotmenu C27x_Mode() -{ - ST1 = ST1 & (~0x0100); /* AMODE = 0 */ - ST1 = ST1 & (~0x0200); /* OBJMODE = 0 */ -} - - -/********************************************************************/ -/* PLL Ratios */ -/* */ -/* The following table describes the PLL clocking ratios (0..10) */ -/* */ -/* Ratio CLKIN Description */ -/* ----- -------------- ------------ */ -/* 0 OSCCLK/2 PLL bypassed */ -/* 1 (OSCCLK * 1)/2 10 Mhz for 20 Mhz CLKIN */ -/* 2 (OSCCLK * 2)/2 20 Mhz for 20 Mhz CLKIN */ -/* 3 (OSCCLK * 3)/2 30 Mhz for 20 Mhz CLKIN */ -/* 4 (OSCCLK * 4)/2 40 Mhz for 20 Mhz CLKIN */ -/* 5 (OSCCLK * 5)/2 50 Mhz for 20 Mhz CLKIN */ -/* 6 (OSCCLK * 6)/2 60 Mhz for 20 Mhz CLKIN */ -/* 7 (OSCCLK * 7)/2 70 Mhz for 20 Mhz CLKIN */ -/* 8 (OSCCLK * 8)/2 80 Mhz for 20 Mhz CLKIN */ -/* 9 (OSCCLK * 9)/2 90 Mhz for 20 Mhz CLKIN */ -/* 10 (OSCCLK * 10)/2 100 Mhz for 20 Mhz CLKIN */ -/********************************************************************/ -menuitem "Set PLL Ratio"; - -hotmenu Bypass() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 0; /* CLKIN = OSCCLK/2, PLL is bypassed */ - PLL_Wait(); -} -hotmenu OSCCLK_x1_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 1; /* CLKIN = (OSCCLK * 1)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x2_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 2; /* CLKIN = (OSCCLK * 2)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x3_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 3; /* CLKIN = (OSCCLK * 3)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x4_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 4; /* CLKIN = (OSCCLK * 4)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x5_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 5; /* CLKIN = (OSCCLK * 5)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x6_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 6; /* CLKIN = (OSCCLK * 6)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x7_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 7; /* CLKIN = (OSCCLK * 7)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x8_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 8; /* CLKIN = (OSCCLK * 8)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x9_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 9; /* CLKIN = (OSCCLK * 9)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x10_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 10; /* CLKIN = (OSCCLK * 10)/2 */ - PLL_Wait(); -} -// hotmenu OSCCLK_x1_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 1; /* CLKIN = (OSCCLK * 1)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x2_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 2; /* CLKIN = (OSCCLK * 2)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x3_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 3; /* CLKIN = (OSCCLK * 3)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x4_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 4; /* CLKIN = (OSCCLK * 4)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x5_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 5; /* CLKIN = (OSCCLK * 5)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x6_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 6; /* CLKIN = (OSCCLK * 6)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x7_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 7; /* CLKIN = (OSCCLK * 7)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x8_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 8; /* CLKIN = (OSCCLK * 8)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x9_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 9; /* CLKIN = (OSCCLK * 9)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x10_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 10; /* CLKIN = (OSCCLK * 10)/1 */ -// PLL_Wait(); -// } - - - -/********************************************************************/ -/* For F2833x devices, DIVSEL is 1/4 by default. Switch it to 1/2 */ -/********************************************************************/ - -DIVSEL_div2() -{ - int temp; - int PLLSTS; - - PLLSTS = 0x7011; - - temp = *PLLSTS; - temp &= 0xFE7F; /* Clear bits 7 & 8 */ - temp |= 2 << 7; /* Set bit 8 */ - *PLLSTS = temp; /* Switch to 1/2 */ -} - - - -/********************************************************************/ -/* For F2833x devices, DIVSEL is 1/4 by default. Switch it to /1 */ -/********************************************************************/ - -DIVSEL_div1() -{ - int temp; - int PLLSTS; - - PLLSTS = 0x7011; - - DIVSEL_div2(); /* First switch DIVSEL to 1/2 and wait */ - wait(); - temp = *PLLSTS; - temp |= 3 << 7; /* Set bits 7 & 8 */ - *PLLSTS = temp; /* Switch to 1/2 */ -} - -wait() -{ - int delay = 0; - for (delay = 0; delay <= 5; delay ++) - {} -} - -/********************************************************************/ -/* For F2833x devices, check the PLLOCKS bit for PLL lock. */ -/********************************************************************/ -PLL_Wait() -{ - int PLLSTS; - int delay = 0; - - PLLSTS = 0x7011; - - - while ( ( (unsigned int)*PLLSTS & 0x0001) != 0x0001) - { - delay++; - GEL_TextOut("Waiting for PLL Lock, PLLSTS = %x\n",,,,,(unsigned int)*PLLSTS); - } - GEL_TextOut("\nPLL lock complete, PLLSTS = %x\n",,,,,(unsigned int)*PLLSTS); -} - - -/********************************************************************/ -/* Load the ADC Calibration values from TI OTP */ -/********************************************************************/ -menuitem "ADC Calibration" -hotmenu ADC_Cal() -{ - /* Perform dummy reads of the password locations */ - XAR0 = *0x33FFF8; - XAR0 = *0x33FFF9; - XAR0 = *0x33FFFA; - XAR0 = *0x33FFFB; - XAR0 = *0x33FFFC; - XAR0 = *0x33FFFD; - XAR0 = *0x33FFFE; - XAR0 = *0x33FFFF; - - if(((*0x0AEF) & 0x0001) == 0) - { - XAR0 = *0x701C; - *0x701C |= 0x0008; - *0x711C = *0x380083; - *0x711D = *0x380085; - *0x701C = XAR0; - XAR0 = 0; - - } - else - { - GEL_TextOut("\nADC Calibration not complete, device is secure"); - } -} - -/********************************************************************/ -/* Enable the XINTF and configure GPIOs for XINTF function */ -/********************************************************************/ -menuitem "XINTF Enable" -hotmenu XINTF_Enable() -{ - - /* enable XINTF clock (XTIMCLK) */ - - *0x7020 = 0x3700; - /* GPBMUX1: XA0-XA7, XA16, XZCS0, */ - /* XZCS7, XREADY, XRNW, XWE0 */ - /* GPAMUX2: XA17-XA19, XZCS6 */ - /* GPCMUX2: XA8-XA15 */ - /* GPCMUX1: XD0-XD15 */ - *(unsigned long *)0x6F96 = 0xFFFFFFC0; /* GPBMUX1 */ - *(unsigned long *)0x6f88 = 0xFF000000; /* GPAMUX2 */ - *(unsigned long *)0x6FA8 = 0x0000AAAA; /* GPCMUX2 */ - *(unsigned long *)0x6FA6 = 0xAAAAAAAA; /* GPCMUX1 */ - - /* Uncomment for x32 data bus */ - /* GPBMUX2: XD16-XD31 */ -// *(unsigned long *)0x6F98 = 0xFFFFFFFF; /* GPBMUX2 */ - - /* Zone timing. - /* Each zone can be configured seperately */ - /* Uncomment the x16 or the x32 timing */ - /* depending on the data bus width for */ - /* the zone */ - - /* x16 Timing */ - *(unsigned long *)0x0B20 = 0x0043FFFF; /* Zone0 */ - *(unsigned long *)0x0B2C = 0x0043FFFF; /* Zone6 */ - *(unsigned long *)0x0B2E = 0x0043FFFF; /* Zone7 */ - - /* x32 Timing: -// *(unsigned long *)0x0B20 = 0x0041FFFF; /* x32 */ -// *(unsigned long *)0x0B2C = 0x0041FFFF; /* x32 */ -// *(unsigned long *)0x0B2E = 0x0041FFFF; /* x32 */ - -} - -/********************************************************************/ -/* The below are used to display the symbolic names of the F28332 */ -/* memory mapped registers in the watch window. To view these */ -/* registers, click on the GEL menu button in Code Composer Studio, */ -/* then select which registers or groups of registers you want to */ -/* view. They will appear in the watch window under the Watch1 tab. */ -/********************************************************************/ - -/* Add a space line to the GEL menu */ -menuitem "______________________________________"; -hotmenu __() {} - -/********************************************************************/ -/* A/D Converter Registers */ -/********************************************************************/ -menuitem "Watch ADC Registers"; - -hotmenu All_ADC_Regs() -{ - GEL_WatchAdd("*0x7100,x","ADCTRL1"); - GEL_WatchAdd("*0x7101,x","ADCTRL2"); - GEL_WatchAdd("*0x7102,x","ADCMAXCONV"); - GEL_WatchAdd("*0x7103,x","ADCCHSELSEQ1"); - GEL_WatchAdd("*0x7104,x","ADCCHSELSEQ2"); - GEL_WatchAdd("*0x7105,x","ADCCHSELSEQ3"); - GEL_WatchAdd("*0x7106,x","ADCCHSELSEQ4"); - GEL_WatchAdd("*0x7107,x","ADCASEQSR"); - GEL_WatchAdd("*0x7108,x","ADCRESULT0"); - GEL_WatchAdd("*0x7109,x","ADCRESULT1"); - GEL_WatchAdd("*0x710A,x","ADCRESULT2"); - GEL_WatchAdd("*0x710B,x","ADCRESULT3"); - GEL_WatchAdd("*0x710C,x","ADCRESULT4"); - GEL_WatchAdd("*0x710D,x","ADCRESULT5"); - GEL_WatchAdd("*0x710E,x","ADCRESULT6"); - GEL_WatchAdd("*0x710F,x","ADCRESULT7"); - GEL_WatchAdd("*0x7110,x","ADCRESULT8"); - GEL_WatchAdd("*0x7111,x","ADCRESULT9"); - GEL_WatchAdd("*0x7112,x","ADCRESULT10"); - GEL_WatchAdd("*0x7113,x","ADCRESULT11"); - GEL_WatchAdd("*0x7114,x","ADCRESULT12"); - GEL_WatchAdd("*0x7115,x","ADCRESULT13"); - GEL_WatchAdd("*0x7116,x","ADCRESULT14"); - GEL_WatchAdd("*0x7117,x","ADCRESULT15"); - GEL_WatchAdd("*0x7118,x","ADCTRL3"); - GEL_WatchAdd("*0x7119,x","ADCST"); - GEL_WatchAdd("*0x711C,x","ADCREFSEL"); - GEL_WatchAdd("*0x711D,x","ADCOFFTRIM"); - - GEL_WatchAdd("*0x0B00,x","ADCRESULT0 Mirror"); - GEL_WatchAdd("*0x0B01,x","ADCRESULT1 Mirror"); - GEL_WatchAdd("*0x0B02,x","ADCRESULT2 Mirror"); - GEL_WatchAdd("*0x0B03,x","ADCRESULT3 Mirror"); - GEL_WatchAdd("*0x0B04,x","ADCRESULT4 Mirror"); - GEL_WatchAdd("*0x0B05,x","ADCRESULT5 Mirror"); - GEL_WatchAdd("*0x0B06,x","ADCRESULT6 Mirror"); - GEL_WatchAdd("*0x0B07,x","ADCRESULT7 Mirror"); - GEL_WatchAdd("*0x0B08,x","ADCRESULT8 Mirror"); - GEL_WatchAdd("*0x0B09,x","ADCRESULT9 Mirror"); - GEL_WatchAdd("*0x0B0A,x","ADCRESULT10 Mirror"); - GEL_WatchAdd("*0x0B0B,x","ADCRESULT11 Mirror"); - GEL_WatchAdd("*0x0B0C,x","ADCRESULT12 Mirror"); - GEL_WatchAdd("*0x0B0D,x","ADCRESULT13 Mirror"); - GEL_WatchAdd("*0x0B0E,x","ADCRESULT14 Mirror"); - GEL_WatchAdd("*0x0B0F,x","ADCRESULT15 Mirror"); -} -hotmenu ADC_Control_Regs() -{ - GEL_WatchAdd("*0x7100,x","ADCTRL1"); - GEL_WatchAdd("*0x7101,x","ADCTRL2"); - GEL_WatchAdd("*0x7102,x","ADCMAXCONV"); - GEL_WatchAdd("*0x7107,x","ADCASEQSR"); - GEL_WatchAdd("*0x7118,x","ADCTRL3"); - GEL_WatchAdd("*0x7119,x","ADCST"); - GEL_WatchAdd("*0x711C,x","ADCREFSEL"); - GEL_WatchAdd("*0x711D,x","ADCOFFTRIM"); -} -hotmenu ADCCHSELSEQx_Regs() -{ - GEL_WatchAdd("*0x7103,x","ADCCHSELSEQ1"); - GEL_WatchAdd("*0x7104,x","ADCCHSELSEQ2"); - GEL_WatchAdd("*0x7105,x","ADCCHSELSEQ3"); - GEL_WatchAdd("*0x7106,x","ADCCHSELSEQ4"); -} -hotmenu ADCRESULT_0_to_7() -{ - GEL_WatchAdd("*0x7108,x","ADCRESULT0"); - GEL_WatchAdd("*0x7109,x","ADCRESULT1"); - GEL_WatchAdd("*0x710A,x","ADCRESULT2"); - GEL_WatchAdd("*0x710B,x","ADCRESULT3"); - GEL_WatchAdd("*0x710C,x","ADCRESULT4"); - GEL_WatchAdd("*0x710D,x","ADCRESULT5"); - GEL_WatchAdd("*0x710E,x","ADCRESULT6"); - GEL_WatchAdd("*0x710F,x","ADCRESULT7"); -} -hotmenu ADCRESULT_8_to_15() -{ - GEL_WatchAdd("*0x7110,x","ADCRESULT8"); - GEL_WatchAdd("*0x7111,x","ADCRESULT9"); - GEL_WatchAdd("*0x7112,x","ADCRESULT10"); - GEL_WatchAdd("*0x7113,x","ADCRESULT11"); - GEL_WatchAdd("*0x7114,x","ADCRESULT12"); - GEL_WatchAdd("*0x7115,x","ADCRESULT13"); - GEL_WatchAdd("*0x7116,x","ADCRESULT14"); - GEL_WatchAdd("*0x7117,x","ADCRESULT15"); -} -hotmenu ADCRESULT_Mirror_0_to_7() -{ - GEL_WatchAdd("*0x0B00,x","ADCRESULT0 Mirror"); - GEL_WatchAdd("*0x0B01,x","ADCRESULT1 Mirror"); - GEL_WatchAdd("*0x0B02,x","ADCRESULT2 Mirror"); - GEL_WatchAdd("*0x0B03,x","ADCRESULT3 Mirror"); - GEL_WatchAdd("*0x0B04,x","ADCRESULT4 Mirror"); - GEL_WatchAdd("*0x0B05,x","ADCRESULT5 Mirror"); - GEL_WatchAdd("*0x0B06,x","ADCRESULT6 Mirror"); - GEL_WatchAdd("*0x0B07,x","ADCRESULT7 Mirror"); -} -hotmenu ADCRESULT_Mirror_8_to_15() -{ - GEL_WatchAdd("*0x0B08,x","ADCRESULT8 Mirror"); - GEL_WatchAdd("*0x0B09,x","ADCRESULT9 Mirror"); - GEL_WatchAdd("*0x0B0A,x","ADCRESULT10 Mirror"); - GEL_WatchAdd("*0x0B0B,x","ADCRESULT11 Mirror"); - GEL_WatchAdd("*0x0B0C,x","ADCRESULT12 Mirror"); - GEL_WatchAdd("*0x0B0D,x","ADCRESULT13 Mirror"); - GEL_WatchAdd("*0x0B0E,x","ADCRESULT14 Mirror"); - GEL_WatchAdd("*0x0B0F,x","ADCRESULT15 Mirror"); -} - - -/********************************************************************/ -/* Clocking and Low-Power Registers */ -/********************************************************************/ -menuitem "Watch Clocking and Low-Power Registers"; - -hotmenu All_Clocking_and_Low_Power_Regs() -{ - GEL_WatchAdd("*0x7010,x","XCLK"); - GEL_WatchAdd("*0x7011,x","PLLSTS"); - GEL_WatchAdd("*0x701A,x","HISPCP"); - GEL_WatchAdd("*0x701B,x","LOSPCP"); - GEL_WatchAdd("*0x701C,x","PCLKCR0"); - GEL_WatchAdd("*0x701D,x","PCLKCR1"); - GEL_WatchAdd("*0x701E,x","LPMCR0"); - GEL_WatchAdd("*0x7020,x","PCLKCR3"); - GEL_WatchAdd("*0x7021,x","PLLCR"); -} - -/********************************************************************/ -/* Code Security Module Registers */ -/********************************************************************/ -menuitem "Watch Code Security Module Registers"; - -hotmenu CSMSCR() -{ - GEL_WatchAdd("*0x0AEF,x","CSMSCR"); - GEL_WatchAdd("(*0x0AEF>>15)&1,d"," FORCESEC bit"); - GEL_WatchAdd("(*0x0AEF)&1,d"," SECURE bit"); -} -hotmenu PWL_Locations() -{ - GEL_WatchAdd("*0x33FFF8,x","PWL0"); - GEL_WatchAdd("*0x33FFF9,x","PWL1"); - GEL_WatchAdd("*0x33FFFA,x","PWL2"); - GEL_WatchAdd("*0x33FFFB,x","PWL3"); - GEL_WatchAdd("*0x33FFFC,x","PWL4"); - GEL_WatchAdd("*0x33FFFD,x","PWL5"); - GEL_WatchAdd("*0x33FFFE,x","PWL6"); - GEL_WatchAdd("*0x33FFFF,x","PWL7"); -} - - -/********************************************************************/ -/* CPU Timer Registers */ -/********************************************************************/ -menuitem "Watch CPU Timer Registers"; - -hotmenu All_CPU_Timer0_Regs() -{ - GEL_WatchAdd("*0x0C00,x","TIMER0TIM"); - GEL_WatchAdd("*0x0C01,x","TIMER0TIMH"); - GEL_WatchAdd("*0x0C02,x","TIMER0PRD"); - GEL_WatchAdd("*0x0C03,x","TIMER0PRDH"); - GEL_WatchAdd("*0x0C04,x","TIMER0TCR"); - GEL_WatchAdd("*0x0C06,x","TIMER0TPR"); - GEL_WatchAdd("*0x0C07,x","TIMER0TPRH"); -} -hotmenu All_CPU_Timer1_Regs() -{ - GEL_WatchAdd("*0x0C08,x","TIMER1TIM"); - GEL_WatchAdd("*0x0C09,x","TIMER1TIMH"); - GEL_WatchAdd("*0x0C0A,x","TIMER1PRD"); - GEL_WatchAdd("*0x0C0B,x","TIMER1PRDH"); - GEL_WatchAdd("*0x0C0C,x","TIMER1TCR"); - GEL_WatchAdd("*0x0C0E,x","TIMER1TPR"); - GEL_WatchAdd("*0x0C0F,x","TIMER1TPRH"); -} -hotmenu All_CPU_Timer2_Regs() -{ - GEL_WatchAdd("*0x0C10,x","TIMER2TIM"); - GEL_WatchAdd("*0x0C11,x","TIMER2TIMH"); - GEL_WatchAdd("*0x0C12,x","TIMER2PRD"); - GEL_WatchAdd("*0x0C13,x","TIMER2PRDH"); - GEL_WatchAdd("*0x0C14,x","TIMER2TCR"); - GEL_WatchAdd("*0x0C16,x","TIMER2TPR"); - GEL_WatchAdd("*0x0C17,x","TIMER2TPRH"); -} - - -/********************************************************************/ -/* Device Emulation Registers */ -/********************************************************************/ -menuitem "Watch Device Emulation Registers"; - -hotmenu All_Emulation_Regs() -{ - GEL_WatchAdd("*(long *)0x0880,x","DEVICECNF"); - GEL_WatchAdd("*0x0882,x","CLASSID"); - GEL_WatchAdd("*0x0883,x","REVID"); - GEL_WatchAdd("*0x0884,x","PROTSTART"); - GEL_WatchAdd("*0x0885,x","PROTRANGE"); - GEL_WatchAdd("*0x380090,x","PARTID"); -} - -/********************************************************************/ -/* DMA Registers */ -/********************************************************************/ -menuitem "Watch DMA Registers"; - -hotmenu All_DMA_Regs() -{ - GEL_WatchAdd("*0x1000,x","DMACTRL"); - GEL_WatchAdd("*0x1001,x","DEBUGCTRL"); - GEL_WatchAdd("*0x1002,x","REVISION"); - GEL_WatchAdd("*0x1004,x","PRIORITYCTRL1"); - GEL_WatchAdd("*0x1006,x","PRIORITYSTAT"); - - GEL_WatchAdd("*0x1020,x","DMA Ch1 MODE"); - GEL_WatchAdd("*0x1021,x","DMA Ch1 CONTROL"); - GEL_WatchAdd("*0x1022,x","DMA Ch1 BURST_SIZE"); - GEL_WatchAdd("*0x1023,x","DMA Ch1 BURST_COUNT"); - GEL_WatchAdd("*0x1024,x","DMA Ch1 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1025,x","DMA Ch1 DST_BURST_STEP"); - GEL_WatchAdd("*0x1026,x","DMA Ch1 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1027,x","DMA Ch1 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1028,x","DMA Ch1 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1029,x","DMA Ch1 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x102A,x","DMA Ch1 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x102B,x","DMA Ch1 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x102C,x","DMA Ch1 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x102D,x","DMA Ch1 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x102E,x","DMA Ch1 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x102F,x","DMA Ch1 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1030,x","DMA Ch1 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1032,x","DMA Ch1 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1034,x","DMA Ch1 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1036,x","DMA Ch1 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1038,x","DMA Ch1 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x103A,x","DMA Ch1 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x103C,x","DMA Ch1 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x103E,x","DMA Ch1 DST_ADDR_ACTIVE"); - - GEL_WatchAdd("*0x1040,x","DMA Ch2 MODE"); - GEL_WatchAdd("*0x1041,x","DMA Ch2 CONTROL"); - GEL_WatchAdd("*0x1042,x","DMA Ch2 BURST_SIZE"); - GEL_WatchAdd("*0x1043,x","DMA Ch2 BURST_COUNT"); - GEL_WatchAdd("*0x1044,x","DMA Ch2 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1045,x","DMA Ch2 DST_BURST_STEP"); - GEL_WatchAdd("*0x1046,x","DMA Ch2 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1047,x","DMA Ch2 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1048,x","DMA Ch2 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1049,x","DMA Ch2 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x104A,x","DMA Ch2 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x104B,x","DMA Ch2 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x104C,x","DMA Ch2 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x104D,x","DMA Ch2 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x104E,x","DMA Ch2 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x104F,x","DMA Ch2 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1050,x","DMA Ch2 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1052,x","DMA Ch2 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1054,x","DMA Ch2 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1056,x","DMA Ch2 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1058,x","DMA Ch2 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x105A,x","DMA Ch2 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x105C,x","DMA Ch2 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x105E,x","DMA Ch2 DST_ADDR_ACTIVE"); - - GEL_WatchAdd("*0x1060,x","DMA Ch3 MODE"); - GEL_WatchAdd("*0x1061,x","DMA Ch3 CONTROL"); - GEL_WatchAdd("*0x1062,x","DMA Ch3 BURST_SIZE"); - GEL_WatchAdd("*0x1063,x","DMA Ch3 BURST_COUNT"); - GEL_WatchAdd("*0x1064,x","DMA Ch3 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1065,x","DMA Ch3 DST_BURST_STEP"); - GEL_WatchAdd("*0x1066,x","DMA Ch3 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1067,x","DMA Ch3 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1068,x","DMA Ch3 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1069,x","DMA Ch3 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x106A,x","DMA Ch3 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x106B,x","DMA Ch3 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x106C,x","DMA Ch3 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x106D,x","DMA Ch3 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x106E,x","DMA Ch3 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x106F,x","DMA Ch3 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1070,x","DMA Ch3 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1072,x","DMA Ch3 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1074,x","DMA Ch3 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1076,x","DMA Ch3 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1078,x","DMA Ch3 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x107A,x","DMA Ch3 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x107C,x","DMA Ch3 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x107E,x","DMA Ch3 DST_ADDR_ACTIVE"); - - GEL_WatchAdd("*0x1080,x","DMA Ch4 MODE"); - GEL_WatchAdd("*0x1081,x","DMA Ch4 CONTROL"); - GEL_WatchAdd("*0x1082,x","DMA Ch4 BURST_SIZE"); - GEL_WatchAdd("*0x1083,x","DMA Ch4 BURST_COUNT"); - GEL_WatchAdd("*0x1084,x","DMA Ch4 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1085,x","DMA Ch4 DST_BURST_STEP"); - GEL_WatchAdd("*0x1086,x","DMA Ch4 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1087,x","DMA Ch4 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1088,x","DMA Ch4 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1089,x","DMA Ch4 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x108A,x","DMA Ch4 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x108B,x","DMA Ch4 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x108C,x","DMA Ch4 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x108D,x","DMA Ch4 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x108E,x","DMA Ch4 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x108F,x","DMA Ch4 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1090,x","DMA Ch4 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1092,x","DMA Ch4 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1094,x","DMA Ch4 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1096,x","DMA Ch4 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1098,x","DMA Ch4 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x109A,x","DMA Ch4 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x109C,x","DMA Ch4 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x109E,x","DMA Ch4 DST_ADDR_ACTIVE"); - - GEL_WatchAdd("*0x10A0,x","DMA Ch5 MODE"); - GEL_WatchAdd("*0x10A1,x","DMA Ch5 CONTROL"); - GEL_WatchAdd("*0x10A2,x","DMA Ch5 BURST_SIZE"); - GEL_WatchAdd("*0x10A3,x","DMA Ch5 BURST_COUNT"); - GEL_WatchAdd("*0x10A4,x","DMA Ch5 SRC_BURST_STEP"); - GEL_WatchAdd("*0x10A5,x","DMA Ch5 DST_BURST_STEP"); - GEL_WatchAdd("*0x10A6,x","DMA Ch5 TRANSFER_SIZE"); - GEL_WatchAdd("*0x10A7,x","DMA Ch5 TRANSFER_COUNT"); - GEL_WatchAdd("*0x10A8,x","DMA Ch5 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x10A9,x","DMA Ch5 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x10AA,x","DMA Ch5 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x10AB,x","DMA Ch5 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x10AC,x","DMA Ch5 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x10AD,x","DMA Ch5 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x10AE,x","DMA Ch5 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x10AF,x","DMA Ch5 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x10B0,x","DMA Ch5 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10B2,x","DMA Ch5 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10B4,x","DMA Ch5 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10B6,x","DMA Ch5 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10B8,x","DMA Ch5 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10BA,x","DMA Ch5 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10BC,x","DMA Ch5 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10BE,x","DMA Ch5 DST_ADDR_ACTIVE"); - - GEL_WatchAdd("*0x10C0,x","DMA Ch6 MODE"); - GEL_WatchAdd("*0x10C1,x","DMA Ch6 CONTROL"); - GEL_WatchAdd("*0x10C2,x","DMA Ch6 BURST_SIZE"); - GEL_WatchAdd("*0x10C3,x","DMA Ch6 BURST_COUNT"); - GEL_WatchAdd("*0x10C4,x","DMA Ch6 SRC_BURST_STEP"); - GEL_WatchAdd("*0x10C5,x","DMA Ch6 DST_BURST_STEP"); - GEL_WatchAdd("*0x10C6,x","DMA Ch6 TRANSFER_SIZE"); - GEL_WatchAdd("*0x10C7,x","DMA Ch6 TRANSFER_COUNT"); - GEL_WatchAdd("*0x10C8,x","DMA Ch6 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x10C9,x","DMA Ch6 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x10CA,x","DMA Ch6 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x10CB,x","DMA Ch6 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x10CC,x","DMA Ch6 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x10CD,x","DMA Ch6 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x10CE,x","DMA Ch6 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x10CF,x","DMA Ch6 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x10D0,x","DMA Ch6 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10D2,x","DMA Ch6 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10D4,x","DMA Ch6 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10D6,x","DMA Ch6 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10D8,x","DMA Ch6 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10DA,x","DMA Ch6 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10DC,x","DMA Ch6 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10DE,x","DMA Ch6 DST_ADDR_ACTIVE"); - - -} -hotmenu DMA_Channel_1_regs() -{ - GEL_WatchAdd("*0x1020,x","DMA Ch1 MODE"); - GEL_WatchAdd("*0x1021,x","DMA Ch1 CONTROL"); - GEL_WatchAdd("*0x1022,x","DMA Ch1 BURST_SIZE"); - GEL_WatchAdd("*0x1023,x","DMA Ch1 BURST_COUNT"); - GEL_WatchAdd("*0x1024,x","DMA Ch1 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1025,x","DMA Ch1 DST_BURST_STEP"); - GEL_WatchAdd("*0x1026,x","DMA Ch1 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1027,x","DMA Ch1 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1028,x","DMA Ch1 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1029,x","DMA Ch1 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x102A,x","DMA Ch1 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x102B,x","DMA Ch1 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x102C,x","DMA Ch1 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x102D,x","DMA Ch1 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x102E,x","DMA Ch1 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x102F,x","DMA Ch1 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1030,x","DMA Ch1 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1032,x","DMA Ch1 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1034,x","DMA Ch1 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1036,x","DMA Ch1 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1038,x","DMA Ch1 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x103A,x","DMA Ch1 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x103C,x","DMA Ch1 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x103E,x","DMA Ch1 DST_ADDR_ACTIVE"); -} - -hotmenu DMA_Channel_2_regs() -{ - GEL_WatchAdd("*0x1040,x","DMA Ch2 MODE"); - GEL_WatchAdd("*0x1041,x","DMA Ch2 CONTROL"); - GEL_WatchAdd("*0x1042,x","DMA Ch2 BURST_SIZE"); - GEL_WatchAdd("*0x1043,x","DMA Ch2 BURST_COUNT"); - GEL_WatchAdd("*0x1044,x","DMA Ch2 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1045,x","DMA Ch2 DST_BURST_STEP"); - GEL_WatchAdd("*0x1046,x","DMA Ch2 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1047,x","DMA Ch2 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1048,x","DMA Ch2 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1049,x","DMA Ch2 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x104A,x","DMA Ch2 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x104B,x","DMA Ch2 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x104C,x","DMA Ch2 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x104D,x","DMA Ch2 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x104E,x","DMA Ch2 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x104F,x","DMA Ch2 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1050,x","DMA Ch2 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1052,x","DMA Ch2 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1054,x","DMA Ch2 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1056,x","DMA Ch2 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1058,x","DMA Ch2 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x105A,x","DMA Ch2 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x105C,x","DMA Ch2 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x105E,x","DMA Ch2 DST_ADDR_ACTIVE"); -} -hotmenu DMA_Channel_3_regs() -{ - GEL_WatchAdd("*0x1060,x","DMA Ch3 MODE"); - GEL_WatchAdd("*0x1061,x","DMA Ch3 CONTROL"); - GEL_WatchAdd("*0x1062,x","DMA Ch3 BURST_SIZE"); - GEL_WatchAdd("*0x1063,x","DMA Ch3 BURST_COUNT"); - GEL_WatchAdd("*0x1064,x","DMA Ch3 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1065,x","DMA Ch3 DST_BURST_STEP"); - GEL_WatchAdd("*0x1066,x","DMA Ch3 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1067,x","DMA Ch3 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1068,x","DMA Ch3 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1069,x","DMA Ch3 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x106A,x","DMA Ch3 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x106B,x","DMA Ch3 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x106C,x","DMA Ch3 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x106D,x","DMA Ch3 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x106E,x","DMA Ch3 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x106F,x","DMA Ch3 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1070,x","DMA Ch3 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1072,x","DMA Ch3 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1074,x","DMA Ch3 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1076,x","DMA Ch3 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1078,x","DMA Ch3 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x107A,x","DMA Ch3 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x107C,x","DMA Ch3 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x107E,x","DMA Ch3 DST_ADDR_ACTIVE"); -} -hotmenu DMA_Channel_4_regs() -{ - GEL_WatchAdd("*0x1080,x","DMA Ch4 MODE"); - GEL_WatchAdd("*0x1081,x","DMA Ch4 CONTROL"); - GEL_WatchAdd("*0x1082,x","DMA Ch4 BURST_SIZE"); - GEL_WatchAdd("*0x1083,x","DMA Ch4 BURST_COUNT"); - GEL_WatchAdd("*0x1084,x","DMA Ch4 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1085,x","DMA Ch4 DST_BURST_STEP"); - GEL_WatchAdd("*0x1086,x","DMA Ch4 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1087,x","DMA Ch4 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1088,x","DMA Ch4 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1089,x","DMA Ch4 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x108A,x","DMA Ch4 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x108B,x","DMA Ch4 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x108C,x","DMA Ch4 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x108D,x","DMA Ch4 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x108E,x","DMA Ch4 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x108F,x","DMA Ch4 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1090,x","DMA Ch4 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1092,x","DMA Ch4 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1094,x","DMA Ch4 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1096,x","DMA Ch4 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1098,x","DMA Ch4 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x109A,x","DMA Ch4 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x109C,x","DMA Ch4 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x109E,x","DMA Ch4 DST_ADDR_ACTIVE"); -} -hotmenu DMA_Channel_5_regs() -{ - GEL_WatchAdd("*0x10A0,x","DMA Ch5 MODE"); - GEL_WatchAdd("*0x10A1,x","DMA Ch5 CONTROL"); - GEL_WatchAdd("*0x10A2,x","DMA Ch5 BURST_SIZE"); - GEL_WatchAdd("*0x10A3,x","DMA Ch5 BURST_COUNT"); - GEL_WatchAdd("*0x10A4,x","DMA Ch5 SRC_BURST_STEP"); - GEL_WatchAdd("*0x10A5,x","DMA Ch5 DST_BURST_STEP"); - GEL_WatchAdd("*0x10A6,x","DMA Ch5 TRANSFER_SIZE"); - GEL_WatchAdd("*0x10A7,x","DMA Ch5 TRANSFER_COUNT"); - GEL_WatchAdd("*0x10A8,x","DMA Ch5 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x10A9,x","DMA Ch5 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x10AA,x","DMA Ch5 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x10AB,x","DMA Ch5 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x10AC,x","DMA Ch5 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x10AD,x","DMA Ch5 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x10AE,x","DMA Ch5 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x10AF,x","DMA Ch5 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x10B0,x","DMA Ch5 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10B2,x","DMA Ch5 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10B4,x","DMA Ch5 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10B6,x","DMA Ch5 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10B8,x","DMA Ch5 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10BA,x","DMA Ch5 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10BC,x","DMA Ch5 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10BE,x","DMA Ch5 DST_ADDR_ACTIVE"); -} -hotmenu DMA_Channel_6_regs() -{ - GEL_WatchAdd("*0x10C0,x","DMA Ch6 MODE"); - GEL_WatchAdd("*0x10C1,x","DMA Ch6 CONTROL"); - GEL_WatchAdd("*0x10C2,x","DMA Ch6 BURST_SIZE"); - GEL_WatchAdd("*0x10C3,x","DMA Ch6 BURST_COUNT"); - GEL_WatchAdd("*0x10C4,x","DMA Ch6 SRC_BURST_STEP"); - GEL_WatchAdd("*0x10C5,x","DMA Ch6 DST_BURST_STEP"); - GEL_WatchAdd("*0x10C6,x","DMA Ch6 TRANSFER_SIZE"); - GEL_WatchAdd("*0x10C7,x","DMA Ch6 TRANSFER_COUNT"); - GEL_WatchAdd("*0x10C8,x","DMA Ch6 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x10C9,x","DMA Ch6 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x10CA,x","DMA Ch6 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x10CB,x","DMA Ch6 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x10CC,x","DMA Ch6 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x10CD,x","DMA Ch6 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x10CE,x","DMA Ch6 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x10CF,x","DMA Ch6 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x10D0,x","DMA Ch6 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10D2,x","DMA Ch6 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10D4,x","DMA Ch6 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10D6,x","DMA Ch6 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10D8,x","DMA Ch6 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10DA,x","DMA Ch6 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10DC,x","DMA Ch6 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10DE,x","DMA Ch6 DST_ADDR_ACTIVE"); -} - -/********************************************************************/ -/* eCAN Registers */ -/********************************************************************/ -menuitem "Watch eCAN Registers"; - -hotmenu eCAN_A_Global_Regs() -{ - GEL_WatchAdd("*(long *)0x6000,x","eCANA CANME"); - GEL_WatchAdd("*(long *)0x6002,x","eCANA CANMD"); - GEL_WatchAdd("*(long *)0x6004,x","eCANA CANTRS"); - GEL_WatchAdd("*(long *)0x6006,x","eCANA CANTRR"); - GEL_WatchAdd("*(long *)0x6008,x","eCANA CANTA"); - GEL_WatchAdd("*(long *)0x600A,x","eCANA CANAA"); - GEL_WatchAdd("*(long *)0x600C,x","eCANA CANRMP"); - GEL_WatchAdd("*(long *)0x600E,x","eCANA CANRML"); - GEL_WatchAdd("*(long *)0x6010,x","eCANA CANRFP"); - GEL_WatchAdd("*(long *)0x6014,x","eCANA CANMC"); - GEL_WatchAdd("*(long *)0x6016,x","eCANA CANBTC"); - GEL_WatchAdd("*(long *)0x6018,x","eCANA CANES"); - GEL_WatchAdd("*(long *)0x601A,x","eCANA CANTEC"); - GEL_WatchAdd("*(long *)0x601C,x","eCANA CANREC"); - GEL_WatchAdd("*(long *)0x601E,x","eCANA CANGIF0"); - GEL_WatchAdd("*(long *)0x6020,x","eCANA CANGIM"); - GEL_WatchAdd("*(long *)0x6022,x","eCANA CANGIF1"); - GEL_WatchAdd("*(long *)0x6024,x","eCANA CANMIM"); - GEL_WatchAdd("*(long *)0x6026,x","eCANA CANMIL"); - GEL_WatchAdd("*(long *)0x6028,x","eCANA CANOPC"); - GEL_WatchAdd("*(long *)0x602A,x","eCANA CANTIOC"); - GEL_WatchAdd("*(long *)0x602C,x","eCANA CANRIOC"); - GEL_WatchAdd("*(long *)0x602E,x","eCANA CANLNT"); - GEL_WatchAdd("*(long *)0x6030,x","eCANA CANTOC"); - GEL_WatchAdd("*(long *)0x6032,x","eCANA CANTOS"); -} -hotmenu eCAN_A_Mailbox_0_to_1_Regs() -{ - GEL_WatchAdd("*(long *)0x6040,x","eCANA LAM0"); - GEL_WatchAdd("*(long *)0x6080,x","eCANA MOTS0"); - GEL_WatchAdd("*(long *)0x60C0,x","eCANA MOTO0"); - GEL_WatchAdd("*(long *)0x6100,x","eCANA MID0"); - GEL_WatchAdd("*(long *)0x6102,x","eCANA MCF0"); - GEL_WatchAdd("*(long *)0x6104,x","eCANA MDL0"); - GEL_WatchAdd("*(long *)0x6106,x","eCANA MDH0"); - - GEL_WatchAdd("*(long *)0x6042,x","eCANA LAM1"); - GEL_WatchAdd("*(long *)0x6082,x","eCANA MOTS1"); - GEL_WatchAdd("*(long *)0x60C2,x","eCANA MOTO1"); - GEL_WatchAdd("*(long *)0x6108,x","eCANA MID1"); - GEL_WatchAdd("*(long *)0x610A,x","eCANA MCF1"); - GEL_WatchAdd("*(long *)0x610C,x","eCANA MDL1"); - GEL_WatchAdd("*(long *)0x610E,x","eCANA MDH1"); -} -hotmenu eCAN_A_Mailbox_2_to_3_Regs() -{ - GEL_WatchAdd("*(long *)0x6044,x","eCANA LAM2"); - GEL_WatchAdd("*(long *)0x6084,x","eCANA MOTS2"); - GEL_WatchAdd("*(long *)0x60C4,x","eCANA MOTO2"); - GEL_WatchAdd("*(long *)0x6110,x","eCANA MID2"); - GEL_WatchAdd("*(long *)0x6112,x","eCANA MCF2"); - GEL_WatchAdd("*(long *)0x6114,x","eCANA MDL2"); - GEL_WatchAdd("*(long *)0x6116,x","eCANA MDH2"); - - GEL_WatchAdd("*(long *)0x6046,x","eCANA LAM3"); - GEL_WatchAdd("*(long *)0x6086,x","eCANA MOTS3"); - GEL_WatchAdd("*(long *)0x60C6,x","eCANA MOTO3"); - GEL_WatchAdd("*(long *)0x6118,x","eCANA MID3"); - GEL_WatchAdd("*(long *)0x611A,x","eCANA MCF3"); - GEL_WatchAdd("*(long *)0x611C,x","eCANA MDL3"); - GEL_WatchAdd("*(long *)0x611E,x","eCANA MDH3"); -} -hotmenu eCAN_A_Mailbox_4_to_5_Regs() -{ - GEL_WatchAdd("*(long *)0x6048,x","eCANA LAM4"); - GEL_WatchAdd("*(long *)0x6088,x","eCANA MOTS4"); - GEL_WatchAdd("*(long *)0x60C8,x","eCANA MOTO4"); - GEL_WatchAdd("*(long *)0x6120,x","eCANA MID4"); - GEL_WatchAdd("*(long *)0x6122,x","eCANA MCF4"); - GEL_WatchAdd("*(long *)0x6124,x","eCANA MDL4"); - GEL_WatchAdd("*(long *)0x6126,x","eCANA MDH4"); - - GEL_WatchAdd("*(long *)0x604A,x","eCANA LAM5"); - GEL_WatchAdd("*(long *)0x608A,x","eCANA MOTS5"); - GEL_WatchAdd("*(long *)0x60CA,x","eCANA MOTO5"); - GEL_WatchAdd("*(long *)0x6128,x","eCANA MID5"); - GEL_WatchAdd("*(long *)0x612A,x","eCANA MCF5"); - GEL_WatchAdd("*(long *)0x612C,x","eCANA MDL5"); - GEL_WatchAdd("*(long *)0x612E,x","eCANA MDH5"); -} -hotmenu eCAN_A_Mailbox_6_to_7_Regs() -{ - GEL_WatchAdd("*(long *)0x604C,x","eCANA LAM6"); - GEL_WatchAdd("*(long *)0x608C,x","eCANA MOTS6"); - GEL_WatchAdd("*(long *)0x60CC,x","eCANA MOTO6"); - GEL_WatchAdd("*(long *)0x6130,x","eCANA MID6"); - GEL_WatchAdd("*(long *)0x6132,x","eCANA MCF6"); - GEL_WatchAdd("*(long *)0x6134,x","eCANA MDL6"); - GEL_WatchAdd("*(long *)0x6136,x","eCANA MDH6"); - - GEL_WatchAdd("*(long *)0x604E,x","eCANA LAM7"); - GEL_WatchAdd("*(long *)0x608E,x","eCANA MOTS7"); - GEL_WatchAdd("*(long *)0x60CE,x","eCANA MOTO7"); - GEL_WatchAdd("*(long *)0x6138,x","eCANA MID7"); - GEL_WatchAdd("*(long *)0x613A,x","eCANA MCF7"); - GEL_WatchAdd("*(long *)0x613C,x","eCANA MDL7"); - GEL_WatchAdd("*(long *)0x613E,x","eCANA MDH7"); -} -hotmenu eCAN_A_Mailbox_8_to_9_Regs() -{ - GEL_WatchAdd("*(long *)0x6050,x","eCANA LAM8"); - GEL_WatchAdd("*(long *)0x6090,x","eCANA MOTS8"); - GEL_WatchAdd("*(long *)0x60D0,x","eCANA MOTO8"); - GEL_WatchAdd("*(long *)0x6140,x","eCANA MID8"); - GEL_WatchAdd("*(long *)0x6142,x","eCANA MCF8"); - GEL_WatchAdd("*(long *)0x6144,x","eCANA MDL8"); - GEL_WatchAdd("*(long *)0x6146,x","eCANA MDH8"); - - GEL_WatchAdd("*(long *)0x6052,x","eCANA LAM9"); - GEL_WatchAdd("*(long *)0x6092,x","eCANA MOTS9"); - GEL_WatchAdd("*(long *)0x60D2,x","eCANA MOTO9"); - GEL_WatchAdd("*(long *)0x6148,x","eCANA MID9"); - GEL_WatchAdd("*(long *)0x614A,x","eCANA MCF9"); - GEL_WatchAdd("*(long *)0x614C,x","eCANA MDL9"); - GEL_WatchAdd("*(long *)0x614E,x","eCANA MDH9"); -} -hotmenu eCAN_A_Mailbox_10_to_11_Regs() -{ - GEL_WatchAdd("*(long *)0x6054,x","eCANA LAM10"); - GEL_WatchAdd("*(long *)0x6094,x","eCANA MOTS10"); - GEL_WatchAdd("*(long *)0x60D4,x","eCANA MOTO10"); - GEL_WatchAdd("*(long *)0x6150,x","eCANA MID10"); - GEL_WatchAdd("*(long *)0x6152,x","eCANA MCF10"); - GEL_WatchAdd("*(long *)0x6154,x","eCANA MDL10"); - GEL_WatchAdd("*(long *)0x6156,x","eCANA MDH10"); - - GEL_WatchAdd("*(long *)0x6056,x","eCANA LAM11"); - GEL_WatchAdd("*(long *)0x6096,x","eCANA MOTS11"); - GEL_WatchAdd("*(long *)0x60D6,x","eCANA MOTO11"); - GEL_WatchAdd("*(long *)0x6158,x","eCANA MID11"); - GEL_WatchAdd("*(long *)0x615A,x","eCANA MCF11"); - GEL_WatchAdd("*(long *)0x615C,x","eCANA MDL11"); - GEL_WatchAdd("*(long *)0x615E,x","eCANA MDH11"); -} -hotmenu eCAN_A_Mailbox_12_to_13_Regs() -{ - GEL_WatchAdd("*(long *)0x6058,x","eCANA LAM12"); - GEL_WatchAdd("*(long *)0x6098,x","eCANA MOTS12"); - GEL_WatchAdd("*(long *)0x60D8,x","eCANA MOTO12"); - GEL_WatchAdd("*(long *)0x6160,x","eCANA MID12"); - GEL_WatchAdd("*(long *)0x6162,x","eCANA MCF12"); - GEL_WatchAdd("*(long *)0x6164,x","eCANA MDL12"); - GEL_WatchAdd("*(long *)0x6166,x","eCANA MDH12"); - - GEL_WatchAdd("*(long *)0x605A,x","eCANA LAM13"); - GEL_WatchAdd("*(long *)0x609A,x","eCANA MOTS13"); - GEL_WatchAdd("*(long *)0x60DA,x","eCANA MOTO13"); - GEL_WatchAdd("*(long *)0x6168,x","eCANA MID13"); - GEL_WatchAdd("*(long *)0x616A,x","eCANA MCF13"); - GEL_WatchAdd("*(long *)0x616C,x","eCANA MDL13"); - GEL_WatchAdd("*(long *)0x616E,x","eCANA MDH13"); -} -hotmenu eCAN_A_Mailbox_14_to_15_Regs() -{ - GEL_WatchAdd("*(long *)0x605C,x","eCANA LAM14"); - GEL_WatchAdd("*(long *)0x609C,x","eCANA MOTS14"); - GEL_WatchAdd("*(long *)0x60DC,x","eCANA MOTO14"); - GEL_WatchAdd("*(long *)0x6170,x","eCANA MID14"); - GEL_WatchAdd("*(long *)0x6172,x","eCANA MCF14"); - GEL_WatchAdd("*(long *)0x6174,x","eCANA MDL14"); - GEL_WatchAdd("*(long *)0x6176,x","eCANA MDH14"); - - GEL_WatchAdd("*(long *)0x605E,x","eCANA LAM15"); - GEL_WatchAdd("*(long *)0x609E,x","eCANA MOTS15"); - GEL_WatchAdd("*(long *)0x60DE,x","eCANA MOTO15"); - GEL_WatchAdd("*(long *)0x6178,x","eCANA MID15"); - GEL_WatchAdd("*(long *)0x617A,x","eCANA MCF15"); - GEL_WatchAdd("*(long *)0x617C,x","eCANA MDL15"); - GEL_WatchAdd("*(long *)0x617E,x","eCANA MDH15"); -} -hotmenu eCAN_A_Mailbox_16_to_17_Regs() -{ - GEL_WatchAdd("*(long *)0x6060,x","eCANA LAM16"); - GEL_WatchAdd("*(long *)0x60A0,x","eCANA MOTS16"); - GEL_WatchAdd("*(long *)0x60E0,x","eCANA MOTO16"); - GEL_WatchAdd("*(long *)0x6180,x","eCANA MID16"); - GEL_WatchAdd("*(long *)0x6182,x","eCANA MCF16"); - GEL_WatchAdd("*(long *)0x6184,x","eCANA MDL16"); - GEL_WatchAdd("*(long *)0x6186,x","eCANA MDH16"); - - GEL_WatchAdd("*(long *)0x6062,x","eCANA LAM17"); - GEL_WatchAdd("*(long *)0x60A2,x","eCANA MOTS17"); - GEL_WatchAdd("*(long *)0x60E2,x","eCANA MOTO17"); - GEL_WatchAdd("*(long *)0x6188,x","eCANA MID17"); - GEL_WatchAdd("*(long *)0x618A,x","eCANA MCF17"); - GEL_WatchAdd("*(long *)0x618C,x","eCANA MDL17"); - GEL_WatchAdd("*(long *)0x618E,x","eCANA MDH17"); -} -hotmenu eCAN_A_Mailbox_18_to_19_Regs() -{ - GEL_WatchAdd("*(long *)0x6064,x","eCANA LAM18"); - GEL_WatchAdd("*(long *)0x60A4,x","eCANA MOTS18"); - GEL_WatchAdd("*(long *)0x60E4,x","eCANA MOTO18"); - GEL_WatchAdd("*(long *)0x6190,x","eCANA MID18"); - GEL_WatchAdd("*(long *)0x6192,x","eCANA MCF18"); - GEL_WatchAdd("*(long *)0x6194,x","eCANA MDL18"); - GEL_WatchAdd("*(long *)0x6196,x","eCANA MDH18"); - - GEL_WatchAdd("*(long *)0x6066,x","eCANA LAM19"); - GEL_WatchAdd("*(long *)0x60A6,x","eCANA MOTS19"); - GEL_WatchAdd("*(long *)0x60E6,x","eCANA MOTO19"); - GEL_WatchAdd("*(long *)0x6198,x","eCANA MID19"); - GEL_WatchAdd("*(long *)0x619A,x","eCANA MCF19"); - GEL_WatchAdd("*(long *)0x619C,x","eCANA MDL19"); - GEL_WatchAdd("*(long *)0x619E,x","eCANA MDH19"); -} -hotmenu eCAN_A_Mailbox_20_to_21_Regs() -{ - GEL_WatchAdd("*(long *)0x6068,x","eCANA LAM20"); - GEL_WatchAdd("*(long *)0x60A8,x","eCANA MOTS20"); - GEL_WatchAdd("*(long *)0x60E8,x","eCANA MOTO20"); - GEL_WatchAdd("*(long *)0x61A0,x","eCANA MID20"); - GEL_WatchAdd("*(long *)0x61A2,x","eCANA MCF20"); - GEL_WatchAdd("*(long *)0x61A4,x","eCANA MDL20"); - GEL_WatchAdd("*(long *)0x61A6,x","eCANA MDH20"); - - GEL_WatchAdd("*(long *)0x606A,x","eCANA LAM21"); - GEL_WatchAdd("*(long *)0x60AA,x","eCANA MOTS21"); - GEL_WatchAdd("*(long *)0x60EA,x","eCANA MOTO21"); - GEL_WatchAdd("*(long *)0x61A8,x","eCANA MID21"); - GEL_WatchAdd("*(long *)0x61AA,x","eCANA MCF21"); - GEL_WatchAdd("*(long *)0x61AC,x","eCANA MDL21"); - GEL_WatchAdd("*(long *)0x61AE,x","eCANA MDH21"); -} -hotmenu eCAN_A_Mailbox_22_to_23_Regs() -{ - GEL_WatchAdd("*(long *)0x606C,x","eCANA LAM22"); - GEL_WatchAdd("*(long *)0x60AC,x","eCANA MOTS22"); - GEL_WatchAdd("*(long *)0x60EC,x","eCANA MOTO22"); - GEL_WatchAdd("*(long *)0x61B0,x","eCANA MID22"); - GEL_WatchAdd("*(long *)0x61B2,x","eCANA MCF22"); - GEL_WatchAdd("*(long *)0x61B4,x","eCANA MDL22"); - GEL_WatchAdd("*(long *)0x61B6,x","eCANA MDH22"); - - GEL_WatchAdd("*(long *)0x606E,x","eCANA LAM23"); - GEL_WatchAdd("*(long *)0x60AE,x","eCANA MOTS23"); - GEL_WatchAdd("*(long *)0x60EE,x","eCANA MOTO23"); - GEL_WatchAdd("*(long *)0x61B8,x","eCANA MID23"); - GEL_WatchAdd("*(long *)0x61BA,x","eCANA MCF23"); - GEL_WatchAdd("*(long *)0x61BC,x","eCANA MDL23"); - GEL_WatchAdd("*(long *)0x61BE,x","eCANA MDH23"); -} -hotmenu eCAN_A_Mailbox_24_to_25_Regs() -{ - GEL_WatchAdd("*(long *)0x6070,x","eCANA LAM24"); - GEL_WatchAdd("*(long *)0x60B0,x","eCANA MOTS24"); - GEL_WatchAdd("*(long *)0x60F0,x","eCANA MOTO24"); - GEL_WatchAdd("*(long *)0x61C0,x","eCANA MID24"); - GEL_WatchAdd("*(long *)0x61C2,x","eCANA MCF24"); - GEL_WatchAdd("*(long *)0x61C4,x","eCANA MDL24"); - GEL_WatchAdd("*(long *)0x61C6,x","eCANA MDH24"); - - GEL_WatchAdd("*(long *)0x6072,x","eCANA LAM25"); - GEL_WatchAdd("*(long *)0x60B2,x","eCANA MOTS25"); - GEL_WatchAdd("*(long *)0x60F2,x","eCANA MOTO25"); - GEL_WatchAdd("*(long *)0x61C8,x","eCANA MID25"); - GEL_WatchAdd("*(long *)0x61CA,x","eCANA MCF25"); - GEL_WatchAdd("*(long *)0x61CC,x","eCANA MDL25"); - GEL_WatchAdd("*(long *)0x61CE,x","eCANA MDH25"); -} -hotmenu eCAN_A_Mailbox_26_to_27_Regs() -{ - GEL_WatchAdd("*(long *)0x6074,x","eCANA LAM26"); - GEL_WatchAdd("*(long *)0x60B4,x","eCANA MOTS26"); - GEL_WatchAdd("*(long *)0x60F4,x","eCANA MOTO26"); - GEL_WatchAdd("*(long *)0x61D0,x","eCANA MID26"); - GEL_WatchAdd("*(long *)0x61D2,x","eCANA MCF26"); - GEL_WatchAdd("*(long *)0x61D4,x","eCANA MDL26"); - GEL_WatchAdd("*(long *)0x61D6,x","eCANA MDH26"); - - GEL_WatchAdd("*(long *)0x6076,x","eCANA LAM27"); - GEL_WatchAdd("*(long *)0x60B6,x","eCANA MOTS27"); - GEL_WatchAdd("*(long *)0x60F6,x","eCANA MOTO27"); - GEL_WatchAdd("*(long *)0x61D8,x","eCANA MID27"); - GEL_WatchAdd("*(long *)0x61DA,x","eCANA MCF27"); - GEL_WatchAdd("*(long *)0x61DC,x","eCANA MDL27"); - GEL_WatchAdd("*(long *)0x61DE,x","eCANA MDH27"); -} -hotmenu eCAN_A_Mailbox_28_to_29_Regs() -{ - GEL_WatchAdd("*(long *)0x6078,x","eCANA LAM28"); - GEL_WatchAdd("*(long *)0x60B8,x","eCANA MOTS28"); - GEL_WatchAdd("*(long *)0x60F8,x","eCANA MOTO28"); - GEL_WatchAdd("*(long *)0x61E0,x","eCANA MID28"); - GEL_WatchAdd("*(long *)0x61E2,x","eCANA MCF28"); - GEL_WatchAdd("*(long *)0x61E4,x","eCANA MDL28"); - GEL_WatchAdd("*(long *)0x61E6,x","eCANA MDH28"); - - GEL_WatchAdd("*(long *)0x607A,x","eCANA LAM29"); - GEL_WatchAdd("*(long *)0x60BA,x","eCANA MOTS29"); - GEL_WatchAdd("*(long *)0x60FA,x","eCANA MOTO29"); - GEL_WatchAdd("*(long *)0x61E8,x","eCANA MID29"); - GEL_WatchAdd("*(long *)0x61EA,x","eCANA MCF29"); - GEL_WatchAdd("*(long *)0x61EC,x","eCANA MDL29"); - GEL_WatchAdd("*(long *)0x61EE,x","eCANA MDH29"); -} -hotmenu eCAN_A_Mailbox_30_to_31_Regs() -{ - GEL_WatchAdd("*(long *)0x607C,x","eCANA LAM30"); - GEL_WatchAdd("*(long *)0x60BC,x","eCANA MOTS30"); - GEL_WatchAdd("*(long *)0x60FC,x","eCANA MOTO30"); - GEL_WatchAdd("*(long *)0x61F0,x","eCANA MID30"); - GEL_WatchAdd("*(long *)0x61F2,x","eCANA MCF30"); - GEL_WatchAdd("*(long *)0x61F4,x","eCANA MDL30"); - GEL_WatchAdd("*(long *)0x61F6,x","eCANA MDH30"); - - GEL_WatchAdd("*(long *)0x607E,x","eCANA LAM31"); - GEL_WatchAdd("*(long *)0x60BE,x","eCANA MOTS31"); - GEL_WatchAdd("*(long *)0x60FE,x","eCANA MOTO31"); - GEL_WatchAdd("*(long *)0x61F8,x","eCANA MID31"); - GEL_WatchAdd("*(long *)0x61FA,x","eCANA MCF31"); - GEL_WatchAdd("*(long *)0x61FC,x","eCANA MDL31"); - GEL_WatchAdd("*(long *)0x61FE,x","eCANA MDH31"); -} -hotmenu eCAN_B_Global_Regs() -{ - GEL_WatchAdd("*(long *)0x6200,x","eCANB CANME"); - GEL_WatchAdd("*(long *)0x6202,x","eCANB CANMD"); - GEL_WatchAdd("*(long *)0x6204,x","eCANB CANTRS"); - GEL_WatchAdd("*(long *)0x6206,x","eCANB CANTRR"); - GEL_WatchAdd("*(long *)0x6208,x","eCANB CANTA"); - GEL_WatchAdd("*(long *)0x620A,x","eCANB CANAA"); - GEL_WatchAdd("*(long *)0x620C,x","eCANB CANRMP"); - GEL_WatchAdd("*(long *)0x620E,x","eCANB CANRML"); - GEL_WatchAdd("*(long *)0x6210,x","eCANB CANRFP"); - GEL_WatchAdd("*(long *)0x6214,x","eCANB CANMC"); - GEL_WatchAdd("*(long *)0x6216,x","eCANB CANBTC"); - GEL_WatchAdd("*(long *)0x6218,x","eCANB CANES"); - GEL_WatchAdd("*(long *)0x621A,x","eCANB CANTEC"); - GEL_WatchAdd("*(long *)0x621C,x","eCANB CANREC"); - GEL_WatchAdd("*(long *)0x621E,x","eCANB CANGIF0"); - GEL_WatchAdd("*(long *)0x6220,x","eCANB CANGIM"); - GEL_WatchAdd("*(long *)0x6222,x","eCANB CANGIF1"); - GEL_WatchAdd("*(long *)0x6224,x","eCANB CANMIM"); - GEL_WatchAdd("*(long *)0x6226,x","eCANB CANMIL"); - GEL_WatchAdd("*(long *)0x6228,x","eCANB CANOPC"); - GEL_WatchAdd("*(long *)0x622A,x","eCANB CANTIOC"); - GEL_WatchAdd("*(long *)0x622C,x","eCANB CANRIOC"); - GEL_WatchAdd("*(long *)0x622E,x","eCANB CANLNT"); - GEL_WatchAdd("*(long *)0x6230,x","eCANB CANTOC"); - GEL_WatchAdd("*(long *)0x6232,x","eCANB CANTOS"); -} -hotmenu eCAN_B_Mailbox_0_to_1_Regs() -{ - GEL_WatchAdd("*(long *)0x6240,x","eCANB LAM0"); - GEL_WatchAdd("*(long *)0x6280,x","eCANB MOTS0"); - GEL_WatchAdd("*(long *)0x62C0,x","eCANB MOTO0"); - GEL_WatchAdd("*(long *)0x6300,x","eCANB MID0"); - GEL_WatchAdd("*(long *)0x6302,x","eCANB MCF0"); - GEL_WatchAdd("*(long *)0x6304,x","eCANB MDL0"); - GEL_WatchAdd("*(long *)0x6306,x","eCANB MDH0"); - - GEL_WatchAdd("*(long *)0x6242,x","eCANB LAM1"); - GEL_WatchAdd("*(long *)0x6282,x","eCANB MOTS1"); - GEL_WatchAdd("*(long *)0x62C2,x","eCANB MOTO1"); - GEL_WatchAdd("*(long *)0x6308,x","eCANB MID1"); - GEL_WatchAdd("*(long *)0x630A,x","eCANB MCF1"); - GEL_WatchAdd("*(long *)0x630C,x","eCANB MDL1"); - GEL_WatchAdd("*(long *)0x630E,x","eCANB MDH1"); -} -hotmenu eCAN_B_Mailbox_2_to_3_Regs() -{ - GEL_WatchAdd("*(long *)0x6244,x","eCANB LAM2"); - GEL_WatchAdd("*(long *)0x6284,x","eCANB MOTS2"); - GEL_WatchAdd("*(long *)0x62C4,x","eCANB MOTO2"); - GEL_WatchAdd("*(long *)0x6310,x","eCANB MID2"); - GEL_WatchAdd("*(long *)0x6312,x","eCANB MCF2"); - GEL_WatchAdd("*(long *)0x6314,x","eCANB MDL2"); - GEL_WatchAdd("*(long *)0x6316,x","eCANB MDH2"); - - GEL_WatchAdd("*(long *)0x6246,x","eCANB LAM3"); - GEL_WatchAdd("*(long *)0x6286,x","eCANB MOTS3"); - GEL_WatchAdd("*(long *)0x62C6,x","eCANB MOTO3"); - GEL_WatchAdd("*(long *)0x6318,x","eCANB MID3"); - GEL_WatchAdd("*(long *)0x631A,x","eCANB MCF3"); - GEL_WatchAdd("*(long *)0x631C,x","eCANB MDL3"); - GEL_WatchAdd("*(long *)0x631E,x","eCANB MDH3"); -} -hotmenu eCAN_B_Mailbox_4_to_5_Regs() -{ - GEL_WatchAdd("*(long *)0x6248,x","eCANB LAM4"); - GEL_WatchAdd("*(long *)0x6288,x","eCANB MOTS4"); - GEL_WatchAdd("*(long *)0x62C8,x","eCANB MOTO4"); - GEL_WatchAdd("*(long *)0x6320,x","eCANB MID4"); - GEL_WatchAdd("*(long *)0x6322,x","eCANB MCF4"); - GEL_WatchAdd("*(long *)0x6324,x","eCANB MDL4"); - GEL_WatchAdd("*(long *)0x6326,x","eCANB MDH4"); - - GEL_WatchAdd("*(long *)0x624A,x","eCANB LAM5"); - GEL_WatchAdd("*(long *)0x628A,x","eCANB MOTS5"); - GEL_WatchAdd("*(long *)0x62CA,x","eCANB MOTO5"); - GEL_WatchAdd("*(long *)0x6328,x","eCANB MID5"); - GEL_WatchAdd("*(long *)0x632A,x","eCANB MCF5"); - GEL_WatchAdd("*(long *)0x632C,x","eCANB MDL5"); - GEL_WatchAdd("*(long *)0x632E,x","eCANB MDH5"); -} -hotmenu eCAN_B_Mailbox_6_to_7_Regs() -{ - GEL_WatchAdd("*(long *)0x624C,x","eCANB LAM6"); - GEL_WatchAdd("*(long *)0x628C,x","eCANB MOTS6"); - GEL_WatchAdd("*(long *)0x62CC,x","eCANB MOTO6"); - GEL_WatchAdd("*(long *)0x6330,x","eCANB MID6"); - GEL_WatchAdd("*(long *)0x6332,x","eCANB MCF6"); - GEL_WatchAdd("*(long *)0x6334,x","eCANB MDL6"); - GEL_WatchAdd("*(long *)0x6336,x","eCANB MDH6"); - - GEL_WatchAdd("*(long *)0x624E,x","eCANB LAM7"); - GEL_WatchAdd("*(long *)0x628E,x","eCANB MOTS7"); - GEL_WatchAdd("*(long *)0x62CE,x","eCANB MOTO7"); - GEL_WatchAdd("*(long *)0x6338,x","eCANB MID7"); - GEL_WatchAdd("*(long *)0x633A,x","eCANB MCF7"); - GEL_WatchAdd("*(long *)0x633C,x","eCANB MDL7"); - GEL_WatchAdd("*(long *)0x633E,x","eCANB MDH7"); -} -hotmenu eCAN_B_Mailbox_8_to_9_Regs() -{ - GEL_WatchAdd("*(long *)0x6250,x","eCANB LAM8"); - GEL_WatchAdd("*(long *)0x6290,x","eCANB MOTS8"); - GEL_WatchAdd("*(long *)0x62D0,x","eCANB MOTO8"); - GEL_WatchAdd("*(long *)0x6340,x","eCANB MID8"); - GEL_WatchAdd("*(long *)0x6342,x","eCANB MCF8"); - GEL_WatchAdd("*(long *)0x6344,x","eCANB MDL8"); - GEL_WatchAdd("*(long *)0x6346,x","eCANB MDH8"); - - GEL_WatchAdd("*(long *)0x6252,x","eCANB LAM9"); - GEL_WatchAdd("*(long *)0x6292,x","eCANB MOTS9"); - GEL_WatchAdd("*(long *)0x62D2,x","eCANB MOTO9"); - GEL_WatchAdd("*(long *)0x6348,x","eCANB MID9"); - GEL_WatchAdd("*(long *)0x634A,x","eCANB MCF9"); - GEL_WatchAdd("*(long *)0x634C,x","eCANB MDL9"); - GEL_WatchAdd("*(long *)0x634E,x","eCANB MDH9"); -} -hotmenu eCAN_B_Mailbox_10_to_11_Regs() -{ - GEL_WatchAdd("*(long *)0x6254,x","eCANB LAM10"); - GEL_WatchAdd("*(long *)0x6294,x","eCANB MOTS10"); - GEL_WatchAdd("*(long *)0x62D4,x","eCANB MOTO10"); - GEL_WatchAdd("*(long *)0x6350,x","eCANB MID10"); - GEL_WatchAdd("*(long *)0x6352,x","eCANB MCF10"); - GEL_WatchAdd("*(long *)0x6354,x","eCANB MDL10"); - GEL_WatchAdd("*(long *)0x6356,x","eCANB MDH10"); - - GEL_WatchAdd("*(long *)0x6256,x","eCANB LAM11"); - GEL_WatchAdd("*(long *)0x6296,x","eCANB MOTS11"); - GEL_WatchAdd("*(long *)0x62D6,x","eCANB MOTO11"); - GEL_WatchAdd("*(long *)0x6358,x","eCANB MID11"); - GEL_WatchAdd("*(long *)0x635A,x","eCANB MCF11"); - GEL_WatchAdd("*(long *)0x635C,x","eCANB MDL11"); - GEL_WatchAdd("*(long *)0x635E,x","eCANB MDH11"); -} -hotmenu eCAN_B_Mailbox_12_to_13_Regs() -{ - GEL_WatchAdd("*(long *)0x6258,x","eCANB LAM12"); - GEL_WatchAdd("*(long *)0x6298,x","eCANB MOTS12"); - GEL_WatchAdd("*(long *)0x62D8,x","eCANB MOTO12"); - GEL_WatchAdd("*(long *)0x6360,x","eCANB MID12"); - GEL_WatchAdd("*(long *)0x6362,x","eCANB MCF12"); - GEL_WatchAdd("*(long *)0x6364,x","eCANB MDL12"); - GEL_WatchAdd("*(long *)0x6366,x","eCANB MDH12"); - - GEL_WatchAdd("*(long *)0x625A,x","eCANB LAM13"); - GEL_WatchAdd("*(long *)0x629A,x","eCANB MOTS13"); - GEL_WatchAdd("*(long *)0x62DA,x","eCANB MOTO13"); - GEL_WatchAdd("*(long *)0x6368,x","eCANB MID13"); - GEL_WatchAdd("*(long *)0x636A,x","eCANB MCF13"); - GEL_WatchAdd("*(long *)0x636C,x","eCANB MDL13"); - GEL_WatchAdd("*(long *)0x636E,x","eCANB MDH13"); -} -hotmenu eCAN_B_Mailbox_14_to_15_Regs() -{ - GEL_WatchAdd("*(long *)0x625C,x","eCANB LAM14"); - GEL_WatchAdd("*(long *)0x629C,x","eCANB MOTS14"); - GEL_WatchAdd("*(long *)0x62DC,x","eCANB MOTO14"); - GEL_WatchAdd("*(long *)0x6370,x","eCANB MID14"); - GEL_WatchAdd("*(long *)0x6372,x","eCANB MCF14"); - GEL_WatchAdd("*(long *)0x6374,x","eCANB MDL14"); - GEL_WatchAdd("*(long *)0x6376,x","eCANB MDH14"); - - GEL_WatchAdd("*(long *)0x625E,x","eCANB LAM15"); - GEL_WatchAdd("*(long *)0x629E,x","eCANB MOTS15"); - GEL_WatchAdd("*(long *)0x62DE,x","eCANB MOTO15"); - GEL_WatchAdd("*(long *)0x6378,x","eCANB MID15"); - GEL_WatchAdd("*(long *)0x637A,x","eCANB MCF15"); - GEL_WatchAdd("*(long *)0x637C,x","eCANB MDL15"); - GEL_WatchAdd("*(long *)0x637E,x","eCANB MDH15"); -} -hotmenu eCAN_B_Mailbox_16_to_17_Regs() -{ - GEL_WatchAdd("*(long *)0x6260,x","eCANB LAM16"); - GEL_WatchAdd("*(long *)0x62A0,x","eCANB MOTS16"); - GEL_WatchAdd("*(long *)0x62E0,x","eCANB MOTO16"); - GEL_WatchAdd("*(long *)0x6380,x","eCANB MID16"); - GEL_WatchAdd("*(long *)0x6382,x","eCANB MCF16"); - GEL_WatchAdd("*(long *)0x6384,x","eCANB MDL16"); - GEL_WatchAdd("*(long *)0x6386,x","eCANB MDH16"); - - GEL_WatchAdd("*(long *)0x6262,x","eCANB LAM17"); - GEL_WatchAdd("*(long *)0x62A2,x","eCANB MOTS17"); - GEL_WatchAdd("*(long *)0x62E2,x","eCANB MOTO17"); - GEL_WatchAdd("*(long *)0x6388,x","eCANB MID17"); - GEL_WatchAdd("*(long *)0x638A,x","eCANB MCF17"); - GEL_WatchAdd("*(long *)0x638C,x","eCANB MDL17"); - GEL_WatchAdd("*(long *)0x638E,x","eCANB MDH17"); -} -hotmenu eCAN_B_Mailbox_18_to_19_Regs() -{ - GEL_WatchAdd("*(long *)0x6264,x","eCANB LAM18"); - GEL_WatchAdd("*(long *)0x62A4,x","eCANB MOTS18"); - GEL_WatchAdd("*(long *)0x62E4,x","eCANB MOTO18"); - GEL_WatchAdd("*(long *)0x6390,x","eCANB MID18"); - GEL_WatchAdd("*(long *)0x6392,x","eCANB MCF18"); - GEL_WatchAdd("*(long *)0x6394,x","eCANB MDL18"); - GEL_WatchAdd("*(long *)0x6396,x","eCANB MDH18"); - - GEL_WatchAdd("*(long *)0x6266,x","eCANB LAM19"); - GEL_WatchAdd("*(long *)0x62A6,x","eCANB MOTS19"); - GEL_WatchAdd("*(long *)0x62E6,x","eCANB MOTO19"); - GEL_WatchAdd("*(long *)0x6398,x","eCANB MID19"); - GEL_WatchAdd("*(long *)0x639A,x","eCANB MCF19"); - GEL_WatchAdd("*(long *)0x639C,x","eCANB MDL19"); - GEL_WatchAdd("*(long *)0x639E,x","eCANB MDH19"); -} -hotmenu eCAN_B_Mailbox_20_to_21_Regs() -{ - GEL_WatchAdd("*(long *)0x6268,x","eCANB LAM20"); - GEL_WatchAdd("*(long *)0x62A8,x","eCANB MOTS20"); - GEL_WatchAdd("*(long *)0x62E8,x","eCANB MOTO20"); - GEL_WatchAdd("*(long *)0x63A0,x","eCANB MID20"); - GEL_WatchAdd("*(long *)0x63A2,x","eCANB MCF20"); - GEL_WatchAdd("*(long *)0x63A4,x","eCANB MDL20"); - GEL_WatchAdd("*(long *)0x63A6,x","eCANB MDH20"); - - GEL_WatchAdd("*(long *)0x626A,x","eCANB LAM21"); - GEL_WatchAdd("*(long *)0x62AA,x","eCANB MOTS21"); - GEL_WatchAdd("*(long *)0x62EA,x","eCANB MOTO21"); - GEL_WatchAdd("*(long *)0x63A8,x","eCANB MID21"); - GEL_WatchAdd("*(long *)0x63AA,x","eCANB MCF21"); - GEL_WatchAdd("*(long *)0x63AC,x","eCANB MDL21"); - GEL_WatchAdd("*(long *)0x63AE,x","eCANB MDH21"); -} -hotmenu eCAN_B_Mailbox_22_to_23_Regs() -{ - GEL_WatchAdd("*(long *)0x626C,x","eCANB LAM22"); - GEL_WatchAdd("*(long *)0x62AC,x","eCANB MOTS22"); - GEL_WatchAdd("*(long *)0x62EC,x","eCANB MOTO22"); - GEL_WatchAdd("*(long *)0x63B0,x","eCANB MID22"); - GEL_WatchAdd("*(long *)0x63B2,x","eCANB MCF22"); - GEL_WatchAdd("*(long *)0x63B4,x","eCANB MDL22"); - GEL_WatchAdd("*(long *)0x63B6,x","eCANB MDH22"); - - GEL_WatchAdd("*(long *)0x626E,x","eCANB LAM23"); - GEL_WatchAdd("*(long *)0x62AE,x","eCANB MOTS23"); - GEL_WatchAdd("*(long *)0x62EE,x","eCANB MOTO23"); - GEL_WatchAdd("*(long *)0x63B8,x","eCANB MID23"); - GEL_WatchAdd("*(long *)0x63BA,x","eCANB MCF23"); - GEL_WatchAdd("*(long *)0x63BC,x","eCANB MDL23"); - GEL_WatchAdd("*(long *)0x63BE,x","eCANB MDH23"); -} -hotmenu eCAN_B_Mailbox_24_to_25_Regs() -{ - GEL_WatchAdd("*(long *)0x6270,x","eCANB LAM24"); - GEL_WatchAdd("*(long *)0x62B0,x","eCANB MOTS24"); - GEL_WatchAdd("*(long *)0x62F0,x","eCANB MOTO24"); - GEL_WatchAdd("*(long *)0x63C0,x","eCANB MID24"); - GEL_WatchAdd("*(long *)0x63C2,x","eCANB MCF24"); - GEL_WatchAdd("*(long *)0x63C4,x","eCANB MDL24"); - GEL_WatchAdd("*(long *)0x63C6,x","eCANB MDH24"); - - GEL_WatchAdd("*(long *)0x6272,x","eCANB LAM25"); - GEL_WatchAdd("*(long *)0x62B2,x","eCANB MOTS25"); - GEL_WatchAdd("*(long *)0x62F2,x","eCANB MOTO25"); - GEL_WatchAdd("*(long *)0x63C8,x","eCANB MID25"); - GEL_WatchAdd("*(long *)0x63CA,x","eCANB MCF25"); - GEL_WatchAdd("*(long *)0x63CC,x","eCANB MDL25"); - GEL_WatchAdd("*(long *)0x63CE,x","eCANB MDH25"); -} -hotmenu eCAN_B_Mailbox_26_to_27_Regs() -{ - GEL_WatchAdd("*(long *)0x6274,x","eCANB LAM26"); - GEL_WatchAdd("*(long *)0x62B4,x","eCANB MOTS26"); - GEL_WatchAdd("*(long *)0x62F4,x","eCANB MOTO26"); - GEL_WatchAdd("*(long *)0x63D0,x","eCANB MID26"); - GEL_WatchAdd("*(long *)0x63D2,x","eCANB MCF26"); - GEL_WatchAdd("*(long *)0x63D4,x","eCANB MDL26"); - GEL_WatchAdd("*(long *)0x63D6,x","eCANB MDH26"); - - GEL_WatchAdd("*(long *)0x6276,x","eCANB LAM27"); - GEL_WatchAdd("*(long *)0x62B6,x","eCANB MOTS27"); - GEL_WatchAdd("*(long *)0x62F6,x","eCANB MOTO27"); - GEL_WatchAdd("*(long *)0x63D8,x","eCANB MID27"); - GEL_WatchAdd("*(long *)0x63DA,x","eCANB MCF27"); - GEL_WatchAdd("*(long *)0x63DC,x","eCANB MDL27"); - GEL_WatchAdd("*(long *)0x63DE,x","eCANB MDH27"); -} -hotmenu eCAN_B_Mailbox_28_to_29_Regs() -{ - GEL_WatchAdd("*(long *)0x6278,x","eCANB LAM28"); - GEL_WatchAdd("*(long *)0x62B8,x","eCANB MOTS28"); - GEL_WatchAdd("*(long *)0x62F8,x","eCANB MOTO28"); - GEL_WatchAdd("*(long *)0x63E0,x","eCANB MID28"); - GEL_WatchAdd("*(long *)0x63E2,x","eCANB MCF28"); - GEL_WatchAdd("*(long *)0x63E4,x","eCANB MDL28"); - GEL_WatchAdd("*(long *)0x63E6,x","eCANB MDH28"); - - GEL_WatchAdd("*(long *)0x627A,x","eCANB LAM29"); - GEL_WatchAdd("*(long *)0x62BA,x","eCANB MOTS29"); - GEL_WatchAdd("*(long *)0x62FA,x","eCANB MOTO29"); - GEL_WatchAdd("*(long *)0x63E8,x","eCANB MID29"); - GEL_WatchAdd("*(long *)0x63EA,x","eCANB MCF29"); - GEL_WatchAdd("*(long *)0x63EC,x","eCANB MDL29"); - GEL_WatchAdd("*(long *)0x63EE,x","eCANB MDH29"); -} -hotmenu eCAN_B_Mailbox_30_to_31_Regs() -{ - GEL_WatchAdd("*(long *)0x627C,x","eCANB LAM30"); - GEL_WatchAdd("*(long *)0x62BC,x","eCANB MOTS30"); - GEL_WatchAdd("*(long *)0x62FC,x","eCANB MOTO30"); - GEL_WatchAdd("*(long *)0x63F0,x","eCANB MID30"); - GEL_WatchAdd("*(long *)0x63F2,x","eCANB MCF30"); - GEL_WatchAdd("*(long *)0x63F4,x","eCANB MDL30"); - GEL_WatchAdd("*(long *)0x63F6,x","eCANB MDH30"); - - GEL_WatchAdd("*(long *)0x627E,x","eCANB LAM31"); - GEL_WatchAdd("*(long *)0x62BE,x","eCANB MOTS31"); - GEL_WatchAdd("*(long *)0x62FE,x","eCANB MOTO31"); - GEL_WatchAdd("*(long *)0x63F8,x","eCANB MID31"); - GEL_WatchAdd("*(long *)0x63FA,x","eCANB MCF31"); - GEL_WatchAdd("*(long *)0x63FC,x","eCANB MDL31"); - GEL_WatchAdd("*(long *)0x63FE,x","eCANB MDH31"); -} - - -/********************************************************************/ -/* Enhanced Capture Registers */ -/********************************************************************/ -menuitem "Watch eCAP Registers"; - -hotmenu eCAP1_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6A00,x","eCAP1 TSCNT"); - GEL_WatchAdd("*(long *)0x6A02,x","eCAP1 CNTPHS"); - GEL_WatchAdd("*(long *)0x6A04,x","eCAP1 CAP1"); - GEL_WatchAdd("*(long *)0x6A06,x","eCAP1 CAP2"); - GEL_WatchAdd("*(long *)0x6A08,x","eCAP1 CAP3"); - GEL_WatchAdd("*(long *)0x6A0A,x","eCAP1 CAP4"); - GEL_WatchAdd("*0x6A14,x","eCAP1 ECCTL1"); - GEL_WatchAdd("*0x6A15,x","eCAP1 ECCTL2"); - GEL_WatchAdd("*0x6A16,x","eCAP1 ECEINT"); - GEL_WatchAdd("*0x6A17,x","eCAP1 ECFLG"); - GEL_WatchAdd("*0x6A18,x","eCAP1 ECCLR"); - GEL_WatchAdd("*0x6A19,x","eCAP1 ECFRC"); -} -hotmenu eCAP2_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6A20,x","eCAP2 TSCNT"); - GEL_WatchAdd("*(long *)0x6A22,x","eCAP2 CNTPHS"); - GEL_WatchAdd("*(long *)0x6A24,x","eCAP2 CAP1"); - GEL_WatchAdd("*(long *)0x6A26,x","eCAP2 CAP2"); - GEL_WatchAdd("*(long *)0x6A28,x","eCAP2 CAP3"); - GEL_WatchAdd("*(long *)0x6A2A,x","eCAP2 CAP4"); - GEL_WatchAdd("*0x6A34,x","eCAP2 ECCTL1"); - GEL_WatchAdd("*0x6A35,x","eCAP2 ECCTL2"); - GEL_WatchAdd("*0x6A36,x","eCAP2 ECEINT"); - GEL_WatchAdd("*0x6A37,x","eCAP2 ECFLG"); - GEL_WatchAdd("*0x6A38,x","eCAP2 ECCLR"); - GEL_WatchAdd("*0x6A39,x","eCAP2 ECFRC"); -} -hotmenu eCAP3_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6A40,x","eCAP3 TSCNT"); - GEL_WatchAdd("*(long *)0x6A42,x","eCAP3 CNTPHS"); - GEL_WatchAdd("*(long *)0x6A44,x","eCAP3 CAP1"); - GEL_WatchAdd("*(long *)0x6A46,x","eCAP3 CAP2"); - GEL_WatchAdd("*(long *)0x6A48,x","eCAP3 CAP3"); - GEL_WatchAdd("*(long *)0x6A4A,x","eCAP3 CAP4"); - GEL_WatchAdd("*0x6A54,x","eCAP3 ECCTL1"); - GEL_WatchAdd("*0x6A55,x","eCAP3 ECCTL2"); - GEL_WatchAdd("*0x6A56,x","eCAP3 ECEINT"); - GEL_WatchAdd("*0x6A57,x","eCAP3 ECFLG"); - GEL_WatchAdd("*0x6A58,x","eCAP3 ECCLR"); - GEL_WatchAdd("*0x6A59,x","eCAP3 ECFRC"); -} -hotmenu eCAP4_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6A60,x","eCAP4 TSCNT"); - GEL_WatchAdd("*(long *)0x6A62,x","eCAP4 CNTPHS"); - GEL_WatchAdd("*(long *)0x6A64,x","eCAP4 CAP1"); - GEL_WatchAdd("*(long *)0x6A66,x","eCAP4 CAP2"); - GEL_WatchAdd("*(long *)0x6A68,x","eCAP4 CAP3"); - GEL_WatchAdd("*(long *)0x6A6A,x","eCAP4 CAP4"); - GEL_WatchAdd("*0x6A74,x","eCAP4 ECCTL1"); - GEL_WatchAdd("*0x6A75,x","eCAP4 ECCTL2"); - GEL_WatchAdd("*0x6A76,x","eCAP4 ECEINT"); - GEL_WatchAdd("*0x6A77,x","eCAP4 ECFLG"); - GEL_WatchAdd("*0x6A78,x","eCAP4 ECCLR"); - GEL_WatchAdd("*0x6A79,x","eCAP4 ECFRC"); -} - -/********************************************************************/ -/* Enhanced PWM Registers */ -/********************************************************************/ -menuitem "Watch ePWM Registers"; - -hotmenu ePWM1_All_Regs() -{ - GEL_WatchAdd("*0x6800,x","ePWM1 TBCTL"); - GEL_WatchAdd("*0x6801,x","ePWM1 TBSTS"); - GEL_WatchAdd("*0x6802,x","ePWM1 TBPHSHR"); - GEL_WatchAdd("*0x6803,x","ePWM1 TBPHS"); - GEL_WatchAdd("*0x6804,x","ePWM1 TBCTR"); - GEL_WatchAdd("*0x6805,x","ePWM1 TBPRD"); - GEL_WatchAdd("*0x6807,x","ePWM1 CMPCTL"); - GEL_WatchAdd("*0x6808,x","ePWM1 CMPAHR"); - GEL_WatchAdd("*0x6809,x","ePWM1 CMPA"); - GEL_WatchAdd("*0x680A,x","ePWM1 CMPB"); - GEL_WatchAdd("*0x680B,x","ePWM1 AQCTLA"); - GEL_WatchAdd("*0x680C,x","ePWM1 AQCTLB"); - GEL_WatchAdd("*0x680D,x","ePWM1 AQSFRC"); - GEL_WatchAdd("*0x680E,x","ePWM1 AQCSFRC"); - GEL_WatchAdd("*0x680F,x","ePWM1 DBCTL"); - GEL_WatchAdd("*0x6810,x","ePWM1 DBRED"); - GEL_WatchAdd("*0x6811,x","ePWM1 DBFED"); - GEL_WatchAdd("*0x6812,x","ePWM1 TZSEL"); - GEL_WatchAdd("*0x6813,x","ePWM1 TZDCSEL"); - GEL_WatchAdd("*0x6814,x","ePWM1 TZCTL"); - GEL_WatchAdd("*0x6815,x","ePWM1 TZEINT"); - GEL_WatchAdd("*0x6816,x","ePWM1 TZFLG"); - GEL_WatchAdd("*0x6817,x","ePWM1 TZCLR"); - GEL_WatchAdd("*0x6818,x","ePWM1 TZFRC"); - GEL_WatchAdd("*0x6819,x","ePWM1 ETSEL"); - GEL_WatchAdd("*0x681A,x","ePWM1 ETPS"); - GEL_WatchAdd("*0x681B,x","ePWM1 ETFLG"); - GEL_WatchAdd("*0x681C,x","ePWM1 ETCLR"); - GEL_WatchAdd("*0x681D,x","ePWM1 ETFRC"); - GEL_WatchAdd("*0x681E,x","ePWM1 PCCTL"); - GEL_WatchAdd("*0x6820,x","ePWM1 HRCNFG"); -} -hotmenu ePWM1_TB_Regs() -{ - GEL_WatchAdd("*0x6800,x","ePWM1 TBCTL"); - GEL_WatchAdd("*0x6801,x","ePWM1 TBSTS"); - GEL_WatchAdd("*0x6802,x","ePWM1 TBPHSHR"); - GEL_WatchAdd("*0x6803,x","ePWM1 TBPHS"); - GEL_WatchAdd("*0x6804,x","ePWM1 TBCTR"); - GEL_WatchAdd("*0x6805,x","ePWM1 TBPRD"); -} -hotmenu ePWM1_CMP_Regs() -{ - GEL_WatchAdd("*0x6807,x","ePWM1 CMPCTL"); - GEL_WatchAdd("*0x6808,x","ePWM1 CMPAHR"); - GEL_WatchAdd("*0x6809,x","ePWM1 CMPA"); - GEL_WatchAdd("*0x680A,x","ePWM1 CMPB"); -} -hotmenu ePWM1_AQ_Regs() -{ - GEL_WatchAdd("*0x680B,x","ePWM1 AQCTLA"); - GEL_WatchAdd("*0x680C,x","ePWM1 AQCTLB"); - GEL_WatchAdd("*0x680D,x","ePWM1 AQSFRC"); - GEL_WatchAdd("*0x680E,x","ePWM1 AQCSFRC"); -} -hotmenu ePWM1_DB_Regs() -{ - GEL_WatchAdd("*0x680F,x","ePWM1 DBCTL"); - GEL_WatchAdd("*0x6810,x","ePWM1 DBRED"); - GEL_WatchAdd("*0x6811,x","ePWM1 DBFED"); -} -hotmenu ePWM1_TZ_Regs() -{ - GEL_WatchAdd("*0x6812,x","ePWM1 TZSEL"); - GEL_WatchAdd("*0x6814,x","ePWM1 TZCTL"); - GEL_WatchAdd("*0x6815,x","ePWM1 TZEINT"); - GEL_WatchAdd("*0x6816,x","ePWM1 TZFLG"); - GEL_WatchAdd("*0x6817,x","ePWM1 TZCLR"); - GEL_WatchAdd("*0x6818,x","ePWM1 TZFRC"); -} -hotmenu ePWM1_ET_Regs() -{ - GEL_WatchAdd("*0x6819,x","ePWM1 ETSEL"); - GEL_WatchAdd("*0x681A,x","ePWM1 ETPS"); - GEL_WatchAdd("*0x681B,x","ePWM1 ETFLG"); - GEL_WatchAdd("*0x681C,x","ePWM1 ETCLR"); - GEL_WatchAdd("*0x681D,x","ePWM1 ETFRC"); -} -hotmenu ePWM2_All_Regs() -{ - GEL_WatchAdd("*0x6840,x","ePWM2 TBCTL"); - GEL_WatchAdd("*0x6841,x","ePWM2 TBSTS"); - GEL_WatchAdd("*0x6842,x","ePWM2 TBPHSHR"); - GEL_WatchAdd("*0x6843,x","ePWM2 TBPHS"); - GEL_WatchAdd("*0x6844,x","ePWM2 TBCTR"); - GEL_WatchAdd("*0x6845,x","ePWM2 TBPRD"); - GEL_WatchAdd("*0x6847,x","ePWM2 CMPCTL"); - GEL_WatchAdd("*0x6848,x","ePWM2 CMPAHR"); - GEL_WatchAdd("*0x6849,x","ePWM2 CMPA"); - GEL_WatchAdd("*0x684A,x","ePWM2 CMPB"); - GEL_WatchAdd("*0x684B,x","ePWM2 AQCTLA"); - GEL_WatchAdd("*0x684C,x","ePWM2 AQCTLB"); - GEL_WatchAdd("*0x684D,x","ePWM2 AQSFRC"); - GEL_WatchAdd("*0x684E,x","ePWM2 AQCSFRC"); - GEL_WatchAdd("*0x684F,x","ePWM2 DBCTL"); - GEL_WatchAdd("*0x6850,x","ePWM2 DBRED"); - GEL_WatchAdd("*0x6851,x","ePWM2 DBFED"); - GEL_WatchAdd("*0x6852,x","ePWM2 TZSEL"); - GEL_WatchAdd("*0x6853,x","ePWM2 TZDCSEL"); - GEL_WatchAdd("*0x6854,x","ePWM2 TZCTL"); - GEL_WatchAdd("*0x6855,x","ePWM2 TZEINT"); - GEL_WatchAdd("*0x6856,x","ePWM2 TZFLG"); - GEL_WatchAdd("*0x6857,x","ePWM2 TZCLR"); - GEL_WatchAdd("*0x6858,x","ePWM2 TZFRC"); - GEL_WatchAdd("*0x6859,x","ePWM2 ETSEL"); - GEL_WatchAdd("*0x685A,x","ePWM2 ETPS"); - GEL_WatchAdd("*0x685B,x","ePWM2 ETFLG"); - GEL_WatchAdd("*0x685C,x","ePWM2 ETCLR"); - GEL_WatchAdd("*0x685D,x","ePWM2 ETFRC"); - GEL_WatchAdd("*0x685E,x","ePWM2 PCCTL"); - GEL_WatchAdd("*0x6860,x","ePWM2 HRCNFG"); -} -hotmenu ePWM2_TB_Regs() -{ - GEL_WatchAdd("*0x6840,x","ePWM2 TBCTL"); - GEL_WatchAdd("*0x6841,x","ePWM2 TBSTS"); - GEL_WatchAdd("*0x6842,x","ePWM2 TBPHSHR"); - GEL_WatchAdd("*0x6843,x","ePWM2 TBPHS"); - GEL_WatchAdd("*0x6844,x","ePWM2 TBCTR"); - GEL_WatchAdd("*0x6845,x","ePWM2 TBPRD"); -} -hotmenu ePWM2_CMP_Regs() -{ - GEL_WatchAdd("*0x6847,x","ePWM2 CMPCTL"); - GEL_WatchAdd("*0x6848,x","ePWM2 CMPAHR"); - GEL_WatchAdd("*0x6849,x","ePWM2 CMPA"); - GEL_WatchAdd("*0x684A,x","ePWM2 CMPB"); -} -hotmenu ePWM2_AQ_Regs() -{ - GEL_WatchAdd("*0x684B,x","ePWM2 AQCTLA"); - GEL_WatchAdd("*0x684C,x","ePWM2 AQCTLB"); - GEL_WatchAdd("*0x684D,x","ePWM2 AQSFRC"); - GEL_WatchAdd("*0x684E,x","ePWM2 AQCSFRC"); -} -hotmenu ePWM2_DB_Regs() -{ - GEL_WatchAdd("*0x684F,x","ePWM2 DBCTL"); - GEL_WatchAdd("*0x6850,x","ePWM2 DBRED"); - GEL_WatchAdd("*0x6851,x","ePWM2 DBFED"); -} -hotmenu ePWM2_TZ_Regs() -{ - GEL_WatchAdd("*0x6852,x","ePWM2 TZSEL"); - GEL_WatchAdd("*0x6854,x","ePWM2 TZCTL"); - GEL_WatchAdd("*0x6855,x","ePWM2 TZEINT"); - GEL_WatchAdd("*0x6856,x","ePWM2 TZFLG"); - GEL_WatchAdd("*0x6857,x","ePWM2 TZCLR"); - GEL_WatchAdd("*0x6858,x","ePWM2 TZFRC"); -} -hotmenu ePWM2_ET_Regs() -{ - GEL_WatchAdd("*0x6859,x","ePWM2 ETSEL"); - GEL_WatchAdd("*0x685A,x","ePWM2 ETPS"); - GEL_WatchAdd("*0x685B,x","ePWM2 ETFLG"); - GEL_WatchAdd("*0x685C,x","ePWM2 ETCLR"); - GEL_WatchAdd("*0x685D,x","ePWM2 ETFRC"); -} -hotmenu ePWM3_All_Regs() -{ - GEL_WatchAdd("*0x6880,x","ePWM3 TBCTL"); - GEL_WatchAdd("*0x6881,x","ePWM3 TBSTS"); - GEL_WatchAdd("*0x6882,x","ePWM3 TBPHSHR"); - GEL_WatchAdd("*0x6883,x","ePWM3 TBPHS"); - GEL_WatchAdd("*0x6884,x","ePWM3 TBCTR"); - GEL_WatchAdd("*0x6885,x","ePWM3 TBPRD"); - GEL_WatchAdd("*0x6887,x","ePWM3 CMPCTL"); - GEL_WatchAdd("*0x6888,x","ePWM3 CMPAHR"); - GEL_WatchAdd("*0x6889,x","ePWM3 CMPA"); - GEL_WatchAdd("*0x688A,x","ePWM3 CMPB"); - GEL_WatchAdd("*0x688B,x","ePWM3 AQCTLA"); - GEL_WatchAdd("*0x688C,x","ePWM3 AQCTLB"); - GEL_WatchAdd("*0x688D,x","ePWM3 AQSFRC"); - GEL_WatchAdd("*0x688E,x","ePWM3 AQCSFRC"); - GEL_WatchAdd("*0x688F,x","ePWM3 DBCTL"); - GEL_WatchAdd("*0x6890,x","ePWM3 DBRED"); - GEL_WatchAdd("*0x6891,x","ePWM3 DBFED"); - GEL_WatchAdd("*0x6892,x","ePWM3 TZSEL"); - GEL_WatchAdd("*0x6893,x","ePWM3 TZDCSEL"); - GEL_WatchAdd("*0x6894,x","ePWM3 TZCTL"); - GEL_WatchAdd("*0x6895,x","ePWM3 TZEINT"); - GEL_WatchAdd("*0x6896,x","ePWM3 TZFLG"); - GEL_WatchAdd("*0x6897,x","ePWM3 TZCLR"); - GEL_WatchAdd("*0x6898,x","ePWM3 TZFRC"); - GEL_WatchAdd("*0x6899,x","ePWM3 ETSEL"); - GEL_WatchAdd("*0x689A,x","ePWM3 ETPS"); - GEL_WatchAdd("*0x689B,x","ePWM3 ETFLG"); - GEL_WatchAdd("*0x689C,x","ePWM3 ETCLR"); - GEL_WatchAdd("*0x689D,x","ePWM3 ETFRC"); - GEL_WatchAdd("*0x689E,x","ePWM3 PCCTL"); - GEL_WatchAdd("*0x68A0,x","ePWM3 HRCNFG"); -} -hotmenu ePWM3_TB_Regs() -{ - GEL_WatchAdd("*0x6880,x","ePWM3 TBCTL"); - GEL_WatchAdd("*0x6881,x","ePWM3 TBSTS"); - GEL_WatchAdd("*0x6882,x","ePWM3 TBPHSHR"); - GEL_WatchAdd("*0x6883,x","ePWM3 TBPHS"); - GEL_WatchAdd("*0x6884,x","ePWM3 TBCTR"); - GEL_WatchAdd("*0x6885,x","ePWM3 TBPRD"); -} -hotmenu ePWM3_CMP_Regs() -{ - GEL_WatchAdd("*0x6887,x","ePWM3 CMPCTL"); - GEL_WatchAdd("*0x6888,x","ePWM3 CMPAHR"); - GEL_WatchAdd("*0x6889,x","ePWM3 CMPA"); - GEL_WatchAdd("*0x688A,x","ePWM3 CMPB"); -} -hotmenu ePWM3_AQ_Regs() -{ - GEL_WatchAdd("*0x688B,x","ePWM3 AQCTLA"); - GEL_WatchAdd("*0x688C,x","ePWM3 AQCTLB"); - GEL_WatchAdd("*0x688D,x","ePWM3 AQSFRC"); - GEL_WatchAdd("*0x688E,x","ePWM3 AQCSFRC"); -} -hotmenu ePWM3_DB_Regs() -{ - GEL_WatchAdd("*0x688F,x","ePWM3 DBCTL"); - GEL_WatchAdd("*0x6890,x","ePWM3 DBRED"); - GEL_WatchAdd("*0x6891,x","ePWM3 DBFED"); -} -hotmenu ePWM3_TZ_Regs() -{ - GEL_WatchAdd("*0x6892,x","ePWM3 TZSEL"); - GEL_WatchAdd("*0x6894,x","ePWM3 TZCTL"); - GEL_WatchAdd("*0x6895,x","ePWM3 TZEINT"); - GEL_WatchAdd("*0x6896,x","ePWM3 TZFLG"); - GEL_WatchAdd("*0x6897,x","ePWM3 TZCLR"); - GEL_WatchAdd("*0x6898,x","ePWM3 TZFRC"); -} -hotmenu ePWM3_ET_Regs() -{ - GEL_WatchAdd("*0x6899,x","ePWM3 ETSEL"); - GEL_WatchAdd("*0x689A,x","ePWM3 ETPS"); - GEL_WatchAdd("*0x689B,x","ePWM3 ETFLG"); - GEL_WatchAdd("*0x689C,x","ePWM3 ETCLR"); - GEL_WatchAdd("*0x689D,x","ePWM3 ETFRC"); -} -hotmenu ePWM4_All_Regs() -{ - GEL_WatchAdd("*0x68C0,x","ePWM4 TBCTL"); - GEL_WatchAdd("*0x68C1,x","ePWM4 TBSTS"); - GEL_WatchAdd("*0x68C2,x","ePWM4 TBPHSHR"); - GEL_WatchAdd("*0x68C3,x","ePWM4 TBPHS"); - GEL_WatchAdd("*0x68C4,x","ePWM4 TBCTR"); - GEL_WatchAdd("*0x68C5,x","ePWM4 TBPRD"); - GEL_WatchAdd("*0x68C7,x","ePWM4 CMPCTL"); - GEL_WatchAdd("*0x68C8,x","ePWM4 CMPAHR"); - GEL_WatchAdd("*0x68C9,x","ePWM4 CMPA"); - GEL_WatchAdd("*0x68CA,x","ePWM4 CMPB"); - GEL_WatchAdd("*0x68CB,x","ePWM4 AQCTLA"); - GEL_WatchAdd("*0x68CC,x","ePWM4 AQCTLB"); - GEL_WatchAdd("*0x68CD,x","ePWM4 AQSFRC"); - GEL_WatchAdd("*0x68CE,x","ePWM4 AQCSFRC"); - GEL_WatchAdd("*0x68CF,x","ePWM4 DBCTL"); - GEL_WatchAdd("*0x68D0,x","ePWM4 DBRED"); - GEL_WatchAdd("*0x68D1,x","ePWM4 DBFED"); - GEL_WatchAdd("*0x68D2,x","ePWM4 TZSEL"); - GEL_WatchAdd("*0x68D3,x","ePWM4 TZDCSEL"); - GEL_WatchAdd("*0x68D4,x","ePWM4 TZCTL"); - GEL_WatchAdd("*0x68D5,x","ePWM4 TZEINT"); - GEL_WatchAdd("*0x68D6,x","ePWM4 TZFLG"); - GEL_WatchAdd("*0x68D7,x","ePWM4 TZCLR"); - GEL_WatchAdd("*0x68D8,x","ePWM4 TZFRC"); - GEL_WatchAdd("*0x68D9,x","ePWM4 ETSEL"); - GEL_WatchAdd("*0x68DA,x","ePWM4 ETPS"); - GEL_WatchAdd("*0x68DB,x","ePWM4 ETFLG"); - GEL_WatchAdd("*0x68DC,x","ePWM4 ETCLR"); - GEL_WatchAdd("*0x68DD,x","ePWM4 ETFRC"); - GEL_WatchAdd("*0x68DE,x","ePWM4 PCCTL"); - GEL_WatchAdd("*0x68E0,x","ePWM4 HRCNFG"); -} -hotmenu ePWM4_TB_Regs() -{ - GEL_WatchAdd("*0x68C0,x","ePWM4 TBCTL"); - GEL_WatchAdd("*0x68C1,x","ePWM4 TBSTS"); - GEL_WatchAdd("*0x68C2,x","ePWM4 TBPHSHR"); - GEL_WatchAdd("*0x68C3,x","ePWM4 TBPHS"); - GEL_WatchAdd("*0x68C4,x","ePWM4 TBCTR"); - GEL_WatchAdd("*0x68C5,x","ePWM4 TBPRD"); -} -hotmenu ePWM4_CMP_Regs() -{ - GEL_WatchAdd("*0x68C7,x","ePWM4 CMPCTL"); - GEL_WatchAdd("*0x68C8,x","ePWM4 CMPAHR"); - GEL_WatchAdd("*0x68C9,x","ePWM4 CMPA"); - GEL_WatchAdd("*0x68CA,x","ePWM4 CMPB"); -} -hotmenu ePWM4_AQ_Regs() -{ - GEL_WatchAdd("*0x68CB,x","ePWM4 AQCTLA"); - GEL_WatchAdd("*0x68CC,x","ePWM4 AQCTLB"); - GEL_WatchAdd("*0x68CD,x","ePWM4 AQSFRC"); - GEL_WatchAdd("*0x68CE,x","ePWM4 AQCSFRC"); -} -hotmenu ePWM4_DB_Regs() -{ - GEL_WatchAdd("*0x68CF,x","ePWM4 DBCTL"); - GEL_WatchAdd("*0x68D0,x","ePWM4 DBRED"); - GEL_WatchAdd("*0x68D1,x","ePWM4 DBFED"); -} -hotmenu ePWM4_TZ_Regs() -{ - GEL_WatchAdd("*0x68D2,x","ePWM4 TZSEL"); - GEL_WatchAdd("*0x68D4,x","ePWM4 TZCTL"); - GEL_WatchAdd("*0x68D5,x","ePWM4 TZEINT"); - GEL_WatchAdd("*0x68D6,x","ePWM4 TZFLG"); - GEL_WatchAdd("*0x68D7,x","ePWM4 TZCLR"); - GEL_WatchAdd("*0x68D8,x","ePWM4 TZFRC"); -} -hotmenu ePWM4_ET_Regs() -{ - GEL_WatchAdd("*0x68D9,x","ePWM4 ETSEL"); - GEL_WatchAdd("*0x68DA,x","ePWM4 ETPS"); - GEL_WatchAdd("*0x68DB,x","ePWM4 ETFLG"); - GEL_WatchAdd("*0x68DC,x","ePWM4 ETCLR"); - GEL_WatchAdd("*0x68DD,x","ePWM4 ETFRC"); -} -hotmenu ePWM5_All_Regs() -{ - GEL_WatchAdd("*0x6900,x","ePWM5 TBCTL"); - GEL_WatchAdd("*0x6901,x","ePWM5 TBSTS"); - GEL_WatchAdd("*0x6903,x","ePWM5 TBPHS"); - GEL_WatchAdd("*0x6904,x","ePWM5 TBCTR"); - GEL_WatchAdd("*0x6905,x","ePWM5 TBPRD"); - GEL_WatchAdd("*0x6907,x","ePWM5 CMPCTL"); - GEL_WatchAdd("*0x6909,x","ePWM5 CMPA"); - GEL_WatchAdd("*0x690A,x","ePWM5 CMPB"); - GEL_WatchAdd("*0x690B,x","ePWM5 AQCTLA"); - GEL_WatchAdd("*0x690C,x","ePWM5 AQCTLB"); - GEL_WatchAdd("*0x690D,x","ePWM5 AQSFRC"); - GEL_WatchAdd("*0x690E,x","ePWM5 AQCSFRC"); - GEL_WatchAdd("*0x690F,x","ePWM5 DBCTL"); - GEL_WatchAdd("*0x6910,x","ePWM5 DBRED"); - GEL_WatchAdd("*0x6911,x","ePWM5 DBFED"); - GEL_WatchAdd("*0x6912,x","ePWM5 TZSEL"); - GEL_WatchAdd("*0x6913,x","ePWM5 TZDCSEL"); - GEL_WatchAdd("*0x6914,x","ePWM5 TZCTL"); - GEL_WatchAdd("*0x6915,x","ePWM5 TZEINT"); - GEL_WatchAdd("*0x6916,x","ePWM5 TZFLG"); - GEL_WatchAdd("*0x6917,x","ePWM5 TZCLR"); - GEL_WatchAdd("*0x6918,x","ePWM5 TZFRC"); - GEL_WatchAdd("*0x6919,x","ePWM5 ETSEL"); - GEL_WatchAdd("*0x691A,x","ePWM5 ETPS"); - GEL_WatchAdd("*0x691B,x","ePWM5 ETFLG"); - GEL_WatchAdd("*0x691C,x","ePWM5 ETCLR"); - GEL_WatchAdd("*0x691D,x","ePWM5 ETFRC"); - GEL_WatchAdd("*0x691E,x","ePWM5 PCCTL"); -} -hotmenu ePWM5_TB_Regs() -{ - GEL_WatchAdd("*0x6900,x","ePWM5 TBCTL"); - GEL_WatchAdd("*0x6901,x","ePWM5 TBSTS"); - GEL_WatchAdd("*0x6903,x","ePWM5 TBPHS"); - GEL_WatchAdd("*0x6904,x","ePWM5 TBCTR"); - GEL_WatchAdd("*0x6905,x","ePWM5 TBPRD"); -} -hotmenu ePWM5_CMP_Regs() -{ - GEL_WatchAdd("*0x6907,x","ePWM5 CMPCTL"); - GEL_WatchAdd("*0x6909,x","ePWM5 CMPA"); - GEL_WatchAdd("*0x690A,x","ePWM5 CMPB"); -} -hotmenu ePWM5_AQ_Regs() -{ - GEL_WatchAdd("*0x690B,x","ePWM5 AQCTLA"); - GEL_WatchAdd("*0x690C,x","ePWM5 AQCTLB"); - GEL_WatchAdd("*0x690D,x","ePWM5 AQSFRC"); - GEL_WatchAdd("*0x690E,x","ePWM5 AQCSFRC"); -} -hotmenu ePWM5_DB_Regs() -{ - GEL_WatchAdd("*0x690F,x","ePWM5 DBCTL"); - GEL_WatchAdd("*0x6910,x","ePWM5 DBRED"); - GEL_WatchAdd("*0x6911,x","ePWM5 DBFED"); -} -hotmenu ePWM5_TZ_Regs() -{ - GEL_WatchAdd("*0x6912,x","ePWM5 TZSEL"); - GEL_WatchAdd("*0x6914,x","ePWM5 TZCTL"); - GEL_WatchAdd("*0x6915,x","ePWM5 TZEINT"); - GEL_WatchAdd("*0x6916,x","ePWM5 TZFLG"); - GEL_WatchAdd("*0x6917,x","ePWM5 TZCLR"); - GEL_WatchAdd("*0x6918,x","ePWM5 TZFRC"); -} -hotmenu ePWM5_ET_Regs() -{ - GEL_WatchAdd("*0x6919,x","ePWM5 ETSEL"); - GEL_WatchAdd("*0x691A,x","ePWM5 ETPS"); - GEL_WatchAdd("*0x691B,x","ePWM5 ETFLG"); - GEL_WatchAdd("*0x691C,x","ePWM5 ETCLR"); - GEL_WatchAdd("*0x691D,x","ePWM5 ETFRC"); -} -hotmenu ePWM6_All_Regs() -{ - GEL_WatchAdd("*0x6940,x","ePWM6 TBCTL"); - GEL_WatchAdd("*0x6941,x","ePWM6 TBSTS"); - GEL_WatchAdd("*0x6943,x","ePWM6 TBPHS"); - GEL_WatchAdd("*0x6944,x","ePWM6 TBCTR"); - GEL_WatchAdd("*0x6945,x","ePWM6 TBPRD"); - GEL_WatchAdd("*0x6947,x","ePWM6 CMPCTL"); - GEL_WatchAdd("*0x6949,x","ePWM6 CMPA"); - GEL_WatchAdd("*0x694A,x","ePWM6 CMPB"); - GEL_WatchAdd("*0x694B,x","ePWM6 AQCTLA"); - GEL_WatchAdd("*0x694C,x","ePWM6 AQCTLB"); - GEL_WatchAdd("*0x694D,x","ePWM6 AQSFRC"); - GEL_WatchAdd("*0x694E,x","ePWM6 AQCSFRC"); - GEL_WatchAdd("*0x694F,x","ePWM6 DBCTL"); - GEL_WatchAdd("*0x6950,x","ePWM6 DBRED"); - GEL_WatchAdd("*0x6951,x","ePWM6 DBFED"); - GEL_WatchAdd("*0x6952,x","ePWM6 TZSEL"); - GEL_WatchAdd("*0x6953,x","ePWM6 TZDCSEL"); - GEL_WatchAdd("*0x6954,x","ePWM6 TZCTL"); - GEL_WatchAdd("*0x6955,x","ePWM6 TZEINT"); - GEL_WatchAdd("*0x6956,x","ePWM6 TZFLG"); - GEL_WatchAdd("*0x6957,x","ePWM6 TZCLR"); - GEL_WatchAdd("*0x6958,x","ePWM6 TZFRC"); - GEL_WatchAdd("*0x6959,x","ePWM6 ETSEL"); - GEL_WatchAdd("*0x695A,x","ePWM6 ETPS"); - GEL_WatchAdd("*0x695B,x","ePWM6 ETFLG"); - GEL_WatchAdd("*0x695C,x","ePWM6 ETCLR"); - GEL_WatchAdd("*0x695D,x","ePWM6 ETFRC"); - GEL_WatchAdd("*0x695E,x","ePWM6 PCCTL"); - -} -hotmenu ePWM6_TB_Regs() -{ - GEL_WatchAdd("*0x6940,x","ePWM6 TBCTL"); - GEL_WatchAdd("*0x6941,x","ePWM6 TBSTS"); - GEL_WatchAdd("*0x6943,x","ePWM6 TBPHS"); - GEL_WatchAdd("*0x6944,x","ePWM6 TBCTR"); - GEL_WatchAdd("*0x6945,x","ePWM6 TBPRD"); -} -hotmenu ePWM6_CMP_Regs() -{ - GEL_WatchAdd("*0x6947,x","ePWM6 CMPCTL"); - GEL_WatchAdd("*0x6949,x","ePWM6 CMPA"); - GEL_WatchAdd("*0x694A,x","ePWM6 CMPB"); -} -hotmenu ePWM6_AQ_Regs() -{ - GEL_WatchAdd("*0x694B,x","ePWM6 AQCTLA"); - GEL_WatchAdd("*0x694C,x","ePWM6 AQCTLB"); - GEL_WatchAdd("*0x694D,x","ePWM6 AQSFRC"); - GEL_WatchAdd("*0x694E,x","ePWM6 AQCSFRC"); -} -hotmenu ePWM6_DB_Regs() -{ - GEL_WatchAdd("*0x694F,x","ePWM6 DBCTL"); - GEL_WatchAdd("*0x6950,x","ePWM6 DBRED"); - GEL_WatchAdd("*0x6951,x","ePWM6 DBFED"); -} -hotmenu ePWM6_TZ_Regs() -{ - GEL_WatchAdd("*0x6952,x","ePWM6 TZSEL"); - GEL_WatchAdd("*0x6954,x","ePWM6 TZCTL"); - GEL_WatchAdd("*0x6955,x","ePWM6 TZEINT"); - GEL_WatchAdd("*0x6956,x","ePWM6 TZFLG"); - GEL_WatchAdd("*0x6957,x","ePWM6 TZCLR"); - GEL_WatchAdd("*0x6958,x","ePWM6 TZFRC"); -} -hotmenu ePWM6_ET_Regs() -{ - GEL_WatchAdd("*0x6959,x","ePWM6 ETSEL"); - GEL_WatchAdd("*0x695A,x","ePWM6 ETPS"); - GEL_WatchAdd("*0x695B,x","ePWM6 ETFLG"); - GEL_WatchAdd("*0x695C,x","ePWM6 ETCLR"); - GEL_WatchAdd("*0x695D,x","ePWM6 ETFRC"); -} - - -/********************************************************************/ -/* Enhanced EQEP Registers */ -/********************************************************************/ -menuitem "Watch eQEP" - -hotmenu eQEP1_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6B00,x","eQEP1 QPOSCNT"); - GEL_WatchAdd("*(long *)0x6B02,x","eQEP1 QPOSINIT"); - GEL_WatchAdd("*(long *)0x6B04,x","eQEP1 QPOSMAX"); - GEL_WatchAdd("*(long *)0x6B06,x","eQEP1 QPOSCMP"); - GEL_WatchAdd("*(long *)0x6B08,x","eQEP1 QPOSILAT"); - GEL_WatchAdd("*(long *)0x6B0A,x","eQEP1 QPOSSLAT"); - GEL_WatchAdd("*(long *)0x6B0C,x","eQEP1 QPOSLAT"); - GEL_WatchAdd("*(long *)0x6B0E,x","eQEP1 QUTMR"); - GEL_WatchAdd("*(long *)0x6B10,x","eQEP1 QUPRD"); - GEL_WatchAdd("*0x6B12,x","eQEP1 QWDTMR"); - GEL_WatchAdd("*0x6B13,x","eQEP1 QWDPRD"); - GEL_WatchAdd("*0x6B14,x","eQEP1 QDECCTL"); - GEL_WatchAdd("*0x6B15,x","eQEP1 QEPCTL"); - GEL_WatchAdd("*0x6B16,x","eQEP1 QCAPCTL"); - GEL_WatchAdd("*0x6B17,x","eQEP1 QPOSCTL"); - GEL_WatchAdd("*0x6B18,x","eQEP1 QEINT"); - GEL_WatchAdd("*0x6B19,x","eQEP1 QFLG"); - GEL_WatchAdd("*0x6B1A,x","eQEP1 QCLR"); - GEL_WatchAdd("*0x6B1B,x","eQEP1 QFRC"); - GEL_WatchAdd("*0x6B1C,x","eQEP1 QEPSTS"); - GEL_WatchAdd("*0x6B1D,x","eQEP1 QCTMR"); - GEL_WatchAdd("*0x6B1E,x","eQEP1 QCPRD"); - GEL_WatchAdd("*0x6B1F,x","eQEP1 QCTMRLAT"); - GEL_WatchAdd("*0x6B20,x","eQEP1 QCPRDLAT"); -} -hotmenu eQEP2_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6B40,x","eQEP2 QPOSCNT"); - GEL_WatchAdd("*(long *)0x6B42,x","eQEP2 QPOSINIT"); - GEL_WatchAdd("*(long *)0x6B44,x","eQEP2 QPOSMAX"); - GEL_WatchAdd("*(long *)0x6B46,x","eQEP2 QPOSCMP"); - GEL_WatchAdd("*(long *)0x6B48,x","eQEP2 QPOSILAT"); - GEL_WatchAdd("*(long *)0x6B4A,x","eQEP2 QPOSSLAT"); - GEL_WatchAdd("*(long *)0x6B4C,x","eQEP2 QPOSLAT"); - GEL_WatchAdd("(long *)*0x6B4E,x","eQEP2 QUTMR"); - GEL_WatchAdd("*(long *)0x6B50,x","eQEP2 QUPRD"); - GEL_WatchAdd("*0x6B52,x","eQEP2 QWDTMR"); - GEL_WatchAdd("*0x6B53,x","eQEP2 QWDPRD"); - GEL_WatchAdd("*0x6B54,x","eQEP2 QDECCTL"); - GEL_WatchAdd("*0x6B55,x","eQEP2 QEPCTL"); - GEL_WatchAdd("*0x6B56,x","eQEP2 QCAPCTL"); - GEL_WatchAdd("*0x6B57,x","eQEP2 QPOSCTL"); - GEL_WatchAdd("*0x6B58,x","eQEP2 QEINT"); - GEL_WatchAdd("*0x6B59,x","eQEP2 QFLG"); - GEL_WatchAdd("*0x6B5A,x","eQEP2 QCLR"); - GEL_WatchAdd("*0x6B5B,x","eQEP2 QFRC"); - GEL_WatchAdd("*0x6B5C,x","eQEP2 QEPSTS"); - GEL_WatchAdd("*0x6B5D,x","eQEP2 QCTMR"); - GEL_WatchAdd("*0x6B5E,x","eQEP2 QCPRD"); - GEL_WatchAdd("*0x6B5F,x","eQEP2 QCTMRLAT"); - GEL_WatchAdd("*0x6B60,x","eQEP2 QCPRDLAT"); -} - - -/********************************************************************/ -/* External Interface Registers */ -/********************************************************************/ -menuitem "Watch External Interface Registers"; - -hotmenu All_External_Interface_Regs() -{ - GEL_WatchAdd("*(long *)0x0B20,x","XTIMING0"); - GEL_WatchAdd("*(long *)0x0B2C,x","XTIMING6"); - GEL_WatchAdd("*(long *)0x0B2E,x","XTIMING7"); - GEL_WatchAdd("*(long *)0x0B34,x","XINTCNF2"); - GEL_WatchAdd("*0x0B38,x","XBANK"); - GEL_WatchAdd("*0x0B3A,x","XREVISION"); - GEL_WatchAdd("*0x0B3D,x","XRESET"); -} - -/********************************************************************/ -/* External Interrupt Registers */ -/********************************************************************/ -menuitem "Watch External Interrupt Registers"; - -hotmenu All_XINT_Regs() -{ - GEL_WatchAdd("*0x7070,x","XINT1CR"); - GEL_WatchAdd("*0x7071,x","XINT2CR"); - GEL_WatchAdd("*0x7072,x","XINT3CR"); - GEL_WatchAdd("*0x7073,x","XINT4CR"); - GEL_WatchAdd("*0x7074,x","XINT5CR"); - GEL_WatchAdd("*0x7075,x","XINT6CR"); - GEL_WatchAdd("*0x7076,x","XINT7CR"); - GEL_WatchAdd("*0x7077,x","XNMICR"); - GEL_WatchAdd("*0x7078,x","XINT1CTR"); - GEL_WatchAdd("*0x7079,x","XINT2CTR"); - GEL_WatchAdd("*0x707F,x","XNMICTR"); -} -hotmenu XINT_Control_Regs() -{ - GEL_WatchAdd("*0x7070,x","XINT1CR"); - GEL_WatchAdd("*0x7071,x","XINT2CR"); - GEL_WatchAdd("*0x7072,x","XINT3CR"); - GEL_WatchAdd("*0x7073,x","XINT4CR"); - GEL_WatchAdd("*0x7074,x","XINT5CR"); - GEL_WatchAdd("*0x7075,x","XINT6CR"); - GEL_WatchAdd("*0x7076,x","XINT7CR"); - GEL_WatchAdd("*0x7077,x","XNMICR"); -} -hotmenu XINT_Counter_Regs() -{ - GEL_WatchAdd("*0x7078,x","XINT1CTR"); - GEL_WatchAdd("*0x7079,x","XINT2CTR"); - GEL_WatchAdd("*0x707F,x","XNMICTR"); -} - - -/********************************************************************/ -/* FPU Registers */ -/********************************************************************/ -menuitem "Watch FPU Registers" - -hotmenu All_FPU_Single_Precision_Regs() -{ - GEL_WatchAdd("RB"); - GEL_WatchAdd("STF"); - GEL_WatchAdd("R0H"); - GEL_WatchAdd("R1H"); - GEL_WatchAdd("R2H"); - GEL_WatchAdd("R3H"); - GEL_WatchAdd("R4H"); - GEL_WatchAdd("R5H"); - GEL_WatchAdd("R6H"); - GEL_WatchAdd("R7H"); -} - - -/********************************************************************/ -/* GPIO Registers */ -/********************************************************************/ -menuitem "Watch GPIO Registers"; - -hotmenu All_GPIO_CONTROL_Regs() -{ - GEL_WatchAdd("*(long *)0x6F80,x","GPACTRL"); - GEL_WatchAdd("*(long *)0x6F82,x","GPAQSEL1"); - GEL_WatchAdd("*(long *)0x6F84,x","GPAQSEL2"); - GEL_WatchAdd("*(long *)0x6F86,x","GPAMUX1"); - GEL_WatchAdd("*(long *)0x6F88,x","GPAMUX2"); - GEL_WatchAdd("*(long *)0x6F8A,x","GPADIR"); - GEL_WatchAdd("*(long *)0x6F8C,x","GPAPUD"); - - GEL_WatchAdd("*(long *)0x6F90,x","GPBCTRL"); - GEL_WatchAdd("*(long *)0x6F92,x","GPBQSEL1"); - GEL_WatchAdd("*(long *)0x6F94,x","GPBQSEL2"); - GEL_WatchAdd("*(long *)0x6F96,x","GPBMUX1"); - GEL_WatchAdd("*(long *)0x6F98,x","GPBMUX2"); - GEL_WatchAdd("*(long *)0x6F9A,x","GPBDIR"); - GEL_WatchAdd("*(long *)0x6F9C,x","GPBPUD"); - - GEL_WatchAdd("*(long *)0x6FA6,x","GPCMUX1"); - GEL_WatchAdd("*(long *)0x6FA8,x","GPCMUX2"); - GEL_WatchAdd("*(long *)0x6FAA,x","GPCDIR"); - GEL_WatchAdd("*(long *)0x6FAC,x","GPCPUD"); -} -hotmenu All_GPIO_DATA_Regs() -{ - GEL_WatchAdd("*(long *)0x6FC0,x","GPADAT"); - GEL_WatchAdd("*(long *)0x6FC2,x","GPASET"); - GEL_WatchAdd("*(long *)0x6FC4,x","GPACLEAR"); - GEL_WatchAdd("*(long *)0x6FC6,x","GPATOGGLE"); - - GEL_WatchAdd("*(long *)0x6FC8,x","GPBDAT"); - GEL_WatchAdd("*(long *)0x6FCA,x","GPBSET"); - GEL_WatchAdd("*(long *)0x6FCC,x","GPBCLEAR"); - GEL_WatchAdd("*(long *)0x6FCE,x","GPBTOGGLE"); - - GEL_WatchAdd("*(long *)0x6FD0,x","GPCDAT"); - GEL_WatchAdd("*(long *)0x6FD2,x","GPCSET"); - GEL_WatchAdd("*(long *)0x6FD4,x","GPCCLEAR"); - GEL_WatchAdd("*(long *)0x6FD6,x","GPCTOGGLE"); -} -hotmenu All_GPIO_INTERRUPT_Regs() -{ - GEL_WatchAdd("*0x6FE0,x","GPIOXINT1SEL"); - GEL_WatchAdd("*0x6FE1,x","GPIOXINT2SEL"); - GEL_WatchAdd("*0x6FE2,x","GPIOXNMISEL"); - GEL_WatchAdd("*0x6FE3,x","GPIOXINT3SEL"); - GEL_WatchAdd("*0x6FE4,x","GPIOXINT4SEL"); - GEL_WatchAdd("*0x6FE5,x","GPIOXINT5SEL"); - GEL_WatchAdd("*0x6FE6,x","GPIOXINT6SEL"); - GEL_WatchAdd("*0x6FE7,x","GPIOXINT7SEL"); - GEL_WatchAdd("*(long *)0x6FE8,x","GPIOLPMSEL"); -} -hotmenu All_GPA_Registers() -{ - GEL_WatchAdd("*(long *)0x6F80,x","GPACTRL"); - GEL_WatchAdd("*(long *)0x6F82,x","GPAQSEL1"); - GEL_WatchAdd("*(long *)0x6F84,x","GPAQSEL2"); - GEL_WatchAdd("*(long *)0x6F86,x","GPAMUX1"); - GEL_WatchAdd("*(long *)0x6F88,x","GPAMUX2"); - GEL_WatchAdd("*(long *)0x6F8A,x","GPADIR"); - GEL_WatchAdd("*(long *)0x6F8C,x","GPAPUD"); - - GEL_WatchAdd("*(long *)0x6FC0,x","GPADAT"); - GEL_WatchAdd("*(long *)0x6FC2,x","GPASET"); - GEL_WatchAdd("*(long *)0x6FC4,x","GPACLEAR"); - GEL_WatchAdd("*(long *)0x6FC6,x","GPATOGGLE"); -} -hotmenu All_GPB_Registers() -{ - GEL_WatchAdd("*(long *)0x6F90,x","GPBCTRL"); - GEL_WatchAdd("*(long *)0x6F92,x","GPBQSEL1"); - GEL_WatchAdd("*(long *)0x6F94,x","GPBQSEL2"); - GEL_WatchAdd("*(long *)0x6F96,x","GPBMUX1"); - GEL_WatchAdd("*(long *)0x6F98,x","GPBMUX2"); - GEL_WatchAdd("*(long *)0x6F9A,x","GPBDIR"); - GEL_WatchAdd("*(long *)0x6F9C,x","GPBPUD"); - - GEL_WatchAdd("*(long *)0x6FC8,x","GPBDAT"); - GEL_WatchAdd("*(long *)0x6FCA,x","GPBSET"); - GEL_WatchAdd("*(long *)0x6FCC,x","GPBCLEAR"); - GEL_WatchAdd("*(long *)0x6FCE,x","GPBTOGGLE"); -} -hotmenu All_GPC_Registers() -{ - GEL_WatchAdd("*(long *)0x6FA6,x","GPCMUX1"); - GEL_WatchAdd("*(long *)0x6FA8,x","GPCMUX2"); - GEL_WatchAdd("*(long *)0x6FAA,x","GPCDIR"); - GEL_WatchAdd("*(long *)0x6FAC,x","GPCPUD"); - - GEL_WatchAdd("*(long *)0x6FC8,x","GPBDAT"); - GEL_WatchAdd("*(long *)0x6FCA,x","GPBSET"); - GEL_WatchAdd("*(long *)0x6FCC,x","GPBCLEAR"); - GEL_WatchAdd("*(long *)0x6FCE,x","GPBTOGGLE"); - - GEL_WatchAdd("*(long *)0x6FD0,x","GPCDAT"); - GEL_WatchAdd("*(long *)0x6FD2,x","GPCSET"); - GEL_WatchAdd("*(long *)0x6FD4,x","GPCCLEAR"); - GEL_WatchAdd("*(long *)0x6FD6,x","GPCTOGGLE"); -} - - -/********************************************************************/ -/* Multichannel Serial Port Registers */ -/********************************************************************/ -menuitem "Watch McBSP Registers"; - -hotmenu All_McBSP_A_Regs() -{ - GEL_WatchAdd("*0x5000,x","McBSPA DRR2"); - GEL_WatchAdd("*0x5001,x","McBSPA DRR1"); - GEL_WatchAdd("*0x5002,x","McBSPA DXR2"); - GEL_WatchAdd("*0x5003,x","McBSPA DXR1"); - GEL_WatchAdd("*0x5004,x","McBSPA SPCR2"); - GEL_WatchAdd("*0x5005,x","McBSPA SPCR1"); - GEL_WatchAdd("*0x5006,x","McBSPA RCR2"); - GEL_WatchAdd("*0x5007,x","McBSPA RCR1"); - GEL_WatchAdd("*0x5008,x","McBSPA XCR2"); - GEL_WatchAdd("*0x5009,x","McBSPA XCR1"); - GEL_WatchAdd("*0x500A,x","McBSPA SRGR2"); - GEL_WatchAdd("*0x500B,x","McBSPA SRGR1"); - GEL_WatchAdd("*0x500C,x","McBSPA MCR2"); - GEL_WatchAdd("*0x500D,x","McBSPA MCR1"); - GEL_WatchAdd("*0x500E,x","McBSPA RCERA"); - GEL_WatchAdd("*0x500F,x","McBSPA RCERB"); - GEL_WatchAdd("*0x5010,x","McBSPA XCERA"); - GEL_WatchAdd("*0x5011,x","McBSPA XCERB"); - GEL_WatchAdd("*0x5012,x","McBSPA PCR1"); - GEL_WatchAdd("*0x5013,x","McBSPA RCERC"); - GEL_WatchAdd("*0x5014,x","McBSPA RCERD"); - GEL_WatchAdd("*0x5015,x","McBSPA XCERC"); - GEL_WatchAdd("*0x5016,x","McBSPA XCERD"); - GEL_WatchAdd("*0x5017,x","McBSPA RCERE"); - GEL_WatchAdd("*0x5018,x","McBSPA RCERF"); - GEL_WatchAdd("*0x5019,x","McBSPA XCERE"); - GEL_WatchAdd("*0x501A,x","McBSPA XCERF"); - GEL_WatchAdd("*0x501B,x","McBSPA RCERG"); - GEL_WatchAdd("*0x501C,x","McBSPA RCERH"); - GEL_WatchAdd("*0x501D,x","McBSPA XCERG"); - GEL_WatchAdd("*0x501E,x","McBSPA XCERH"); - GEL_WatchAdd("*0x5023,x","McBSPA MFFINT"); - GEL_WatchAdd("*0x503F,x","McBSPA Revision"); -} - -/********************************************************************/ -/* I2C Registers */ -/********************************************************************/ -menuitem "Watch I2C Registers"; - -hotmenu All_I2C_Regs() -{ - GEL_WatchAdd("*0x7900,x","I2COAR"); - GEL_WatchAdd("*0x7901,x","I2CIER"); - GEL_WatchAdd("*0x7902,x","I2CSTR"); - GEL_WatchAdd("*0x7903,x","I2CCLKL"); - GEL_WatchAdd("*0x7904,x","I2CCLKH"); - GEL_WatchAdd("*0x7905,x","I2CCNT"); - GEL_WatchAdd("*0x7906,x","I2CDRR"); - GEL_WatchAdd("*0x7907,x","I2CSAR"); - GEL_WatchAdd("*0x7908,x","I2CDXR"); - GEL_WatchAdd("*0x7909,x","I2CMDR"); - GEL_WatchAdd("*0x790A,x","I2CISRC"); - GEL_WatchAdd("*0x790C,x","I2CPSC"); - GEL_WatchAdd("*0x7920,x","I2CFFTX"); - GEL_WatchAdd("*0x7921,x","I2CFFRX"); -} - - -/********************************************************************/ -/* Peripheral Interrupt Expansion Registers */ -/********************************************************************/ -menuitem "Watch Peripheral Interrupt Expansion Registers"; - -hotmenu All_PIE_Regs() -{ - GEL_WatchAdd("*0x0CE0,x","PIECTRL"); - GEL_WatchAdd("*0x0CE1,x","PIEACK"); - GEL_WatchAdd("*0x0CE2,x","PIEIER1"); - GEL_WatchAdd("*0x0CE3,x","PIEIFR1"); - GEL_WatchAdd("*0x0CE4,x","PIEIER2"); - GEL_WatchAdd("*0x0CE5,x","PIEIFR2"); - GEL_WatchAdd("*0x0CE6,x","PIEIER3"); - GEL_WatchAdd("*0x0CE7,x","PIEIFR3"); - GEL_WatchAdd("*0x0CE8,x","PIEIER4"); - GEL_WatchAdd("*0x0CE9,x","PIEIFR4"); - GEL_WatchAdd("*0x0CEA,x","PIEIER5"); - GEL_WatchAdd("*0x0CEB,x","PIEIFR5"); - GEL_WatchAdd("*0x0CEC,x","PIEIER6"); - GEL_WatchAdd("*0x0CED,x","PIEIFR6"); - GEL_WatchAdd("*0x0CEE,x","PIEIER7"); - GEL_WatchAdd("*0x0CEF,x","PIEIFR7"); - GEL_WatchAdd("*0x0CF0,x","PIEIER8"); - GEL_WatchAdd("*0x0CF1,x","PIEIFR8"); - GEL_WatchAdd("*0x0CF2,x","PIEIER9"); - GEL_WatchAdd("*0x0CF3,x","PIEIFR9"); - GEL_WatchAdd("*0x0CF4,x","PIEIER10"); - GEL_WatchAdd("*0x0CF5,x","PIEIFR10"); - GEL_WatchAdd("*0x0CF6,x","PIEIER11"); - GEL_WatchAdd("*0x0CF7,x","PIEIFR11"); - GEL_WatchAdd("*0x0CF8,x","PIEIER12"); - GEL_WatchAdd("*0x0CF9,x","PIEIFR12"); -} -hotmenu PIECTRL() -{ - GEL_WatchAdd("*0x0CE0,x","PIECTRL"); -} -hotmenu PIEACK() -{ - GEL_WatchAdd("*0x0CE1,x","PIEACK"); -} -hotmenu PIEIER1_and_PIEIFR1() -{ - GEL_WatchAdd("*0x0CE2,x","PIEIER1"); - GEL_WatchAdd("*0x0CE3,x","PIEIFR1"); -} -hotmenu PIEIER2_and_PIEIFR2() -{ - GEL_WatchAdd("*0x0CE4,x","PIEIER2"); - GEL_WatchAdd("*0x0CE5,x","PIEIFR2"); -} -hotmenu PIEIER3_and_PIEIFR3() -{ - GEL_WatchAdd("*0x0CE6,x","PIEIER3"); - GEL_WatchAdd("*0x0CE7,x","PIEIFR3"); -} -hotmenu PIEIER4_and_PIEIFR4() -{ - GEL_WatchAdd("*0x0CE8,x","PIEIER4"); - GEL_WatchAdd("*0x0CE9,x","PIEIFR4"); -} -hotmenu PIEIER5_and_PIEIFR5() -{ - GEL_WatchAdd("*0x0CEA,x","PIEIER5"); - GEL_WatchAdd("*0x0CEB,x","PIEIFR5"); -} -hotmenu PIEIER6_and_PIEIFR6() -{ - GEL_WatchAdd("*0x0CEC,x","PIEIER6"); - GEL_WatchAdd("*0x0CED,x","PIEIFR6"); -} -hotmenu PIEIER7_and_PIEIFR7() -{ - GEL_WatchAdd("*0x0CEE,x","PIEIER7"); - GEL_WatchAdd("*0x0CEF,x","PIEIFR7"); -} -hotmenu PIEIER8_and_PIEIFR8() -{ - GEL_WatchAdd("*0x0CF0,x","PIEIER8"); - GEL_WatchAdd("*0x0CF1,x","PIEIFR8"); -} -hotmenu PIEIER9_and_PIEIFR9() -{ - GEL_WatchAdd("*0x0CF2,x","PIEIER9"); - GEL_WatchAdd("*0x0CF3,x","PIEIFR9"); -} -hotmenu PIEIFR10_and_PIEIFR10() -{ - GEL_WatchAdd("*0x0CF4,x","PIEIER10"); - GEL_WatchAdd("*0x0CF5,x","PIEIFR10"); -} -hotmenu PIEIER11_and_PIEIFR11() -{ - GEL_WatchAdd("*0x0CF6,x","PIEIER11"); - GEL_WatchAdd("*0x0CF7,x","PIEIFR11"); -} -hotmenu PIEIER12_and_PIEIFR12() -{ - GEL_WatchAdd("*0x0CF8,x","PIEIER12"); - GEL_WatchAdd("*0x0CF9,x","PIEIFR12"); -} - - -/********************************************************************/ -/* Serial Communication Interface Registers */ -/********************************************************************/ -menuitem "Watch SCI Registers"; - -hotmenu SCI_A_All_Regs() -{ - GEL_WatchAdd("*0x7050,x","SCICCRA"); - GEL_WatchAdd("*0x7051,x","SCICTL1A"); - GEL_WatchAdd("*0x7052,x","SCIHBAUDA"); - GEL_WatchAdd("*0x7053,x","SCILBAUDA"); - GEL_WatchAdd("*0x7054,x","SCICTL2A"); - GEL_WatchAdd("*0x7055,x","SCIRXSTA"); - GEL_WatchAdd("*0x7056,x","SCIRXEMUA"); - GEL_WatchAdd("*0x7057,x","SCIRXBUFA"); - GEL_WatchAdd("*0x7059,x","SCITXBUFA"); - GEL_WatchAdd("*0x705A,x","SCIFFTXA"); - GEL_WatchAdd("*0x705B,x","SCIFFRXA"); - GEL_WatchAdd("*0x705C,x","SCIFFCTA"); - GEL_WatchAdd("*0x705F,x","SCIPRIA"); -} -hotmenu SCI_A_FIFO_Registers() -{ - GEL_WatchAdd("*0x705A,x","SCIFFTXA"); - GEL_WatchAdd("*0x705B,x","SCIFFRXA"); - GEL_WatchAdd("*0x705C,x","SCIFFCTA"); -} -hotmenu SCI_B_All_Regs() -{ - GEL_WatchAdd("*0x7750,x","SCICCRB"); - GEL_WatchAdd("*0x7751,x","SCICTL1B"); - GEL_WatchAdd("*0x7752,x","SCIHBAUDB"); - GEL_WatchAdd("*0x7753,x","SCILBAUDB"); - GEL_WatchAdd("*0x7754,x","SCICTL2B"); - GEL_WatchAdd("*0x7755,x","SCIRXSTB"); - GEL_WatchAdd("*0x7756,x","SCIRXEMUB"); - GEL_WatchAdd("*0x7757,x","SCIRXBUFB"); - GEL_WatchAdd("*0x7759,x","SCITXBUFB"); - GEL_WatchAdd("*0x775A,x","SCIFFTXB"); - GEL_WatchAdd("*0x775B,x","SCIFFRXB"); - GEL_WatchAdd("*0x775C,x","SCIFFCTB"); - GEL_WatchAdd("*0x775F,x","SCIPRIB"); -} -hotmenu SCI_B_FIFO_Registers() -{ - GEL_WatchAdd("*0x775A,x","SCIFFTXB"); - GEL_WatchAdd("*0x775B,x","SCIFFRXB"); - GEL_WatchAdd("*0x775C,x","SCIFFCTB"); -} - - -/********************************************************************/ -/* Serial Peripheral Interface Registers */ -/********************************************************************/ -menuitem "Watch SPI Registers"; - -hotmenu SPI_A_All_Regs() -{ - GEL_WatchAdd("*0x7040,x","SPIA SPICCR"); - GEL_WatchAdd("*0x7041,x","SPIA SPICTL"); - GEL_WatchAdd("*0x7042,x","SPIA SPIST"); - GEL_WatchAdd("*0x7044,x","SPIA SPIBRR"); - GEL_WatchAdd("*0x7046,x","SPIA SPIEMU"); - GEL_WatchAdd("*0x7047,x","SPIA SPIRXBUF"); - GEL_WatchAdd("*0x7048,x","SPIA SPITXBUF"); - GEL_WatchAdd("*0x7049,x","SPIA SPIDAT"); - GEL_WatchAdd("*0x704A,x","SPIA SPIFFTX"); - GEL_WatchAdd("*0x704B,x","SPIA SPIFFRX"); - GEL_WatchAdd("*0x704C,x","SPIA SPIFFCT"); - GEL_WatchAdd("*0x704F,x","SPIA SPIPRI"); -} -hotmenu SPI_A_FIFO_Registers() -{ - GEL_WatchAdd("*0x704A,x","SPIA SPIFFTX"); - GEL_WatchAdd("*0x704B,x","SPIA SPIFFRX"); - GEL_WatchAdd("*0x704C,x","SPIA SPIFFCT"); -} - - -/********************************************************************/ -/* Watchdog Timer Registers */ -/********************************************************************/ -menuitem "Watch Watchdog Timer Registers"; - -hotmenu All_Watchdog_Regs() -{ - GEL_WatchAdd("*0x7023,x","WDCNTR"); - GEL_WatchAdd("*0x7025,x","WDKEY"); - GEL_WatchAdd("*0x7029,x","WDCR"); - GEL_WatchAdd("*0x7022,x","SCSR"); -} - -/********************************************************************/ -/*** End of file ***/ diff --git a/Source/External/v120/DSP2833x_common/gel/f28334.gel b/Source/External/v120/DSP2833x_common/gel/f28334.gel deleted file mode 100644 index fde0000..0000000 --- a/Source/External/v120/DSP2833x_common/gel/f28334.gel +++ /dev/null @@ -1,2951 +0,0 @@ -/********************************************************************/ -/* f28334.gel */ -/* Version 3.30.2 */ -/* */ -/* This GEL file is to be used with the TMS320F28334 DSP. */ -/* Changes may be required to support specific hardware designs. */ -/* */ -/* Code Composer Studio supports six reserved GEL functions that */ -/* automatically get executed if they are defined. They are: */ -/* */ -/* StartUp() - Executed whenever CCS is invoked */ -/* OnReset() - Executed after Debug->Reset CPU */ -/* OnRestart() - Executed after Debug->Restart */ -/* OnPreFileLoaded() - Executed before File->Load Program */ -/* OnFileLoaded() - Executed after File->Load Program */ -/* OnTargetConnect() - Executed after Debug->Connect */ -/* */ -/********************************************************************/ - -StartUp() -{ - -/* The next line automatically loads the .gel file that comes */ -/* with the DSP2833x Peripheral Header Files download. To use, */ -/* uncomment, and adjust the directory path as needed. */ -// GEL_LoadGel("c:\\CCStudio_v3.3\\cc\\gel\\DSP2833x_Peripheral.gel"); -} - -OnReset(int nErrorCode) -{ - C28x_Mode(); - Unlock_CSM(); - ADC_Cal(); -} - -OnRestart(int nErrorCode) -{ -/* CCS will call OnRestart() when you do a Debug->Restart and */ -/* after you load a new file. Between running interrupt based */ -/* programs, this function will clear interrupts and help keep */ -/* the processor from going off into invalid memory. */ - C28x_Mode(); - IER = 0; - IFR = 0; - ADC_Cal(); -} - -int TxtOutCtl=0; -OnPreFileLoaded() -{ - XINTF_Enable(); - if (TxtOutCtl==0) - { - GEL_TextOut("\nNOTES:\nGel will enable XINTFx16 during Debug only.\nEnable XINTF in code prior to use."); - GEL_TextOut("\nFPU Registers can be found via GEL->Watch FPU Registers."); - TxtOutCtl=1; - } -} - -OnFileLoaded(int nErrorCode, int bSymbolsOnly) -{ - ADC_Cal(); -} - -OnTargetConnect() -{ - C28x_Mode(); - F28334_Memory_Map(); /* Initialize the CCS memory map */ - -/* Check to see if CCS has been started-up with the DSP already */ -/* running in real-time mode. The user can add whatever */ -/* custom initialization stuff they want to each case. */ - - if (GEL_IsInRealtimeMode()) /* Do real-time mode target initialization */ - { - - } - else /* Do stop-mode target initialization */ - { - GEL_Reset(); /* Reset DSP */ - } - -} - - -/********************************************************************/ -/* These functions are launched by the GEL_Toolbar button plugin */ -/********************************************************************/ -GEL_Toolbar1() -{ - Run_Realtime_with_Reset(); -} -GEL_Toolbar2() -{ - Run_Realtime_with_Restart(); -} -GEL_Toolbar3() -{ - Full_Halt(); -} -GEL_Toolbar4() -{ - Full_Halt_with_Reset(); -} - -int GEL_Toolbar5_Toggle = 0; -GEL_Toolbar5() -{ - if(GEL_Toolbar5_Toggle == 0) - { - GEL_Toolbar5_Toggle = 1; - GEL_OpenWindow("GEL_Buttons",1,4); - GEL_TextOut("Button 1: Run_Realtime_with_Reset()","GEL_Buttons",0,0); - GEL_TextOut("Button 2: Run_Realtime_with_Restart()","GEL_Buttons",0,1); - GEL_TextOut("Button 3: Full_Halt()", "GEL_Buttons",0,2); - GEL_TextOut("Button 4: Full_Halt_with_Reset()","GEL_Buttons",0,3); - } - else - { - GEL_Toolbar5_Toggle = 0; - GEL_CloseWindow("GEL_Buttons"); - } -} - - -/********************************************************************/ -/* These functions are useful to engage/dis-enagage realtime */ -/* emulation mode during debug. They save the user from having to */ -/* manually perform these steps in CCS. */ -/********************************************************************/ -menuitem "Realtime Emulation Control"; - -hotmenu Run_Realtime_with_Reset() -{ - GEL_Reset(); /* Reset the DSP */ - ST1 = ST1 & 0xFFFD; /* clear DBGM bit in ST1 */ - GEL_EnableRealtime(); /* Enable Realtime mode */ - GEL_Run(); /* Run the DSP */ -} -hotmenu Run_Realtime_with_Restart() -{ - GEL_Restart(); /* Reset the DSP */ - ST1 = ST1 & 0xFFFD; /* clear DBGM bit in ST1 */ - GEL_EnableRealtime(); /* Enable Realtime mode */ - GEL_Run(); /* Run the DSP */ -} -hotmenu Full_Halt() -{ - GEL_DisableRealtime(); /* Disable Realtime mode */ - GEL_Halt(); /* Halt the DSP */ -} -hotmenu Full_Halt_with_Reset() -{ - GEL_DisableRealtime(); /* Disable Realtime mode */ - GEL_Halt(); /* Halt the DSP */ - GEL_Reset(); /* Reset the DSP */ -} - - -/********************************************************************/ -/* F28334 Memory Map */ -/* */ -/* Note: M0M1MAP and VMAP signals tied high on F28334 core */ -/* */ -/* 0x000000 - 0x0003ff M0 SARAM (Prog and Data) */ -/* 0x000400 - 0x0007ff M1 SARAM (Prog and Data) */ -/* 0x000800 - 0x001fff Peripheral Frame0 (PF0) (Data only) */ -/* 0x004000 - 0x004fff XINTF Zone 0 (Prog and Data) */ -/* 0x005000 - 0x005fff Peripheral Frame3 (PF3) (Data only) */ -/* 0x006000 - 0x006fff Peripheral Frame1 (PF1) (Data only) */ -/* 0x007000 - 0x007fff Peripheral Frame2 (PF2) (Data only) */ -/* 0x008000 - 0x008fff L0 SARAM (Prog and Data) */ -/* 0x009000 - 0x009fff L1 SARAM (Prog and Data) */ -/* 0x00A000 - 0x00Afff L2 SARAM (Prog and Data) */ -/* 0x00B000 - 0x00Bfff L3 SARAM (Prog and Data) */ -/* 0x00C000 - 0x00Cfff L4 SARAM (Prog and Data) */ -/* 0x00D000 - 0x00Dfff L5 SARAM (Prog and Data) */ -/* 0x00E000 - 0x00Efff L6 SARAM (Prog and Data) */ -/* 0x00F000 - 0x00Ffff L7 SARAM (Prog and Data) */ -/* 0x100000 - 0x1fffff XINTF Zone 6 (Prog and Data) */ -/* 0x200000 - 0x2fffff XINTF Zone 7 (Prog and Data) */ -/* 0x320000 - 0x33ffff Flash (Prog and Data) */ -/* 0x380080 - 0x380088 ADC_cal function (Prog and Data) */ -/* 0x380090 - 0x380090 PARTID value (Prog and Data) */ -/* 0x380400 - 0x3807ff OTP (Prog and Data) */ -/* 0x3f8000 - 0x3f8fff L0 SARAM (Prog and Data) */ -/* 0x3f9000 - 0x3f9fff L1 SARAM (Prog and Data) */ -/* 0x3fA000 - 0x3fAfff L2 SARAM (Prog and Data) */ -/* 0x3fB000 - 0x3fBfff L3 SARAM (Prog and Data) */ -/* 0x3fe000 - 0x3fffff BOOT ROM (Prog and Data) */ -/********************************************************************/ -menuitem "Initialize Memory Map"; - -hotmenu F28334_Memory_Map() -{ - GEL_MapReset(); - GEL_MapOn(); - - /* Program memory map */ - GEL_MapAdd(0x0,0,0x400,1,1); /* M0 SARAM */ - GEL_MapAdd(0x400,0,0x400,1,1); /* M1 SARAM */ - GEL_MapAdd(0x4000,0,0x1000,1,1); /* Zone 0 */ - GEL_MapAdd(0x8000,0,0x1000,1,1); /* L0 SARAM */ - GEL_MapAdd(0x9000,0,0x1000,1,1); /* L1 SARAM */ - GEL_MapAdd(0xA000,0,0x1000,1,1); /* L2 SARAM */ - GEL_MapAdd(0xB000,0,0x1000,1,1); /* L3 SARAM */ - GEL_MapAdd(0xC000,0,0x1000,1,1); /* L4 SARAM */ - GEL_MapAdd(0xD000,0,0x1000,1,1); /* L5 SARAM */ - GEL_MapAdd(0xE000,0,0x1000,1,1); /* L6 SARAM */ - GEL_MapAdd(0xF000,0,0x1000,1,1); /* L7 SARAM */ - GEL_MapAdd(0x100000,0,0x100000,1,1); /* Zone 6 */ - GEL_MapAdd(0x200000,0,0x100000,1,1); /* Zone 7 */ - GEL_MapAdd(0x320000,0,0x20000,1,0); /* FLASH */ - GEL_MapAdd(0x380080,0,0x00009,1,0); /* ADC_cal function*/ - GEL_MapAdd(0x380090,0,0x00001,1,0); /* PARTID value */ - GEL_MapAdd(0x380400,0,0x00400,1,0); /* OTP */ - GEL_MapAdd(0x3f8000,0,0x1000,1,1); /* L0 SARAM Mirror */ - GEL_MapAdd(0x3f9000,0,0x1000,1,1); /* L1 SARAM Mirror */ - GEL_MapAdd(0x3fA000,0,0x1000,1,1); /* L2 SARAM Mirror */ - GEL_MapAdd(0x3fb000,0,0x1000,1,1); /* L3 SARAM Mirror */ - GEL_MapAdd(0x3fe000,0,0x2000,1,0); /* BOOT ROM */ - - /* Data memory map */ - GEL_MapAdd(0x000,1,0x400,1,1); /* M0 SARAM */ - GEL_MapAdd(0x400,1,0x400,1,1); /* M1 SARAM */ - GEL_MapAdd(0x800,1,0x1800,1,1); /* PF0 */ - GEL_MapAdd(0x4000,1,0x1000,1,1); /* Zone 0 */ - GEL_MapAdd(0x5000,1,0x1000,1,1); /* PF3 */ - GEL_MapAdd(0x6000,1,0x1000,1,1); /* PF1 */ - GEL_MapAddStr(0x7000,1,0x1000,"R|W|AS2",0); /* PF2 */ - GEL_MapAdd(0x8000,1,0x1000,1,1); /* L0 SARAM */ - GEL_MapAdd(0x9000,1,0x1000,1,1); /* L1 SARAM */ - GEL_MapAdd(0xA000,1,0x1000,1,1); /* L2 SARAM */ - GEL_MapAdd(0xB000,1,0x1000,1,1); /* L3 SARAM */ - GEL_MapAdd(0xC000,1,0x1000,1,1); /* L4 SARAM */ - GEL_MapAdd(0xD000,1,0x1000,1,1); /* L5 SARAM */ - GEL_MapAdd(0xE000,1,0x1000,1,1); /* L6 SARAM */ - GEL_MapAdd(0xF000,1,0x1000,1,1); /* L7 SARAM */ - GEL_MapAdd(0x100000,1,0x100000,1,1); /* Zone 6 */ - GEL_MapAdd(0x200000,1,0x100000,1,1); /* Zone 7 */ - GEL_MapAdd(0x320000,1,0x20000,1,0); /* FLASH */ - GEL_MapAdd(0x380080,1,0x00009,1,0); /* ADC_cal function*/ - GEL_MapAdd(0x380090,1,0x00001,1,0); /* PARTID value */ - GEL_MapAdd(0x380400,1,0x00400,1,0); /* OTP */ - GEL_MapAdd(0x3f8000,1,0x1000,1,1); /* L0 SARAM Mirror */ - GEL_MapAdd(0x3f9000,1,0x1000,1,1); /* L1 SARAM Mirror */ - GEL_MapAdd(0x3fA000,1,0x1000,1,1); /* L2 SARAM Mirror */ - GEL_MapAdd(0x3fb000,1,0x1000,1,1); /* L3 SARAM Mirror */ - GEL_MapAdd(0x3fe000,1,0x2000,1,0); /* BOOT ROM */ -} - - -/********************************************************************/ -/* The ESTOP0 fill functions are useful for debug. They fill the */ -/* RAM with software breakpoints that will trap runaway code. */ -/********************************************************************/ -hotmenu Fill_F28334_RAM_with_ESTOP0() -{ - GEL_MemoryFill(0x000000,1,0x000800,0x7625); /* Fill M0/M1 */ - GEL_MemoryFill(0x008000,1,0x002000,0x7625); /* Fill L0/L1 */ - GEL_MemoryFill(0x00A000,1,0x002000,0x7625); /* Fill L2/L3 */ - GEL_MemoryFill(0x00C000,1,0x002000,0x7625); /* Fill L4/L5 */ - GEL_MemoryFill(0x00E000,1,0x002000,0x7625); /* Fill L6/L7 */ -} - - -/********************************************************************/ -menuitem "Watchdog"; -hotmenu Disable_WD() -{ - *0x7029 = *0x7029 | 0x0068; /* Set the WDDIS bit */ - *0x7025 = 0x0055; /* Service the WD */ - *0x7025 = 0x00AA; /* once to be safe. */ - GEL_TextOut("\nWatchdog Timer Disabled"); -} - - -/********************************************************************/ -menuitem "Code Security Module" -hotmenu Unlock_CSM() -{ - /* Perform dummy reads of the password locations */ - XAR0 = *0x33FFF8; - XAR0 = *0x33FFF9; - XAR0 = *0x33FFFA; - XAR0 = *0x33FFFB; - XAR0 = *0x33FFFC; - XAR0 = *0x33FFFD; - XAR0 = *0x33FFFE; - XAR0 = *0x33FFFF; - - /* Write passwords to the KEY registers. 0xFFFF's are dummy passwords. - User should replace them with the correct password for their DSP */ - *0xAE0 = 0xFFFF; - *0xAE1 = 0xFFFF; - *0xAE2 = 0xFFFF; - *0xAE3 = 0xFFFF; - *0xAE4 = 0xFFFF; - *0xAE5 = 0xFFFF; - *0xAE6 = 0xFFFF; - *0xAE7 = 0xFFFF; -} - - -/********************************************************************/ -menuitem "Addressing Modes"; -hotmenu C28x_Mode() -{ - ST1 = ST1 & (~0x0100); /* AMODE = 0 */ - ST1 = ST1 | 0x0200; /* OBJMODE = 1 */ -} -hotmenu C24x_Mode() -{ - ST1 = ST1 | 0x0100; /* AMODE = 1 */ - ST1 = ST1 | 0x0200; /* OBJMODE = 1 */ -} -hotmenu C27x_Mode() -{ - ST1 = ST1 & (~0x0100); /* AMODE = 0 */ - ST1 = ST1 & (~0x0200); /* OBJMODE = 0 */ -} - - -/********************************************************************/ -/* PLL Ratios */ -/* */ -/* The following table describes the PLL clocking ratios (0..10) */ -/* */ -/* Ratio CLKIN Description */ -/* ----- -------------- ------------ */ -/* 0 OSCCLK/2 PLL bypassed */ -/* 1 (OSCCLK * 1)/2 15 Mhz for 30 Mhz CLKIN */ -/* 2 (OSCCLK * 2)/2 30 Mhz for 30 Mhz CLKIN */ -/* 3 (OSCCLK * 3)/2 45 Mhz for 30 Mhz CLKIN */ -/* 4 (OSCCLK * 4)/2 60 Mhz for 30 Mhz CLKIN */ -/* 5 (OSCCLK * 5)/2 75 Mhz for 30 Mhz CLKIN */ -/* 6 (OSCCLK * 6)/2 90 Mhz for 30 Mhz CLKIN */ -/* 7 (OSCCLK * 7)/2 105 Mhz for 30 Mhz CLKIN */ -/* 8 (OSCCLK * 8)/2 120 Mhz for 30 Mhz CLKIN */ -/* 9 (OSCCLK * 9)/2 135 Mhz for 30 Mhz CLKIN */ -/* 10 (OSCCLK * 10)/2 150 Mhz for 30 Mhz CLKIN */ -/********************************************************************/ -menuitem "Set PLL Ratio"; - -hotmenu Bypass() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 0; /* CLKIN = OSCCLK/2, PLL is bypassed */ - PLL_Wait(); -} -hotmenu OSCCLK_x1_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 1; /* CLKIN = (OSCCLK * 1)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x2_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 2; /* CLKIN = (OSCCLK * 2)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x3_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 3; /* CLKIN = (OSCCLK * 3)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x4_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 4; /* CLKIN = (OSCCLK * 4)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x5_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 5; /* CLKIN = (OSCCLK * 5)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x6_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 6; /* CLKIN = (OSCCLK * 6)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x7_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 7; /* CLKIN = (OSCCLK * 7)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x8_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 8; /* CLKIN = (OSCCLK * 8)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x9_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 9; /* CLKIN = (OSCCLK * 9)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x10_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 10; /* CLKIN = (OSCCLK * 10)/2 */ - PLL_Wait(); -} -// hotmenu OSCCLK_x1_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 1; /* CLKIN = (OSCCLK * 1)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x2_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 2; /* CLKIN = (OSCCLK * 2)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x3_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 3; /* CLKIN = (OSCCLK * 3)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x4_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 4; /* CLKIN = (OSCCLK * 4)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x5_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 5; /* CLKIN = (OSCCLK * 5)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x6_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 6; /* CLKIN = (OSCCLK * 6)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x7_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 7; /* CLKIN = (OSCCLK * 7)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x8_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 8; /* CLKIN = (OSCCLK * 8)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x9_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 9; /* CLKIN = (OSCCLK * 9)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x10_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 10; /* CLKIN = (OSCCLK * 10)/1 */ -// PLL_Wait(); -// } - - - -/********************************************************************/ -/* For F2833x devices, DIVSEL is 1/4 by default. Switch it to 1/2 */ -/********************************************************************/ - -DIVSEL_div2() -{ - int temp; - int PLLSTS; - - PLLSTS = 0x7011; - - temp = *PLLSTS; - temp &= 0xFE7F; /* Clear bits 7 & 8 */ - temp |= 2 << 7; /* Set bit 8 */ - *PLLSTS = temp; /* Switch to 1/2 */ -} - - - -/********************************************************************/ -/* For F2833x devices, DIVSEL is 1/4 by default. Switch it to /1 */ -/********************************************************************/ - -DIVSEL_div1() -{ - int temp; - int PLLSTS; - - PLLSTS = 0x7011; - - DIVSEL_div2(); /* First switch DIVSEL to 1/2 and wait */ - wait(); - temp = *PLLSTS; - temp |= 3 << 7; /* Set bits 7 & 8 */ - *PLLSTS = temp; /* Switch to 1/2 */ -} - -wait() -{ - int delay = 0; - for (delay = 0; delay <= 5; delay ++) - {} -} - -/********************************************************************/ -/* For F2833x devices, check the PLLOCKS bit for PLL lock. */ -/********************************************************************/ -PLL_Wait() -{ - int PLLSTS; - int delay = 0; - - PLLSTS = 0x7011; - - - while ( ( (unsigned int)*PLLSTS & 0x0001) != 0x0001) - { - delay++; - GEL_TextOut("Waiting for PLL Lock, PLLSTS = %x\n",,,,,(unsigned int)*PLLSTS); - } - GEL_TextOut("\nPLL lock complete, PLLSTS = %x\n",,,,,(unsigned int)*PLLSTS); -} - -/********************************************************************/ -/* Load the ADC Calibration values from TI OTP */ -/********************************************************************/ -menuitem "ADC Calibration" -hotmenu ADC_Cal() -{ - /* Perform dummy reads of the password locations */ - XAR0 = *0x33FFF8; - XAR0 = *0x33FFF9; - XAR0 = *0x33FFFA; - XAR0 = *0x33FFFB; - XAR0 = *0x33FFFC; - XAR0 = *0x33FFFD; - XAR0 = *0x33FFFE; - XAR0 = *0x33FFFF; - - if(((*0x0AEF) & 0x0001) == 0) - { - XAR0 = *0x701C; - *0x701C |= 0x0008; - *0x711C = *0x380083; - *0x711D = *0x380085; - *0x701C = XAR0; - XAR0 = 0; - } - else - { - GEL_TextOut("\nADC Calibration not complete, device is secure"); - } -} - -/********************************************************************/ -/* Enable the XINTF and configure GPIOs for XINTF function */ -/********************************************************************/ -menuitem "XINTF Enable" -hotmenu XINTF_Enable() -{ - - /* enable XINTF clock (XTIMCLK) */ - - *0x7020 = 0x3700; - /* GPBMUX1: XA0-XA7, XA16, XZCS0, */ - /* XZCS7, XREADY, XRNW, XWE0 */ - /* GPAMUX2: XA17-XA19, XZCS6 */ - /* GPCMUX2: XA8-XA15 */ - /* GPCMUX1: XD0-XD15 */ - *(unsigned long *)0x6F96 = 0xFFFFFFC0; /* GPBMUX1 */ - *(unsigned long *)0x6f88 = 0xFF000000; /* GPAMUX2 */ - *(unsigned long *)0x6FA8 = 0x0000AAAA; /* GPCMUX2 */ - *(unsigned long *)0x6FA6 = 0xAAAAAAAA; /* GPCMUX1 */ - - /* Uncomment for x32 data bus */ - /* GPBMUX2: XD16-XD31 */ -// *(unsigned long *)0x6F98 = 0xFFFFFFFF; /* GPBMUX2 */ - - /* Zone timing. - /* Each zone can be configured seperately */ - /* Uncomment the x16 or the x32 timing */ - /* depending on the data bus width for */ - /* the zone */ - - /* x16 Timing */ - *(unsigned long *)0x0B20 = 0x0043FFFF; /* Zone0 */ - *(unsigned long *)0x0B2C = 0x0043FFFF; /* Zone6 */ - *(unsigned long *)0x0B2E = 0x0043FFFF; /* Zone7 */ - - /* x32 Timing: -// *(unsigned long *)0x0B20 = 0x0041FFFF; /* x32 */ -// *(unsigned long *)0x0B2C = 0x0041FFFF; /* x32 */ -// *(unsigned long *)0x0B2E = 0x0041FFFF; /* x32 */ - -} - -/********************************************************************/ -/* The below are used to display the symbolic names of the F28334 */ -/* memory mapped registers in the watch window. To view these */ -/* registers, click on the GEL menu button in Code Composer Studio, */ -/* then select which registers or groups of registers you want to */ -/* view. They will appear in the watch window under the Watch1 tab. */ -/********************************************************************/ - -/* Add a space line to the GEL menu */ -menuitem "______________________________________"; -hotmenu __() {} - -/********************************************************************/ -/* A/D Converter Registers */ -/********************************************************************/ -menuitem "Watch ADC Registers"; - -hotmenu All_ADC_Regs() -{ - GEL_WatchAdd("*0x7100,x","ADCTRL1"); - GEL_WatchAdd("*0x7101,x","ADCTRL2"); - GEL_WatchAdd("*0x7102,x","ADCMAXCONV"); - GEL_WatchAdd("*0x7103,x","ADCCHSELSEQ1"); - GEL_WatchAdd("*0x7104,x","ADCCHSELSEQ2"); - GEL_WatchAdd("*0x7105,x","ADCCHSELSEQ3"); - GEL_WatchAdd("*0x7106,x","ADCCHSELSEQ4"); - GEL_WatchAdd("*0x7107,x","ADCASEQSR"); - GEL_WatchAdd("*0x7108,x","ADCRESULT0"); - GEL_WatchAdd("*0x7109,x","ADCRESULT1"); - GEL_WatchAdd("*0x710A,x","ADCRESULT2"); - GEL_WatchAdd("*0x710B,x","ADCRESULT3"); - GEL_WatchAdd("*0x710C,x","ADCRESULT4"); - GEL_WatchAdd("*0x710D,x","ADCRESULT5"); - GEL_WatchAdd("*0x710E,x","ADCRESULT6"); - GEL_WatchAdd("*0x710F,x","ADCRESULT7"); - GEL_WatchAdd("*0x7110,x","ADCRESULT8"); - GEL_WatchAdd("*0x7111,x","ADCRESULT9"); - GEL_WatchAdd("*0x7112,x","ADCRESULT10"); - GEL_WatchAdd("*0x7113,x","ADCRESULT11"); - GEL_WatchAdd("*0x7114,x","ADCRESULT12"); - GEL_WatchAdd("*0x7115,x","ADCRESULT13"); - GEL_WatchAdd("*0x7116,x","ADCRESULT14"); - GEL_WatchAdd("*0x7117,x","ADCRESULT15"); - GEL_WatchAdd("*0x7118,x","ADCTRL3"); - GEL_WatchAdd("*0x7119,x","ADCST"); - GEL_WatchAdd("*0x711C,x","ADCREFSEL"); - GEL_WatchAdd("*0x711D,x","ADCOFFTRIM"); - - GEL_WatchAdd("*0x0B00,x","ADCRESULT0 Mirror"); - GEL_WatchAdd("*0x0B01,x","ADCRESULT1 Mirror"); - GEL_WatchAdd("*0x0B02,x","ADCRESULT2 Mirror"); - GEL_WatchAdd("*0x0B03,x","ADCRESULT3 Mirror"); - GEL_WatchAdd("*0x0B04,x","ADCRESULT4 Mirror"); - GEL_WatchAdd("*0x0B05,x","ADCRESULT5 Mirror"); - GEL_WatchAdd("*0x0B06,x","ADCRESULT6 Mirror"); - GEL_WatchAdd("*0x0B07,x","ADCRESULT7 Mirror"); - GEL_WatchAdd("*0x0B08,x","ADCRESULT8 Mirror"); - GEL_WatchAdd("*0x0B09,x","ADCRESULT9 Mirror"); - GEL_WatchAdd("*0x0B0A,x","ADCRESULT10 Mirror"); - GEL_WatchAdd("*0x0B0B,x","ADCRESULT11 Mirror"); - GEL_WatchAdd("*0x0B0C,x","ADCRESULT12 Mirror"); - GEL_WatchAdd("*0x0B0D,x","ADCRESULT13 Mirror"); - GEL_WatchAdd("*0x0B0E,x","ADCRESULT14 Mirror"); - GEL_WatchAdd("*0x0B0F,x","ADCRESULT15 Mirror"); -} -hotmenu ADC_Control_Regs() -{ - GEL_WatchAdd("*0x7100,x","ADCTRL1"); - GEL_WatchAdd("*0x7101,x","ADCTRL2"); - GEL_WatchAdd("*0x7102,x","ADCMAXCONV"); - GEL_WatchAdd("*0x7107,x","ADCASEQSR"); - GEL_WatchAdd("*0x7118,x","ADCTRL3"); - GEL_WatchAdd("*0x7119,x","ADCST"); - GEL_WatchAdd("*0x711C,x","ADCREFSEL"); - GEL_WatchAdd("*0x711D,x","ADCOFFTRIM"); -} -hotmenu ADCCHSELSEQx_Regs() -{ - GEL_WatchAdd("*0x7103,x","ADCCHSELSEQ1"); - GEL_WatchAdd("*0x7104,x","ADCCHSELSEQ2"); - GEL_WatchAdd("*0x7105,x","ADCCHSELSEQ3"); - GEL_WatchAdd("*0x7106,x","ADCCHSELSEQ4"); -} -hotmenu ADCRESULT_0_to_7() -{ - GEL_WatchAdd("*0x7108,x","ADCRESULT0"); - GEL_WatchAdd("*0x7109,x","ADCRESULT1"); - GEL_WatchAdd("*0x710A,x","ADCRESULT2"); - GEL_WatchAdd("*0x710B,x","ADCRESULT3"); - GEL_WatchAdd("*0x710C,x","ADCRESULT4"); - GEL_WatchAdd("*0x710D,x","ADCRESULT5"); - GEL_WatchAdd("*0x710E,x","ADCRESULT6"); - GEL_WatchAdd("*0x710F,x","ADCRESULT7"); -} -hotmenu ADCRESULT_8_to_15() -{ - GEL_WatchAdd("*0x7110,x","ADCRESULT8"); - GEL_WatchAdd("*0x7111,x","ADCRESULT9"); - GEL_WatchAdd("*0x7112,x","ADCRESULT10"); - GEL_WatchAdd("*0x7113,x","ADCRESULT11"); - GEL_WatchAdd("*0x7114,x","ADCRESULT12"); - GEL_WatchAdd("*0x7115,x","ADCRESULT13"); - GEL_WatchAdd("*0x7116,x","ADCRESULT14"); - GEL_WatchAdd("*0x7117,x","ADCRESULT15"); -} -hotmenu ADCRESULT_Mirror_0_to_7() -{ - GEL_WatchAdd("*0x0B00,x","ADCRESULT0 Mirror"); - GEL_WatchAdd("*0x0B01,x","ADCRESULT1 Mirror"); - GEL_WatchAdd("*0x0B02,x","ADCRESULT2 Mirror"); - GEL_WatchAdd("*0x0B03,x","ADCRESULT3 Mirror"); - GEL_WatchAdd("*0x0B04,x","ADCRESULT4 Mirror"); - GEL_WatchAdd("*0x0B05,x","ADCRESULT5 Mirror"); - GEL_WatchAdd("*0x0B06,x","ADCRESULT6 Mirror"); - GEL_WatchAdd("*0x0B07,x","ADCRESULT7 Mirror"); -} -hotmenu ADCRESULT_Mirror_8_to_15() -{ - GEL_WatchAdd("*0x0B08,x","ADCRESULT8 Mirror"); - GEL_WatchAdd("*0x0B09,x","ADCRESULT9 Mirror"); - GEL_WatchAdd("*0x0B0A,x","ADCRESULT10 Mirror"); - GEL_WatchAdd("*0x0B0B,x","ADCRESULT11 Mirror"); - GEL_WatchAdd("*0x0B0C,x","ADCRESULT12 Mirror"); - GEL_WatchAdd("*0x0B0D,x","ADCRESULT13 Mirror"); - GEL_WatchAdd("*0x0B0E,x","ADCRESULT14 Mirror"); - GEL_WatchAdd("*0x0B0F,x","ADCRESULT15 Mirror"); -} - - -/********************************************************************/ -/* Clocking and Low-Power Registers */ -/********************************************************************/ -menuitem "Watch Clocking and Low-Power Registers"; - -hotmenu All_Clocking_and_Low_Power_Regs() -{ - GEL_WatchAdd("*0x7010,x","XCLK"); - GEL_WatchAdd("*0x7011,x","PLLSTS"); - GEL_WatchAdd("*0x701A,x","HISPCP"); - GEL_WatchAdd("*0x701B,x","LOSPCP"); - GEL_WatchAdd("*0x701C,x","PCLKCR0"); - GEL_WatchAdd("*0x701D,x","PCLKCR1"); - GEL_WatchAdd("*0x701E,x","LPMCR0"); - GEL_WatchAdd("*0x7020,x","PCLKCR3"); - GEL_WatchAdd("*0x7021,x","PLLCR"); -} - -/********************************************************************/ -/* Code Security Module Registers */ -/********************************************************************/ -menuitem "Watch Code Security Module Registers"; - -hotmenu CSMSCR() -{ - GEL_WatchAdd("*0x0AEF,x","CSMSCR"); - GEL_WatchAdd("(*0x0AEF>>15)&1,d"," FORCESEC bit"); - GEL_WatchAdd("(*0x0AEF)&1,d"," SECURE bit"); -} -hotmenu PWL_Locations() -{ - GEL_WatchAdd("*0x33FFF8,x","PWL0"); - GEL_WatchAdd("*0x33FFF9,x","PWL1"); - GEL_WatchAdd("*0x33FFFA,x","PWL2"); - GEL_WatchAdd("*0x33FFFB,x","PWL3"); - GEL_WatchAdd("*0x33FFFC,x","PWL4"); - GEL_WatchAdd("*0x33FFFD,x","PWL5"); - GEL_WatchAdd("*0x33FFFE,x","PWL6"); - GEL_WatchAdd("*0x33FFFF,x","PWL7"); -} - - -/********************************************************************/ -/* CPU Timer Registers */ -/********************************************************************/ -menuitem "Watch CPU Timer Registers"; - -hotmenu All_CPU_Timer0_Regs() -{ - GEL_WatchAdd("*0x0C00,x","TIMER0TIM"); - GEL_WatchAdd("*0x0C01,x","TIMER0TIMH"); - GEL_WatchAdd("*0x0C02,x","TIMER0PRD"); - GEL_WatchAdd("*0x0C03,x","TIMER0PRDH"); - GEL_WatchAdd("*0x0C04,x","TIMER0TCR"); - GEL_WatchAdd("*0x0C06,x","TIMER0TPR"); - GEL_WatchAdd("*0x0C07,x","TIMER0TPRH"); -} -hotmenu All_CPU_Timer1_Regs() -{ - GEL_WatchAdd("*0x0C08,x","TIMER1TIM"); - GEL_WatchAdd("*0x0C09,x","TIMER1TIMH"); - GEL_WatchAdd("*0x0C0A,x","TIMER1PRD"); - GEL_WatchAdd("*0x0C0B,x","TIMER1PRDH"); - GEL_WatchAdd("*0x0C0C,x","TIMER1TCR"); - GEL_WatchAdd("*0x0C0E,x","TIMER1TPR"); - GEL_WatchAdd("*0x0C0F,x","TIMER1TPRH"); -} -hotmenu All_CPU_Timer2_Regs() -{ - GEL_WatchAdd("*0x0C10,x","TIMER2TIM"); - GEL_WatchAdd("*0x0C11,x","TIMER2TIMH"); - GEL_WatchAdd("*0x0C12,x","TIMER2PRD"); - GEL_WatchAdd("*0x0C13,x","TIMER2PRDH"); - GEL_WatchAdd("*0x0C14,x","TIMER2TCR"); - GEL_WatchAdd("*0x0C16,x","TIMER2TPR"); - GEL_WatchAdd("*0x0C17,x","TIMER2TPRH"); -} - - -/********************************************************************/ -/* Device Emulation Registers */ -/********************************************************************/ -menuitem "Watch Device Emulation Registers"; - -hotmenu All_Emulation_Regs() -{ - GEL_WatchAdd("*(long *)0x0880,x","DEVICECNF"); - GEL_WatchAdd("*0x0882,x","CLASSID"); - GEL_WatchAdd("*0x0883,x","REVID"); - GEL_WatchAdd("*0x0884,x","PROTSTART"); - GEL_WatchAdd("*0x0885,x","PROTRANGE"); - GEL_WatchAdd("*0x380090,x","PARTID"); -} - -/********************************************************************/ -/* DMA Registers */ -/********************************************************************/ -menuitem "Watch DMA Registers"; - -hotmenu All_DMA_Regs() -{ - GEL_WatchAdd("*0x1000,x","DMACTRL"); - GEL_WatchAdd("*0x1001,x","DEBUGCTRL"); - GEL_WatchAdd("*0x1002,x","REVISION"); - GEL_WatchAdd("*0x1004,x","PRIORITYCTRL1"); - GEL_WatchAdd("*0x1006,x","PRIORITYSTAT"); - - GEL_WatchAdd("*0x1020,x","DMA Ch1 MODE"); - GEL_WatchAdd("*0x1021,x","DMA Ch1 CONTROL"); - GEL_WatchAdd("*0x1022,x","DMA Ch1 BURST_SIZE"); - GEL_WatchAdd("*0x1023,x","DMA Ch1 BURST_COUNT"); - GEL_WatchAdd("*0x1024,x","DMA Ch1 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1025,x","DMA Ch1 DST_BURST_STEP"); - GEL_WatchAdd("*0x1026,x","DMA Ch1 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1027,x","DMA Ch1 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1028,x","DMA Ch1 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1029,x","DMA Ch1 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x102A,x","DMA Ch1 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x102B,x","DMA Ch1 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x102C,x","DMA Ch1 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x102D,x","DMA Ch1 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x102E,x","DMA Ch1 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x102F,x","DMA Ch1 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1030,x","DMA Ch1 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1032,x","DMA Ch1 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1034,x","DMA Ch1 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1036,x","DMA Ch1 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1038,x","DMA Ch1 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x103A,x","DMA Ch1 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x103C,x","DMA Ch1 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x103E,x","DMA Ch1 DST_ADDR_ACTIVE"); - - GEL_WatchAdd("*0x1040,x","DMA Ch2 MODE"); - GEL_WatchAdd("*0x1041,x","DMA Ch2 CONTROL"); - GEL_WatchAdd("*0x1042,x","DMA Ch2 BURST_SIZE"); - GEL_WatchAdd("*0x1043,x","DMA Ch2 BURST_COUNT"); - GEL_WatchAdd("*0x1044,x","DMA Ch2 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1045,x","DMA Ch2 DST_BURST_STEP"); - GEL_WatchAdd("*0x1046,x","DMA Ch2 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1047,x","DMA Ch2 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1048,x","DMA Ch2 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1049,x","DMA Ch2 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x104A,x","DMA Ch2 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x104B,x","DMA Ch2 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x104C,x","DMA Ch2 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x104D,x","DMA Ch2 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x104E,x","DMA Ch2 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x104F,x","DMA Ch2 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1050,x","DMA Ch2 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1052,x","DMA Ch2 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1054,x","DMA Ch2 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1056,x","DMA Ch2 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1058,x","DMA Ch2 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x105A,x","DMA Ch2 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x105C,x","DMA Ch2 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x105E,x","DMA Ch2 DST_ADDR_ACTIVE"); - - GEL_WatchAdd("*0x1060,x","DMA Ch3 MODE"); - GEL_WatchAdd("*0x1061,x","DMA Ch3 CONTROL"); - GEL_WatchAdd("*0x1062,x","DMA Ch3 BURST_SIZE"); - GEL_WatchAdd("*0x1063,x","DMA Ch3 BURST_COUNT"); - GEL_WatchAdd("*0x1064,x","DMA Ch3 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1065,x","DMA Ch3 DST_BURST_STEP"); - GEL_WatchAdd("*0x1066,x","DMA Ch3 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1067,x","DMA Ch3 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1068,x","DMA Ch3 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1069,x","DMA Ch3 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x106A,x","DMA Ch3 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x106B,x","DMA Ch3 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x106C,x","DMA Ch3 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x106D,x","DMA Ch3 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x106E,x","DMA Ch3 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x106F,x","DMA Ch3 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1070,x","DMA Ch3 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1072,x","DMA Ch3 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1074,x","DMA Ch3 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1076,x","DMA Ch3 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1078,x","DMA Ch3 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x107A,x","DMA Ch3 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x107C,x","DMA Ch3 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x107E,x","DMA Ch3 DST_ADDR_ACTIVE"); - - GEL_WatchAdd("*0x1080,x","DMA Ch4 MODE"); - GEL_WatchAdd("*0x1081,x","DMA Ch4 CONTROL"); - GEL_WatchAdd("*0x1082,x","DMA Ch4 BURST_SIZE"); - GEL_WatchAdd("*0x1083,x","DMA Ch4 BURST_COUNT"); - GEL_WatchAdd("*0x1084,x","DMA Ch4 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1085,x","DMA Ch4 DST_BURST_STEP"); - GEL_WatchAdd("*0x1086,x","DMA Ch4 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1087,x","DMA Ch4 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1088,x","DMA Ch4 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1089,x","DMA Ch4 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x108A,x","DMA Ch4 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x108B,x","DMA Ch4 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x108C,x","DMA Ch4 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x108D,x","DMA Ch4 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x108E,x","DMA Ch4 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x108F,x","DMA Ch4 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1090,x","DMA Ch4 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1092,x","DMA Ch4 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1094,x","DMA Ch4 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1096,x","DMA Ch4 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1098,x","DMA Ch4 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x109A,x","DMA Ch4 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x109C,x","DMA Ch4 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x109E,x","DMA Ch4 DST_ADDR_ACTIVE"); - - GEL_WatchAdd("*0x10A0,x","DMA Ch5 MODE"); - GEL_WatchAdd("*0x10A1,x","DMA Ch5 CONTROL"); - GEL_WatchAdd("*0x10A2,x","DMA Ch5 BURST_SIZE"); - GEL_WatchAdd("*0x10A3,x","DMA Ch5 BURST_COUNT"); - GEL_WatchAdd("*0x10A4,x","DMA Ch5 SRC_BURST_STEP"); - GEL_WatchAdd("*0x10A5,x","DMA Ch5 DST_BURST_STEP"); - GEL_WatchAdd("*0x10A6,x","DMA Ch5 TRANSFER_SIZE"); - GEL_WatchAdd("*0x10A7,x","DMA Ch5 TRANSFER_COUNT"); - GEL_WatchAdd("*0x10A8,x","DMA Ch5 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x10A9,x","DMA Ch5 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x10AA,x","DMA Ch5 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x10AB,x","DMA Ch5 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x10AC,x","DMA Ch5 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x10AD,x","DMA Ch5 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x10AE,x","DMA Ch5 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x10AF,x","DMA Ch5 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x10B0,x","DMA Ch5 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10B2,x","DMA Ch5 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10B4,x","DMA Ch5 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10B6,x","DMA Ch5 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10B8,x","DMA Ch5 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10BA,x","DMA Ch5 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10BC,x","DMA Ch5 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10BE,x","DMA Ch5 DST_ADDR_ACTIVE"); - - GEL_WatchAdd("*0x10C0,x","DMA Ch6 MODE"); - GEL_WatchAdd("*0x10C1,x","DMA Ch6 CONTROL"); - GEL_WatchAdd("*0x10C2,x","DMA Ch6 BURST_SIZE"); - GEL_WatchAdd("*0x10C3,x","DMA Ch6 BURST_COUNT"); - GEL_WatchAdd("*0x10C4,x","DMA Ch6 SRC_BURST_STEP"); - GEL_WatchAdd("*0x10C5,x","DMA Ch6 DST_BURST_STEP"); - GEL_WatchAdd("*0x10C6,x","DMA Ch6 TRANSFER_SIZE"); - GEL_WatchAdd("*0x10C7,x","DMA Ch6 TRANSFER_COUNT"); - GEL_WatchAdd("*0x10C8,x","DMA Ch6 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x10C9,x","DMA Ch6 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x10CA,x","DMA Ch6 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x10CB,x","DMA Ch6 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x10CC,x","DMA Ch6 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x10CD,x","DMA Ch6 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x10CE,x","DMA Ch6 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x10CF,x","DMA Ch6 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x10D0,x","DMA Ch6 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10D2,x","DMA Ch6 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10D4,x","DMA Ch6 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10D6,x","DMA Ch6 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10D8,x","DMA Ch6 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10DA,x","DMA Ch6 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10DC,x","DMA Ch6 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10DE,x","DMA Ch6 DST_ADDR_ACTIVE"); - - -} -hotmenu DMA_Channel_1_regs() -{ - GEL_WatchAdd("*0x1020,x","DMA Ch1 MODE"); - GEL_WatchAdd("*0x1021,x","DMA Ch1 CONTROL"); - GEL_WatchAdd("*0x1022,x","DMA Ch1 BURST_SIZE"); - GEL_WatchAdd("*0x1023,x","DMA Ch1 BURST_COUNT"); - GEL_WatchAdd("*0x1024,x","DMA Ch1 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1025,x","DMA Ch1 DST_BURST_STEP"); - GEL_WatchAdd("*0x1026,x","DMA Ch1 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1027,x","DMA Ch1 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1028,x","DMA Ch1 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1029,x","DMA Ch1 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x102A,x","DMA Ch1 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x102B,x","DMA Ch1 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x102C,x","DMA Ch1 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x102D,x","DMA Ch1 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x102E,x","DMA Ch1 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x102F,x","DMA Ch1 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1030,x","DMA Ch1 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1032,x","DMA Ch1 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1034,x","DMA Ch1 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1036,x","DMA Ch1 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1038,x","DMA Ch1 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x103A,x","DMA Ch1 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x103C,x","DMA Ch1 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x103E,x","DMA Ch1 DST_ADDR_ACTIVE"); -} - -hotmenu DMA_Channel_2_regs() -{ - GEL_WatchAdd("*0x1040,x","DMA Ch2 MODE"); - GEL_WatchAdd("*0x1041,x","DMA Ch2 CONTROL"); - GEL_WatchAdd("*0x1042,x","DMA Ch2 BURST_SIZE"); - GEL_WatchAdd("*0x1043,x","DMA Ch2 BURST_COUNT"); - GEL_WatchAdd("*0x1044,x","DMA Ch2 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1045,x","DMA Ch2 DST_BURST_STEP"); - GEL_WatchAdd("*0x1046,x","DMA Ch2 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1047,x","DMA Ch2 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1048,x","DMA Ch2 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1049,x","DMA Ch2 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x104A,x","DMA Ch2 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x104B,x","DMA Ch2 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x104C,x","DMA Ch2 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x104D,x","DMA Ch2 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x104E,x","DMA Ch2 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x104F,x","DMA Ch2 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1050,x","DMA Ch2 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1052,x","DMA Ch2 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1054,x","DMA Ch2 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1056,x","DMA Ch2 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1058,x","DMA Ch2 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x105A,x","DMA Ch2 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x105C,x","DMA Ch2 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x105E,x","DMA Ch2 DST_ADDR_ACTIVE"); -} -hotmenu DMA_Channel_3_regs() -{ - GEL_WatchAdd("*0x1060,x","DMA Ch3 MODE"); - GEL_WatchAdd("*0x1061,x","DMA Ch3 CONTROL"); - GEL_WatchAdd("*0x1062,x","DMA Ch3 BURST_SIZE"); - GEL_WatchAdd("*0x1063,x","DMA Ch3 BURST_COUNT"); - GEL_WatchAdd("*0x1064,x","DMA Ch3 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1065,x","DMA Ch3 DST_BURST_STEP"); - GEL_WatchAdd("*0x1066,x","DMA Ch3 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1067,x","DMA Ch3 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1068,x","DMA Ch3 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1069,x","DMA Ch3 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x106A,x","DMA Ch3 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x106B,x","DMA Ch3 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x106C,x","DMA Ch3 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x106D,x","DMA Ch3 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x106E,x","DMA Ch3 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x106F,x","DMA Ch3 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1070,x","DMA Ch3 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1072,x","DMA Ch3 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1074,x","DMA Ch3 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1076,x","DMA Ch3 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1078,x","DMA Ch3 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x107A,x","DMA Ch3 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x107C,x","DMA Ch3 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x107E,x","DMA Ch3 DST_ADDR_ACTIVE"); -} -hotmenu DMA_Channel_4_regs() -{ - GEL_WatchAdd("*0x1080,x","DMA Ch4 MODE"); - GEL_WatchAdd("*0x1081,x","DMA Ch4 CONTROL"); - GEL_WatchAdd("*0x1082,x","DMA Ch4 BURST_SIZE"); - GEL_WatchAdd("*0x1083,x","DMA Ch4 BURST_COUNT"); - GEL_WatchAdd("*0x1084,x","DMA Ch4 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1085,x","DMA Ch4 DST_BURST_STEP"); - GEL_WatchAdd("*0x1086,x","DMA Ch4 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1087,x","DMA Ch4 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1088,x","DMA Ch4 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1089,x","DMA Ch4 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x108A,x","DMA Ch4 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x108B,x","DMA Ch4 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x108C,x","DMA Ch4 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x108D,x","DMA Ch4 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x108E,x","DMA Ch4 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x108F,x","DMA Ch4 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1090,x","DMA Ch4 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1092,x","DMA Ch4 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1094,x","DMA Ch4 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1096,x","DMA Ch4 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1098,x","DMA Ch4 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x109A,x","DMA Ch4 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x109C,x","DMA Ch4 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x109E,x","DMA Ch4 DST_ADDR_ACTIVE"); -} -hotmenu DMA_Channel_5_regs() -{ - GEL_WatchAdd("*0x10A0,x","DMA Ch5 MODE"); - GEL_WatchAdd("*0x10A1,x","DMA Ch5 CONTROL"); - GEL_WatchAdd("*0x10A2,x","DMA Ch5 BURST_SIZE"); - GEL_WatchAdd("*0x10A3,x","DMA Ch5 BURST_COUNT"); - GEL_WatchAdd("*0x10A4,x","DMA Ch5 SRC_BURST_STEP"); - GEL_WatchAdd("*0x10A5,x","DMA Ch5 DST_BURST_STEP"); - GEL_WatchAdd("*0x10A6,x","DMA Ch5 TRANSFER_SIZE"); - GEL_WatchAdd("*0x10A7,x","DMA Ch5 TRANSFER_COUNT"); - GEL_WatchAdd("*0x10A8,x","DMA Ch5 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x10A9,x","DMA Ch5 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x10AA,x","DMA Ch5 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x10AB,x","DMA Ch5 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x10AC,x","DMA Ch5 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x10AD,x","DMA Ch5 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x10AE,x","DMA Ch5 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x10AF,x","DMA Ch5 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x10B0,x","DMA Ch5 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10B2,x","DMA Ch5 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10B4,x","DMA Ch5 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10B6,x","DMA Ch5 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10B8,x","DMA Ch5 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10BA,x","DMA Ch5 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10BC,x","DMA Ch5 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10BE,x","DMA Ch5 DST_ADDR_ACTIVE"); -} -hotmenu DMA_Channel_6_regs() -{ - GEL_WatchAdd("*0x10C0,x","DMA Ch6 MODE"); - GEL_WatchAdd("*0x10C1,x","DMA Ch6 CONTROL"); - GEL_WatchAdd("*0x10C2,x","DMA Ch6 BURST_SIZE"); - GEL_WatchAdd("*0x10C3,x","DMA Ch6 BURST_COUNT"); - GEL_WatchAdd("*0x10C4,x","DMA Ch6 SRC_BURST_STEP"); - GEL_WatchAdd("*0x10C5,x","DMA Ch6 DST_BURST_STEP"); - GEL_WatchAdd("*0x10C6,x","DMA Ch6 TRANSFER_SIZE"); - GEL_WatchAdd("*0x10C7,x","DMA Ch6 TRANSFER_COUNT"); - GEL_WatchAdd("*0x10C8,x","DMA Ch6 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x10C9,x","DMA Ch6 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x10CA,x","DMA Ch6 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x10CB,x","DMA Ch6 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x10CC,x","DMA Ch6 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x10CD,x","DMA Ch6 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x10CE,x","DMA Ch6 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x10CF,x","DMA Ch6 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x10D0,x","DMA Ch6 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10D2,x","DMA Ch6 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10D4,x","DMA Ch6 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10D6,x","DMA Ch6 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10D8,x","DMA Ch6 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10DA,x","DMA Ch6 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10DC,x","DMA Ch6 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10DE,x","DMA Ch6 DST_ADDR_ACTIVE"); -} - -/********************************************************************/ -/* eCAN Registers */ -/********************************************************************/ -menuitem "Watch eCAN Registers"; - -hotmenu eCAN_A_Global_Regs() -{ - GEL_WatchAdd("*(long *)0x6000,x","eCANA CANME"); - GEL_WatchAdd("*(long *)0x6002,x","eCANA CANMD"); - GEL_WatchAdd("*(long *)0x6004,x","eCANA CANTRS"); - GEL_WatchAdd("*(long *)0x6006,x","eCANA CANTRR"); - GEL_WatchAdd("*(long *)0x6008,x","eCANA CANTA"); - GEL_WatchAdd("*(long *)0x600A,x","eCANA CANAA"); - GEL_WatchAdd("*(long *)0x600C,x","eCANA CANRMP"); - GEL_WatchAdd("*(long *)0x600E,x","eCANA CANRML"); - GEL_WatchAdd("*(long *)0x6010,x","eCANA CANRFP"); - GEL_WatchAdd("*(long *)0x6014,x","eCANA CANMC"); - GEL_WatchAdd("*(long *)0x6016,x","eCANA CANBTC"); - GEL_WatchAdd("*(long *)0x6018,x","eCANA CANES"); - GEL_WatchAdd("*(long *)0x601A,x","eCANA CANTEC"); - GEL_WatchAdd("*(long *)0x601C,x","eCANA CANREC"); - GEL_WatchAdd("*(long *)0x601E,x","eCANA CANGIF0"); - GEL_WatchAdd("*(long *)0x6020,x","eCANA CANGIM"); - GEL_WatchAdd("*(long *)0x6022,x","eCANA CANGIF1"); - GEL_WatchAdd("*(long *)0x6024,x","eCANA CANMIM"); - GEL_WatchAdd("*(long *)0x6026,x","eCANA CANMIL"); - GEL_WatchAdd("*(long *)0x6028,x","eCANA CANOPC"); - GEL_WatchAdd("*(long *)0x602A,x","eCANA CANTIOC"); - GEL_WatchAdd("*(long *)0x602C,x","eCANA CANRIOC"); - GEL_WatchAdd("*(long *)0x602E,x","eCANA CANLNT"); - GEL_WatchAdd("*(long *)0x6030,x","eCANA CANTOC"); - GEL_WatchAdd("*(long *)0x6032,x","eCANA CANTOS"); -} -hotmenu eCAN_A_Mailbox_0_to_1_Regs() -{ - GEL_WatchAdd("*(long *)0x6040,x","eCANA LAM0"); - GEL_WatchAdd("*(long *)0x6080,x","eCANA MOTS0"); - GEL_WatchAdd("*(long *)0x60C0,x","eCANA MOTO0"); - GEL_WatchAdd("*(long *)0x6100,x","eCANA MID0"); - GEL_WatchAdd("*(long *)0x6102,x","eCANA MCF0"); - GEL_WatchAdd("*(long *)0x6104,x","eCANA MDL0"); - GEL_WatchAdd("*(long *)0x6106,x","eCANA MDH0"); - - GEL_WatchAdd("*(long *)0x6042,x","eCANA LAM1"); - GEL_WatchAdd("*(long *)0x6082,x","eCANA MOTS1"); - GEL_WatchAdd("*(long *)0x60C2,x","eCANA MOTO1"); - GEL_WatchAdd("*(long *)0x6108,x","eCANA MID1"); - GEL_WatchAdd("*(long *)0x610A,x","eCANA MCF1"); - GEL_WatchAdd("*(long *)0x610C,x","eCANA MDL1"); - GEL_WatchAdd("*(long *)0x610E,x","eCANA MDH1"); -} -hotmenu eCAN_A_Mailbox_2_to_3_Regs() -{ - GEL_WatchAdd("*(long *)0x6044,x","eCANA LAM2"); - GEL_WatchAdd("*(long *)0x6084,x","eCANA MOTS2"); - GEL_WatchAdd("*(long *)0x60C4,x","eCANA MOTO2"); - GEL_WatchAdd("*(long *)0x6110,x","eCANA MID2"); - GEL_WatchAdd("*(long *)0x6112,x","eCANA MCF2"); - GEL_WatchAdd("*(long *)0x6114,x","eCANA MDL2"); - GEL_WatchAdd("*(long *)0x6116,x","eCANA MDH2"); - - GEL_WatchAdd("*(long *)0x6046,x","eCANA LAM3"); - GEL_WatchAdd("*(long *)0x6086,x","eCANA MOTS3"); - GEL_WatchAdd("*(long *)0x60C6,x","eCANA MOTO3"); - GEL_WatchAdd("*(long *)0x6118,x","eCANA MID3"); - GEL_WatchAdd("*(long *)0x611A,x","eCANA MCF3"); - GEL_WatchAdd("*(long *)0x611C,x","eCANA MDL3"); - GEL_WatchAdd("*(long *)0x611E,x","eCANA MDH3"); -} -hotmenu eCAN_A_Mailbox_4_to_5_Regs() -{ - GEL_WatchAdd("*(long *)0x6048,x","eCANA LAM4"); - GEL_WatchAdd("*(long *)0x6088,x","eCANA MOTS4"); - GEL_WatchAdd("*(long *)0x60C8,x","eCANA MOTO4"); - GEL_WatchAdd("*(long *)0x6120,x","eCANA MID4"); - GEL_WatchAdd("*(long *)0x6122,x","eCANA MCF4"); - GEL_WatchAdd("*(long *)0x6124,x","eCANA MDL4"); - GEL_WatchAdd("*(long *)0x6126,x","eCANA MDH4"); - - GEL_WatchAdd("*(long *)0x604A,x","eCANA LAM5"); - GEL_WatchAdd("*(long *)0x608A,x","eCANA MOTS5"); - GEL_WatchAdd("*(long *)0x60CA,x","eCANA MOTO5"); - GEL_WatchAdd("*(long *)0x6128,x","eCANA MID5"); - GEL_WatchAdd("*(long *)0x612A,x","eCANA MCF5"); - GEL_WatchAdd("*(long *)0x612C,x","eCANA MDL5"); - GEL_WatchAdd("*(long *)0x612E,x","eCANA MDH5"); -} -hotmenu eCAN_A_Mailbox_6_to_7_Regs() -{ - GEL_WatchAdd("*(long *)0x604C,x","eCANA LAM6"); - GEL_WatchAdd("*(long *)0x608C,x","eCANA MOTS6"); - GEL_WatchAdd("*(long *)0x60CC,x","eCANA MOTO6"); - GEL_WatchAdd("*(long *)0x6130,x","eCANA MID6"); - GEL_WatchAdd("*(long *)0x6132,x","eCANA MCF6"); - GEL_WatchAdd("*(long *)0x6134,x","eCANA MDL6"); - GEL_WatchAdd("*(long *)0x6136,x","eCANA MDH6"); - - GEL_WatchAdd("*(long *)0x604E,x","eCANA LAM7"); - GEL_WatchAdd("*(long *)0x608E,x","eCANA MOTS7"); - GEL_WatchAdd("*(long *)0x60CE,x","eCANA MOTO7"); - GEL_WatchAdd("*(long *)0x6138,x","eCANA MID7"); - GEL_WatchAdd("*(long *)0x613A,x","eCANA MCF7"); - GEL_WatchAdd("*(long *)0x613C,x","eCANA MDL7"); - GEL_WatchAdd("*(long *)0x613E,x","eCANA MDH7"); -} -hotmenu eCAN_A_Mailbox_8_to_9_Regs() -{ - GEL_WatchAdd("*(long *)0x6050,x","eCANA LAM8"); - GEL_WatchAdd("*(long *)0x6090,x","eCANA MOTS8"); - GEL_WatchAdd("*(long *)0x60D0,x","eCANA MOTO8"); - GEL_WatchAdd("*(long *)0x6140,x","eCANA MID8"); - GEL_WatchAdd("*(long *)0x6142,x","eCANA MCF8"); - GEL_WatchAdd("*(long *)0x6144,x","eCANA MDL8"); - GEL_WatchAdd("*(long *)0x6146,x","eCANA MDH8"); - - GEL_WatchAdd("*(long *)0x6052,x","eCANA LAM9"); - GEL_WatchAdd("*(long *)0x6092,x","eCANA MOTS9"); - GEL_WatchAdd("*(long *)0x60D2,x","eCANA MOTO9"); - GEL_WatchAdd("*(long *)0x6148,x","eCANA MID9"); - GEL_WatchAdd("*(long *)0x614A,x","eCANA MCF9"); - GEL_WatchAdd("*(long *)0x614C,x","eCANA MDL9"); - GEL_WatchAdd("*(long *)0x614E,x","eCANA MDH9"); -} -hotmenu eCAN_A_Mailbox_10_to_11_Regs() -{ - GEL_WatchAdd("*(long *)0x6054,x","eCANA LAM10"); - GEL_WatchAdd("*(long *)0x6094,x","eCANA MOTS10"); - GEL_WatchAdd("*(long *)0x60D4,x","eCANA MOTO10"); - GEL_WatchAdd("*(long *)0x6150,x","eCANA MID10"); - GEL_WatchAdd("*(long *)0x6152,x","eCANA MCF10"); - GEL_WatchAdd("*(long *)0x6154,x","eCANA MDL10"); - GEL_WatchAdd("*(long *)0x6156,x","eCANA MDH10"); - - GEL_WatchAdd("*(long *)0x6056,x","eCANA LAM11"); - GEL_WatchAdd("*(long *)0x6096,x","eCANA MOTS11"); - GEL_WatchAdd("*(long *)0x60D6,x","eCANA MOTO11"); - GEL_WatchAdd("*(long *)0x6158,x","eCANA MID11"); - GEL_WatchAdd("*(long *)0x615A,x","eCANA MCF11"); - GEL_WatchAdd("*(long *)0x615C,x","eCANA MDL11"); - GEL_WatchAdd("*(long *)0x615E,x","eCANA MDH11"); -} -hotmenu eCAN_A_Mailbox_12_to_13_Regs() -{ - GEL_WatchAdd("*(long *)0x6058,x","eCANA LAM12"); - GEL_WatchAdd("*(long *)0x6098,x","eCANA MOTS12"); - GEL_WatchAdd("*(long *)0x60D8,x","eCANA MOTO12"); - GEL_WatchAdd("*(long *)0x6160,x","eCANA MID12"); - GEL_WatchAdd("*(long *)0x6162,x","eCANA MCF12"); - GEL_WatchAdd("*(long *)0x6164,x","eCANA MDL12"); - GEL_WatchAdd("*(long *)0x6166,x","eCANA MDH12"); - - GEL_WatchAdd("*(long *)0x605A,x","eCANA LAM13"); - GEL_WatchAdd("*(long *)0x609A,x","eCANA MOTS13"); - GEL_WatchAdd("*(long *)0x60DA,x","eCANA MOTO13"); - GEL_WatchAdd("*(long *)0x6168,x","eCANA MID13"); - GEL_WatchAdd("*(long *)0x616A,x","eCANA MCF13"); - GEL_WatchAdd("*(long *)0x616C,x","eCANA MDL13"); - GEL_WatchAdd("*(long *)0x616E,x","eCANA MDH13"); -} -hotmenu eCAN_A_Mailbox_14_to_15_Regs() -{ - GEL_WatchAdd("*(long *)0x605C,x","eCANA LAM14"); - GEL_WatchAdd("*(long *)0x609C,x","eCANA MOTS14"); - GEL_WatchAdd("*(long *)0x60DC,x","eCANA MOTO14"); - GEL_WatchAdd("*(long *)0x6170,x","eCANA MID14"); - GEL_WatchAdd("*(long *)0x6172,x","eCANA MCF14"); - GEL_WatchAdd("*(long *)0x6174,x","eCANA MDL14"); - GEL_WatchAdd("*(long *)0x6176,x","eCANA MDH14"); - - GEL_WatchAdd("*(long *)0x605E,x","eCANA LAM15"); - GEL_WatchAdd("*(long *)0x609E,x","eCANA MOTS15"); - GEL_WatchAdd("*(long *)0x60DE,x","eCANA MOTO15"); - GEL_WatchAdd("*(long *)0x6178,x","eCANA MID15"); - GEL_WatchAdd("*(long *)0x617A,x","eCANA MCF15"); - GEL_WatchAdd("*(long *)0x617C,x","eCANA MDL15"); - GEL_WatchAdd("*(long *)0x617E,x","eCANA MDH15"); -} -hotmenu eCAN_A_Mailbox_16_to_17_Regs() -{ - GEL_WatchAdd("*(long *)0x6060,x","eCANA LAM16"); - GEL_WatchAdd("*(long *)0x60A0,x","eCANA MOTS16"); - GEL_WatchAdd("*(long *)0x60E0,x","eCANA MOTO16"); - GEL_WatchAdd("*(long *)0x6180,x","eCANA MID16"); - GEL_WatchAdd("*(long *)0x6182,x","eCANA MCF16"); - GEL_WatchAdd("*(long *)0x6184,x","eCANA MDL16"); - GEL_WatchAdd("*(long *)0x6186,x","eCANA MDH16"); - - GEL_WatchAdd("*(long *)0x6062,x","eCANA LAM17"); - GEL_WatchAdd("*(long *)0x60A2,x","eCANA MOTS17"); - GEL_WatchAdd("*(long *)0x60E2,x","eCANA MOTO17"); - GEL_WatchAdd("*(long *)0x6188,x","eCANA MID17"); - GEL_WatchAdd("*(long *)0x618A,x","eCANA MCF17"); - GEL_WatchAdd("*(long *)0x618C,x","eCANA MDL17"); - GEL_WatchAdd("*(long *)0x618E,x","eCANA MDH17"); -} -hotmenu eCAN_A_Mailbox_18_to_19_Regs() -{ - GEL_WatchAdd("*(long *)0x6064,x","eCANA LAM18"); - GEL_WatchAdd("*(long *)0x60A4,x","eCANA MOTS18"); - GEL_WatchAdd("*(long *)0x60E4,x","eCANA MOTO18"); - GEL_WatchAdd("*(long *)0x6190,x","eCANA MID18"); - GEL_WatchAdd("*(long *)0x6192,x","eCANA MCF18"); - GEL_WatchAdd("*(long *)0x6194,x","eCANA MDL18"); - GEL_WatchAdd("*(long *)0x6196,x","eCANA MDH18"); - - GEL_WatchAdd("*(long *)0x6066,x","eCANA LAM19"); - GEL_WatchAdd("*(long *)0x60A6,x","eCANA MOTS19"); - GEL_WatchAdd("*(long *)0x60E6,x","eCANA MOTO19"); - GEL_WatchAdd("*(long *)0x6198,x","eCANA MID19"); - GEL_WatchAdd("*(long *)0x619A,x","eCANA MCF19"); - GEL_WatchAdd("*(long *)0x619C,x","eCANA MDL19"); - GEL_WatchAdd("*(long *)0x619E,x","eCANA MDH19"); -} -hotmenu eCAN_A_Mailbox_20_to_21_Regs() -{ - GEL_WatchAdd("*(long *)0x6068,x","eCANA LAM20"); - GEL_WatchAdd("*(long *)0x60A8,x","eCANA MOTS20"); - GEL_WatchAdd("*(long *)0x60E8,x","eCANA MOTO20"); - GEL_WatchAdd("*(long *)0x61A0,x","eCANA MID20"); - GEL_WatchAdd("*(long *)0x61A2,x","eCANA MCF20"); - GEL_WatchAdd("*(long *)0x61A4,x","eCANA MDL20"); - GEL_WatchAdd("*(long *)0x61A6,x","eCANA MDH20"); - - GEL_WatchAdd("*(long *)0x606A,x","eCANA LAM21"); - GEL_WatchAdd("*(long *)0x60AA,x","eCANA MOTS21"); - GEL_WatchAdd("*(long *)0x60EA,x","eCANA MOTO21"); - GEL_WatchAdd("*(long *)0x61A8,x","eCANA MID21"); - GEL_WatchAdd("*(long *)0x61AA,x","eCANA MCF21"); - GEL_WatchAdd("*(long *)0x61AC,x","eCANA MDL21"); - GEL_WatchAdd("*(long *)0x61AE,x","eCANA MDH21"); -} -hotmenu eCAN_A_Mailbox_22_to_23_Regs() -{ - GEL_WatchAdd("*(long *)0x606C,x","eCANA LAM22"); - GEL_WatchAdd("*(long *)0x60AC,x","eCANA MOTS22"); - GEL_WatchAdd("*(long *)0x60EC,x","eCANA MOTO22"); - GEL_WatchAdd("*(long *)0x61B0,x","eCANA MID22"); - GEL_WatchAdd("*(long *)0x61B2,x","eCANA MCF22"); - GEL_WatchAdd("*(long *)0x61B4,x","eCANA MDL22"); - GEL_WatchAdd("*(long *)0x61B6,x","eCANA MDH22"); - - GEL_WatchAdd("*(long *)0x606E,x","eCANA LAM23"); - GEL_WatchAdd("*(long *)0x60AE,x","eCANA MOTS23"); - GEL_WatchAdd("*(long *)0x60EE,x","eCANA MOTO23"); - GEL_WatchAdd("*(long *)0x61B8,x","eCANA MID23"); - GEL_WatchAdd("*(long *)0x61BA,x","eCANA MCF23"); - GEL_WatchAdd("*(long *)0x61BC,x","eCANA MDL23"); - GEL_WatchAdd("*(long *)0x61BE,x","eCANA MDH23"); -} -hotmenu eCAN_A_Mailbox_24_to_25_Regs() -{ - GEL_WatchAdd("*(long *)0x6070,x","eCANA LAM24"); - GEL_WatchAdd("*(long *)0x60B0,x","eCANA MOTS24"); - GEL_WatchAdd("*(long *)0x60F0,x","eCANA MOTO24"); - GEL_WatchAdd("*(long *)0x61C0,x","eCANA MID24"); - GEL_WatchAdd("*(long *)0x61C2,x","eCANA MCF24"); - GEL_WatchAdd("*(long *)0x61C4,x","eCANA MDL24"); - GEL_WatchAdd("*(long *)0x61C6,x","eCANA MDH24"); - - GEL_WatchAdd("*(long *)0x6072,x","eCANA LAM25"); - GEL_WatchAdd("*(long *)0x60B2,x","eCANA MOTS25"); - GEL_WatchAdd("*(long *)0x60F2,x","eCANA MOTO25"); - GEL_WatchAdd("*(long *)0x61C8,x","eCANA MID25"); - GEL_WatchAdd("*(long *)0x61CA,x","eCANA MCF25"); - GEL_WatchAdd("*(long *)0x61CC,x","eCANA MDL25"); - GEL_WatchAdd("*(long *)0x61CE,x","eCANA MDH25"); -} -hotmenu eCAN_A_Mailbox_26_to_27_Regs() -{ - GEL_WatchAdd("*(long *)0x6074,x","eCANA LAM26"); - GEL_WatchAdd("*(long *)0x60B4,x","eCANA MOTS26"); - GEL_WatchAdd("*(long *)0x60F4,x","eCANA MOTO26"); - GEL_WatchAdd("*(long *)0x61D0,x","eCANA MID26"); - GEL_WatchAdd("*(long *)0x61D2,x","eCANA MCF26"); - GEL_WatchAdd("*(long *)0x61D4,x","eCANA MDL26"); - GEL_WatchAdd("*(long *)0x61D6,x","eCANA MDH26"); - - GEL_WatchAdd("*(long *)0x6076,x","eCANA LAM27"); - GEL_WatchAdd("*(long *)0x60B6,x","eCANA MOTS27"); - GEL_WatchAdd("*(long *)0x60F6,x","eCANA MOTO27"); - GEL_WatchAdd("*(long *)0x61D8,x","eCANA MID27"); - GEL_WatchAdd("*(long *)0x61DA,x","eCANA MCF27"); - GEL_WatchAdd("*(long *)0x61DC,x","eCANA MDL27"); - GEL_WatchAdd("*(long *)0x61DE,x","eCANA MDH27"); -} -hotmenu eCAN_A_Mailbox_28_to_29_Regs() -{ - GEL_WatchAdd("*(long *)0x6078,x","eCANA LAM28"); - GEL_WatchAdd("*(long *)0x60B8,x","eCANA MOTS28"); - GEL_WatchAdd("*(long *)0x60F8,x","eCANA MOTO28"); - GEL_WatchAdd("*(long *)0x61E0,x","eCANA MID28"); - GEL_WatchAdd("*(long *)0x61E2,x","eCANA MCF28"); - GEL_WatchAdd("*(long *)0x61E4,x","eCANA MDL28"); - GEL_WatchAdd("*(long *)0x61E6,x","eCANA MDH28"); - - GEL_WatchAdd("*(long *)0x607A,x","eCANA LAM29"); - GEL_WatchAdd("*(long *)0x60BA,x","eCANA MOTS29"); - GEL_WatchAdd("*(long *)0x60FA,x","eCANA MOTO29"); - GEL_WatchAdd("*(long *)0x61E8,x","eCANA MID29"); - GEL_WatchAdd("*(long *)0x61EA,x","eCANA MCF29"); - GEL_WatchAdd("*(long *)0x61EC,x","eCANA MDL29"); - GEL_WatchAdd("*(long *)0x61EE,x","eCANA MDH29"); -} -hotmenu eCAN_A_Mailbox_30_to_31_Regs() -{ - GEL_WatchAdd("*(long *)0x607C,x","eCANA LAM30"); - GEL_WatchAdd("*(long *)0x60BC,x","eCANA MOTS30"); - GEL_WatchAdd("*(long *)0x60FC,x","eCANA MOTO30"); - GEL_WatchAdd("*(long *)0x61F0,x","eCANA MID30"); - GEL_WatchAdd("*(long *)0x61F2,x","eCANA MCF30"); - GEL_WatchAdd("*(long *)0x61F4,x","eCANA MDL30"); - GEL_WatchAdd("*(long *)0x61F6,x","eCANA MDH30"); - - GEL_WatchAdd("*(long *)0x607E,x","eCANA LAM31"); - GEL_WatchAdd("*(long *)0x60BE,x","eCANA MOTS31"); - GEL_WatchAdd("*(long *)0x60FE,x","eCANA MOTO31"); - GEL_WatchAdd("*(long *)0x61F8,x","eCANA MID31"); - GEL_WatchAdd("*(long *)0x61FA,x","eCANA MCF31"); - GEL_WatchAdd("*(long *)0x61FC,x","eCANA MDL31"); - GEL_WatchAdd("*(long *)0x61FE,x","eCANA MDH31"); -} -hotmenu eCAN_B_Global_Regs() -{ - GEL_WatchAdd("*(long *)0x6200,x","eCANB CANME"); - GEL_WatchAdd("*(long *)0x6202,x","eCANB CANMD"); - GEL_WatchAdd("*(long *)0x6204,x","eCANB CANTRS"); - GEL_WatchAdd("*(long *)0x6206,x","eCANB CANTRR"); - GEL_WatchAdd("*(long *)0x6208,x","eCANB CANTA"); - GEL_WatchAdd("*(long *)0x620A,x","eCANB CANAA"); - GEL_WatchAdd("*(long *)0x620C,x","eCANB CANRMP"); - GEL_WatchAdd("*(long *)0x620E,x","eCANB CANRML"); - GEL_WatchAdd("*(long *)0x6210,x","eCANB CANRFP"); - GEL_WatchAdd("*(long *)0x6214,x","eCANB CANMC"); - GEL_WatchAdd("*(long *)0x6216,x","eCANB CANBTC"); - GEL_WatchAdd("*(long *)0x6218,x","eCANB CANES"); - GEL_WatchAdd("*(long *)0x621A,x","eCANB CANTEC"); - GEL_WatchAdd("*(long *)0x621C,x","eCANB CANREC"); - GEL_WatchAdd("*(long *)0x621E,x","eCANB CANGIF0"); - GEL_WatchAdd("*(long *)0x6220,x","eCANB CANGIM"); - GEL_WatchAdd("*(long *)0x6222,x","eCANB CANGIF1"); - GEL_WatchAdd("*(long *)0x6224,x","eCANB CANMIM"); - GEL_WatchAdd("*(long *)0x6226,x","eCANB CANMIL"); - GEL_WatchAdd("*(long *)0x6228,x","eCANB CANOPC"); - GEL_WatchAdd("*(long *)0x622A,x","eCANB CANTIOC"); - GEL_WatchAdd("*(long *)0x622C,x","eCANB CANRIOC"); - GEL_WatchAdd("*(long *)0x622E,x","eCANB CANLNT"); - GEL_WatchAdd("*(long *)0x6230,x","eCANB CANTOC"); - GEL_WatchAdd("*(long *)0x6232,x","eCANB CANTOS"); -} -hotmenu eCAN_B_Mailbox_0_to_1_Regs() -{ - GEL_WatchAdd("*(long *)0x6240,x","eCANB LAM0"); - GEL_WatchAdd("*(long *)0x6280,x","eCANB MOTS0"); - GEL_WatchAdd("*(long *)0x62C0,x","eCANB MOTO0"); - GEL_WatchAdd("*(long *)0x6300,x","eCANB MID0"); - GEL_WatchAdd("*(long *)0x6302,x","eCANB MCF0"); - GEL_WatchAdd("*(long *)0x6304,x","eCANB MDL0"); - GEL_WatchAdd("*(long *)0x6306,x","eCANB MDH0"); - - GEL_WatchAdd("*(long *)0x6242,x","eCANB LAM1"); - GEL_WatchAdd("*(long *)0x6282,x","eCANB MOTS1"); - GEL_WatchAdd("*(long *)0x62C2,x","eCANB MOTO1"); - GEL_WatchAdd("*(long *)0x6308,x","eCANB MID1"); - GEL_WatchAdd("*(long *)0x630A,x","eCANB MCF1"); - GEL_WatchAdd("*(long *)0x630C,x","eCANB MDL1"); - GEL_WatchAdd("*(long *)0x630E,x","eCANB MDH1"); -} -hotmenu eCAN_B_Mailbox_2_to_3_Regs() -{ - GEL_WatchAdd("*(long *)0x6244,x","eCANB LAM2"); - GEL_WatchAdd("*(long *)0x6284,x","eCANB MOTS2"); - GEL_WatchAdd("*(long *)0x62C4,x","eCANB MOTO2"); - GEL_WatchAdd("*(long *)0x6310,x","eCANB MID2"); - GEL_WatchAdd("*(long *)0x6312,x","eCANB MCF2"); - GEL_WatchAdd("*(long *)0x6314,x","eCANB MDL2"); - GEL_WatchAdd("*(long *)0x6316,x","eCANB MDH2"); - - GEL_WatchAdd("*(long *)0x6246,x","eCANB LAM3"); - GEL_WatchAdd("*(long *)0x6286,x","eCANB MOTS3"); - GEL_WatchAdd("*(long *)0x62C6,x","eCANB MOTO3"); - GEL_WatchAdd("*(long *)0x6318,x","eCANB MID3"); - GEL_WatchAdd("*(long *)0x631A,x","eCANB MCF3"); - GEL_WatchAdd("*(long *)0x631C,x","eCANB MDL3"); - GEL_WatchAdd("*(long *)0x631E,x","eCANB MDH3"); -} -hotmenu eCAN_B_Mailbox_4_to_5_Regs() -{ - GEL_WatchAdd("*(long *)0x6248,x","eCANB LAM4"); - GEL_WatchAdd("*(long *)0x6288,x","eCANB MOTS4"); - GEL_WatchAdd("*(long *)0x62C8,x","eCANB MOTO4"); - GEL_WatchAdd("*(long *)0x6320,x","eCANB MID4"); - GEL_WatchAdd("*(long *)0x6322,x","eCANB MCF4"); - GEL_WatchAdd("*(long *)0x6324,x","eCANB MDL4"); - GEL_WatchAdd("*(long *)0x6326,x","eCANB MDH4"); - - GEL_WatchAdd("*(long *)0x624A,x","eCANB LAM5"); - GEL_WatchAdd("*(long *)0x628A,x","eCANB MOTS5"); - GEL_WatchAdd("*(long *)0x62CA,x","eCANB MOTO5"); - GEL_WatchAdd("*(long *)0x6328,x","eCANB MID5"); - GEL_WatchAdd("*(long *)0x632A,x","eCANB MCF5"); - GEL_WatchAdd("*(long *)0x632C,x","eCANB MDL5"); - GEL_WatchAdd("*(long *)0x632E,x","eCANB MDH5"); -} -hotmenu eCAN_B_Mailbox_6_to_7_Regs() -{ - GEL_WatchAdd("*(long *)0x624C,x","eCANB LAM6"); - GEL_WatchAdd("*(long *)0x628C,x","eCANB MOTS6"); - GEL_WatchAdd("*(long *)0x62CC,x","eCANB MOTO6"); - GEL_WatchAdd("*(long *)0x6330,x","eCANB MID6"); - GEL_WatchAdd("*(long *)0x6332,x","eCANB MCF6"); - GEL_WatchAdd("*(long *)0x6334,x","eCANB MDL6"); - GEL_WatchAdd("*(long *)0x6336,x","eCANB MDH6"); - - GEL_WatchAdd("*(long *)0x624E,x","eCANB LAM7"); - GEL_WatchAdd("*(long *)0x628E,x","eCANB MOTS7"); - GEL_WatchAdd("*(long *)0x62CE,x","eCANB MOTO7"); - GEL_WatchAdd("*(long *)0x6338,x","eCANB MID7"); - GEL_WatchAdd("*(long *)0x633A,x","eCANB MCF7"); - GEL_WatchAdd("*(long *)0x633C,x","eCANB MDL7"); - GEL_WatchAdd("*(long *)0x633E,x","eCANB MDH7"); -} -hotmenu eCAN_B_Mailbox_8_to_9_Regs() -{ - GEL_WatchAdd("*(long *)0x6250,x","eCANB LAM8"); - GEL_WatchAdd("*(long *)0x6290,x","eCANB MOTS8"); - GEL_WatchAdd("*(long *)0x62D0,x","eCANB MOTO8"); - GEL_WatchAdd("*(long *)0x6340,x","eCANB MID8"); - GEL_WatchAdd("*(long *)0x6342,x","eCANB MCF8"); - GEL_WatchAdd("*(long *)0x6344,x","eCANB MDL8"); - GEL_WatchAdd("*(long *)0x6346,x","eCANB MDH8"); - - GEL_WatchAdd("*(long *)0x6252,x","eCANB LAM9"); - GEL_WatchAdd("*(long *)0x6292,x","eCANB MOTS9"); - GEL_WatchAdd("*(long *)0x62D2,x","eCANB MOTO9"); - GEL_WatchAdd("*(long *)0x6348,x","eCANB MID9"); - GEL_WatchAdd("*(long *)0x634A,x","eCANB MCF9"); - GEL_WatchAdd("*(long *)0x634C,x","eCANB MDL9"); - GEL_WatchAdd("*(long *)0x634E,x","eCANB MDH9"); -} -hotmenu eCAN_B_Mailbox_10_to_11_Regs() -{ - GEL_WatchAdd("*(long *)0x6254,x","eCANB LAM10"); - GEL_WatchAdd("*(long *)0x6294,x","eCANB MOTS10"); - GEL_WatchAdd("*(long *)0x62D4,x","eCANB MOTO10"); - GEL_WatchAdd("*(long *)0x6350,x","eCANB MID10"); - GEL_WatchAdd("*(long *)0x6352,x","eCANB MCF10"); - GEL_WatchAdd("*(long *)0x6354,x","eCANB MDL10"); - GEL_WatchAdd("*(long *)0x6356,x","eCANB MDH10"); - - GEL_WatchAdd("*(long *)0x6256,x","eCANB LAM11"); - GEL_WatchAdd("*(long *)0x6296,x","eCANB MOTS11"); - GEL_WatchAdd("*(long *)0x62D6,x","eCANB MOTO11"); - GEL_WatchAdd("*(long *)0x6358,x","eCANB MID11"); - GEL_WatchAdd("*(long *)0x635A,x","eCANB MCF11"); - GEL_WatchAdd("*(long *)0x635C,x","eCANB MDL11"); - GEL_WatchAdd("*(long *)0x635E,x","eCANB MDH11"); -} -hotmenu eCAN_B_Mailbox_12_to_13_Regs() -{ - GEL_WatchAdd("*(long *)0x6258,x","eCANB LAM12"); - GEL_WatchAdd("*(long *)0x6298,x","eCANB MOTS12"); - GEL_WatchAdd("*(long *)0x62D8,x","eCANB MOTO12"); - GEL_WatchAdd("*(long *)0x6360,x","eCANB MID12"); - GEL_WatchAdd("*(long *)0x6362,x","eCANB MCF12"); - GEL_WatchAdd("*(long *)0x6364,x","eCANB MDL12"); - GEL_WatchAdd("*(long *)0x6366,x","eCANB MDH12"); - - GEL_WatchAdd("*(long *)0x625A,x","eCANB LAM13"); - GEL_WatchAdd("*(long *)0x629A,x","eCANB MOTS13"); - GEL_WatchAdd("*(long *)0x62DA,x","eCANB MOTO13"); - GEL_WatchAdd("*(long *)0x6368,x","eCANB MID13"); - GEL_WatchAdd("*(long *)0x636A,x","eCANB MCF13"); - GEL_WatchAdd("*(long *)0x636C,x","eCANB MDL13"); - GEL_WatchAdd("*(long *)0x636E,x","eCANB MDH13"); -} -hotmenu eCAN_B_Mailbox_14_to_15_Regs() -{ - GEL_WatchAdd("*(long *)0x625C,x","eCANB LAM14"); - GEL_WatchAdd("*(long *)0x629C,x","eCANB MOTS14"); - GEL_WatchAdd("*(long *)0x62DC,x","eCANB MOTO14"); - GEL_WatchAdd("*(long *)0x6370,x","eCANB MID14"); - GEL_WatchAdd("*(long *)0x6372,x","eCANB MCF14"); - GEL_WatchAdd("*(long *)0x6374,x","eCANB MDL14"); - GEL_WatchAdd("*(long *)0x6376,x","eCANB MDH14"); - - GEL_WatchAdd("*(long *)0x625E,x","eCANB LAM15"); - GEL_WatchAdd("*(long *)0x629E,x","eCANB MOTS15"); - GEL_WatchAdd("*(long *)0x62DE,x","eCANB MOTO15"); - GEL_WatchAdd("*(long *)0x6378,x","eCANB MID15"); - GEL_WatchAdd("*(long *)0x637A,x","eCANB MCF15"); - GEL_WatchAdd("*(long *)0x637C,x","eCANB MDL15"); - GEL_WatchAdd("*(long *)0x637E,x","eCANB MDH15"); -} -hotmenu eCAN_B_Mailbox_16_to_17_Regs() -{ - GEL_WatchAdd("*(long *)0x6260,x","eCANB LAM16"); - GEL_WatchAdd("*(long *)0x62A0,x","eCANB MOTS16"); - GEL_WatchAdd("*(long *)0x62E0,x","eCANB MOTO16"); - GEL_WatchAdd("*(long *)0x6380,x","eCANB MID16"); - GEL_WatchAdd("*(long *)0x6382,x","eCANB MCF16"); - GEL_WatchAdd("*(long *)0x6384,x","eCANB MDL16"); - GEL_WatchAdd("*(long *)0x6386,x","eCANB MDH16"); - - GEL_WatchAdd("*(long *)0x6262,x","eCANB LAM17"); - GEL_WatchAdd("*(long *)0x62A2,x","eCANB MOTS17"); - GEL_WatchAdd("*(long *)0x62E2,x","eCANB MOTO17"); - GEL_WatchAdd("*(long *)0x6388,x","eCANB MID17"); - GEL_WatchAdd("*(long *)0x638A,x","eCANB MCF17"); - GEL_WatchAdd("*(long *)0x638C,x","eCANB MDL17"); - GEL_WatchAdd("*(long *)0x638E,x","eCANB MDH17"); -} -hotmenu eCAN_B_Mailbox_18_to_19_Regs() -{ - GEL_WatchAdd("*(long *)0x6264,x","eCANB LAM18"); - GEL_WatchAdd("*(long *)0x62A4,x","eCANB MOTS18"); - GEL_WatchAdd("*(long *)0x62E4,x","eCANB MOTO18"); - GEL_WatchAdd("*(long *)0x6390,x","eCANB MID18"); - GEL_WatchAdd("*(long *)0x6392,x","eCANB MCF18"); - GEL_WatchAdd("*(long *)0x6394,x","eCANB MDL18"); - GEL_WatchAdd("*(long *)0x6396,x","eCANB MDH18"); - - GEL_WatchAdd("*(long *)0x6266,x","eCANB LAM19"); - GEL_WatchAdd("*(long *)0x62A6,x","eCANB MOTS19"); - GEL_WatchAdd("*(long *)0x62E6,x","eCANB MOTO19"); - GEL_WatchAdd("*(long *)0x6398,x","eCANB MID19"); - GEL_WatchAdd("*(long *)0x639A,x","eCANB MCF19"); - GEL_WatchAdd("*(long *)0x639C,x","eCANB MDL19"); - GEL_WatchAdd("*(long *)0x639E,x","eCANB MDH19"); -} -hotmenu eCAN_B_Mailbox_20_to_21_Regs() -{ - GEL_WatchAdd("*(long *)0x6268,x","eCANB LAM20"); - GEL_WatchAdd("*(long *)0x62A8,x","eCANB MOTS20"); - GEL_WatchAdd("*(long *)0x62E8,x","eCANB MOTO20"); - GEL_WatchAdd("*(long *)0x63A0,x","eCANB MID20"); - GEL_WatchAdd("*(long *)0x63A2,x","eCANB MCF20"); - GEL_WatchAdd("*(long *)0x63A4,x","eCANB MDL20"); - GEL_WatchAdd("*(long *)0x63A6,x","eCANB MDH20"); - - GEL_WatchAdd("*(long *)0x626A,x","eCANB LAM21"); - GEL_WatchAdd("*(long *)0x62AA,x","eCANB MOTS21"); - GEL_WatchAdd("*(long *)0x62EA,x","eCANB MOTO21"); - GEL_WatchAdd("*(long *)0x63A8,x","eCANB MID21"); - GEL_WatchAdd("*(long *)0x63AA,x","eCANB MCF21"); - GEL_WatchAdd("*(long *)0x63AC,x","eCANB MDL21"); - GEL_WatchAdd("*(long *)0x63AE,x","eCANB MDH21"); -} -hotmenu eCAN_B_Mailbox_22_to_23_Regs() -{ - GEL_WatchAdd("*(long *)0x626C,x","eCANB LAM22"); - GEL_WatchAdd("*(long *)0x62AC,x","eCANB MOTS22"); - GEL_WatchAdd("*(long *)0x62EC,x","eCANB MOTO22"); - GEL_WatchAdd("*(long *)0x63B0,x","eCANB MID22"); - GEL_WatchAdd("*(long *)0x63B2,x","eCANB MCF22"); - GEL_WatchAdd("*(long *)0x63B4,x","eCANB MDL22"); - GEL_WatchAdd("*(long *)0x63B6,x","eCANB MDH22"); - - GEL_WatchAdd("*(long *)0x626E,x","eCANB LAM23"); - GEL_WatchAdd("*(long *)0x62AE,x","eCANB MOTS23"); - GEL_WatchAdd("*(long *)0x62EE,x","eCANB MOTO23"); - GEL_WatchAdd("*(long *)0x63B8,x","eCANB MID23"); - GEL_WatchAdd("*(long *)0x63BA,x","eCANB MCF23"); - GEL_WatchAdd("*(long *)0x63BC,x","eCANB MDL23"); - GEL_WatchAdd("*(long *)0x63BE,x","eCANB MDH23"); -} -hotmenu eCAN_B_Mailbox_24_to_25_Regs() -{ - GEL_WatchAdd("*(long *)0x6270,x","eCANB LAM24"); - GEL_WatchAdd("*(long *)0x62B0,x","eCANB MOTS24"); - GEL_WatchAdd("*(long *)0x62F0,x","eCANB MOTO24"); - GEL_WatchAdd("*(long *)0x63C0,x","eCANB MID24"); - GEL_WatchAdd("*(long *)0x63C2,x","eCANB MCF24"); - GEL_WatchAdd("*(long *)0x63C4,x","eCANB MDL24"); - GEL_WatchAdd("*(long *)0x63C6,x","eCANB MDH24"); - - GEL_WatchAdd("*(long *)0x6272,x","eCANB LAM25"); - GEL_WatchAdd("*(long *)0x62B2,x","eCANB MOTS25"); - GEL_WatchAdd("*(long *)0x62F2,x","eCANB MOTO25"); - GEL_WatchAdd("*(long *)0x63C8,x","eCANB MID25"); - GEL_WatchAdd("*(long *)0x63CA,x","eCANB MCF25"); - GEL_WatchAdd("*(long *)0x63CC,x","eCANB MDL25"); - GEL_WatchAdd("*(long *)0x63CE,x","eCANB MDH25"); -} -hotmenu eCAN_B_Mailbox_26_to_27_Regs() -{ - GEL_WatchAdd("*(long *)0x6274,x","eCANB LAM26"); - GEL_WatchAdd("*(long *)0x62B4,x","eCANB MOTS26"); - GEL_WatchAdd("*(long *)0x62F4,x","eCANB MOTO26"); - GEL_WatchAdd("*(long *)0x63D0,x","eCANB MID26"); - GEL_WatchAdd("*(long *)0x63D2,x","eCANB MCF26"); - GEL_WatchAdd("*(long *)0x63D4,x","eCANB MDL26"); - GEL_WatchAdd("*(long *)0x63D6,x","eCANB MDH26"); - - GEL_WatchAdd("*(long *)0x6276,x","eCANB LAM27"); - GEL_WatchAdd("*(long *)0x62B6,x","eCANB MOTS27"); - GEL_WatchAdd("*(long *)0x62F6,x","eCANB MOTO27"); - GEL_WatchAdd("*(long *)0x63D8,x","eCANB MID27"); - GEL_WatchAdd("*(long *)0x63DA,x","eCANB MCF27"); - GEL_WatchAdd("*(long *)0x63DC,x","eCANB MDL27"); - GEL_WatchAdd("*(long *)0x63DE,x","eCANB MDH27"); -} -hotmenu eCAN_B_Mailbox_28_to_29_Regs() -{ - GEL_WatchAdd("*(long *)0x6278,x","eCANB LAM28"); - GEL_WatchAdd("*(long *)0x62B8,x","eCANB MOTS28"); - GEL_WatchAdd("*(long *)0x62F8,x","eCANB MOTO28"); - GEL_WatchAdd("*(long *)0x63E0,x","eCANB MID28"); - GEL_WatchAdd("*(long *)0x63E2,x","eCANB MCF28"); - GEL_WatchAdd("*(long *)0x63E4,x","eCANB MDL28"); - GEL_WatchAdd("*(long *)0x63E6,x","eCANB MDH28"); - - GEL_WatchAdd("*(long *)0x627A,x","eCANB LAM29"); - GEL_WatchAdd("*(long *)0x62BA,x","eCANB MOTS29"); - GEL_WatchAdd("*(long *)0x62FA,x","eCANB MOTO29"); - GEL_WatchAdd("*(long *)0x63E8,x","eCANB MID29"); - GEL_WatchAdd("*(long *)0x63EA,x","eCANB MCF29"); - GEL_WatchAdd("*(long *)0x63EC,x","eCANB MDL29"); - GEL_WatchAdd("*(long *)0x63EE,x","eCANB MDH29"); -} -hotmenu eCAN_B_Mailbox_30_to_31_Regs() -{ - GEL_WatchAdd("*(long *)0x627C,x","eCANB LAM30"); - GEL_WatchAdd("*(long *)0x62BC,x","eCANB MOTS30"); - GEL_WatchAdd("*(long *)0x62FC,x","eCANB MOTO30"); - GEL_WatchAdd("*(long *)0x63F0,x","eCANB MID30"); - GEL_WatchAdd("*(long *)0x63F2,x","eCANB MCF30"); - GEL_WatchAdd("*(long *)0x63F4,x","eCANB MDL30"); - GEL_WatchAdd("*(long *)0x63F6,x","eCANB MDH30"); - - GEL_WatchAdd("*(long *)0x627E,x","eCANB LAM31"); - GEL_WatchAdd("*(long *)0x62BE,x","eCANB MOTS31"); - GEL_WatchAdd("*(long *)0x62FE,x","eCANB MOTO31"); - GEL_WatchAdd("*(long *)0x63F8,x","eCANB MID31"); - GEL_WatchAdd("*(long *)0x63FA,x","eCANB MCF31"); - GEL_WatchAdd("*(long *)0x63FC,x","eCANB MDL31"); - GEL_WatchAdd("*(long *)0x63FE,x","eCANB MDH31"); -} - - -/********************************************************************/ -/* Enhanced Capture Registers */ -/********************************************************************/ -menuitem "Watch eCAP Registers"; - -hotmenu eCAP1_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6A00,x","eCAP1 TSCNT"); - GEL_WatchAdd("*(long *)0x6A02,x","eCAP1 CNTPHS"); - GEL_WatchAdd("*(long *)0x6A04,x","eCAP1 CAP1"); - GEL_WatchAdd("*(long *)0x6A06,x","eCAP1 CAP2"); - GEL_WatchAdd("*(long *)0x6A08,x","eCAP1 CAP3"); - GEL_WatchAdd("*(long *)0x6A0A,x","eCAP1 CAP4"); - GEL_WatchAdd("*0x6A14,x","eCAP1 ECCTL1"); - GEL_WatchAdd("*0x6A15,x","eCAP1 ECCTL2"); - GEL_WatchAdd("*0x6A16,x","eCAP1 ECEINT"); - GEL_WatchAdd("*0x6A17,x","eCAP1 ECFLG"); - GEL_WatchAdd("*0x6A18,x","eCAP1 ECCLR"); - GEL_WatchAdd("*0x6A19,x","eCAP1 ECFRC"); -} -hotmenu eCAP2_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6A20,x","eCAP2 TSCNT"); - GEL_WatchAdd("*(long *)0x6A22,x","eCAP2 CNTPHS"); - GEL_WatchAdd("*(long *)0x6A24,x","eCAP2 CAP1"); - GEL_WatchAdd("*(long *)0x6A26,x","eCAP2 CAP2"); - GEL_WatchAdd("*(long *)0x6A28,x","eCAP2 CAP3"); - GEL_WatchAdd("*(long *)0x6A2A,x","eCAP2 CAP4"); - GEL_WatchAdd("*0x6A34,x","eCAP2 ECCTL1"); - GEL_WatchAdd("*0x6A35,x","eCAP2 ECCTL2"); - GEL_WatchAdd("*0x6A36,x","eCAP2 ECEINT"); - GEL_WatchAdd("*0x6A37,x","eCAP2 ECFLG"); - GEL_WatchAdd("*0x6A38,x","eCAP2 ECCLR"); - GEL_WatchAdd("*0x6A39,x","eCAP2 ECFRC"); -} -hotmenu eCAP3_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6A40,x","eCAP3 TSCNT"); - GEL_WatchAdd("*(long *)0x6A42,x","eCAP3 CNTPHS"); - GEL_WatchAdd("*(long *)0x6A44,x","eCAP3 CAP1"); - GEL_WatchAdd("*(long *)0x6A46,x","eCAP3 CAP2"); - GEL_WatchAdd("*(long *)0x6A48,x","eCAP3 CAP3"); - GEL_WatchAdd("*(long *)0x6A4A,x","eCAP3 CAP4"); - GEL_WatchAdd("*0x6A54,x","eCAP3 ECCTL1"); - GEL_WatchAdd("*0x6A55,x","eCAP3 ECCTL2"); - GEL_WatchAdd("*0x6A56,x","eCAP3 ECEINT"); - GEL_WatchAdd("*0x6A57,x","eCAP3 ECFLG"); - GEL_WatchAdd("*0x6A58,x","eCAP3 ECCLR"); - GEL_WatchAdd("*0x6A59,x","eCAP3 ECFRC"); -} -hotmenu eCAP4_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6A60,x","eCAP4 TSCNT"); - GEL_WatchAdd("*(long *)0x6A62,x","eCAP4 CNTPHS"); - GEL_WatchAdd("*(long *)0x6A64,x","eCAP4 CAP1"); - GEL_WatchAdd("*(long *)0x6A66,x","eCAP4 CAP2"); - GEL_WatchAdd("*(long *)0x6A68,x","eCAP4 CAP3"); - GEL_WatchAdd("*(long *)0x6A6A,x","eCAP4 CAP4"); - GEL_WatchAdd("*0x6A74,x","eCAP4 ECCTL1"); - GEL_WatchAdd("*0x6A75,x","eCAP4 ECCTL2"); - GEL_WatchAdd("*0x6A76,x","eCAP4 ECEINT"); - GEL_WatchAdd("*0x6A77,x","eCAP4 ECFLG"); - GEL_WatchAdd("*0x6A78,x","eCAP4 ECCLR"); - GEL_WatchAdd("*0x6A79,x","eCAP4 ECFRC"); -} -hotmenu eCAP5_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6A80,x","eCAP5 TSCNT"); - GEL_WatchAdd("*(long *)0x6A82,x","eCAP5 CNTPHS"); - GEL_WatchAdd("*(long *)0x6A84,x","eCAP5 CAP1"); - GEL_WatchAdd("*(long *)0x6A86,x","eCAP5 CAP2"); - GEL_WatchAdd("*(long *)0x6A88,x","eCAP5 CAP3"); - GEL_WatchAdd("*(long *)0x6A8A,x","eCAP5 CAP4"); - GEL_WatchAdd("*0x6A94,x","eCAP5 ECCTL1"); - GEL_WatchAdd("*0x6A95,x","eCAP5 ECCTL2"); - GEL_WatchAdd("*0x6A96,x","eCAP5 ECEINT"); - GEL_WatchAdd("*0x6A97,x","eCAP5 ECFLG"); - GEL_WatchAdd("*0x6A98,x","eCAP5 ECCLR"); - GEL_WatchAdd("*0x6A99,x","eCAP5 ECFRC"); -} -hotmenu eCAP6_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6AA0,x","eCAP6 TSCNT"); - GEL_WatchAdd("*(long *)0x6AA2,x","eCAP6 CNTPHS"); - GEL_WatchAdd("*(long *)0x6AA4,x","eCAP6 CAP1"); - GEL_WatchAdd("*(long *)0x6AA6,x","eCAP6 CAP2"); - GEL_WatchAdd("*(long *)0x6AA8,x","eCAP6 CAP3"); - GEL_WatchAdd("*(long *)0x6AAA,x","eCAP6 CAP4"); - GEL_WatchAdd("*0x6AB4,x","eCAP6 ECCTL1"); - GEL_WatchAdd("*0x6AB5,x","eCAP6 ECCTL2"); - GEL_WatchAdd("*0x6AB6,x","eCAP6 ECEINT"); - GEL_WatchAdd("*0x6AB7,x","eCAP6 ECFLG"); - GEL_WatchAdd("*0x6AB8,x","eCAP6 ECCLR"); - GEL_WatchAdd("*0x6AB9,x","eCAP6 ECFRC"); -} - -/********************************************************************/ -/* Enhanced PWM Registers */ -/********************************************************************/ -menuitem "Watch ePWM Registers"; - -hotmenu ePWM1_All_Regs() -{ - GEL_WatchAdd("*0x6800,x","ePWM1 TBCTL"); - GEL_WatchAdd("*0x6801,x","ePWM1 TBSTS"); - GEL_WatchAdd("*0x6802,x","ePWM1 TBPHSHR"); - GEL_WatchAdd("*0x6803,x","ePWM1 TBPHS"); - GEL_WatchAdd("*0x6804,x","ePWM1 TBCTR"); - GEL_WatchAdd("*0x6805,x","ePWM1 TBPRD"); - GEL_WatchAdd("*0x6807,x","ePWM1 CMPCTL"); - GEL_WatchAdd("*0x6808,x","ePWM1 CMPAHR"); - GEL_WatchAdd("*0x6809,x","ePWM1 CMPA"); - GEL_WatchAdd("*0x680A,x","ePWM1 CMPB"); - GEL_WatchAdd("*0x680B,x","ePWM1 AQCTLA"); - GEL_WatchAdd("*0x680C,x","ePWM1 AQCTLB"); - GEL_WatchAdd("*0x680D,x","ePWM1 AQSFRC"); - GEL_WatchAdd("*0x680E,x","ePWM1 AQCSFRC"); - GEL_WatchAdd("*0x680F,x","ePWM1 DBCTL"); - GEL_WatchAdd("*0x6810,x","ePWM1 DBRED"); - GEL_WatchAdd("*0x6811,x","ePWM1 DBFED"); - GEL_WatchAdd("*0x6812,x","ePWM1 TZSEL"); - GEL_WatchAdd("*0x6813,x","ePWM1 TZDCSEL"); - GEL_WatchAdd("*0x6814,x","ePWM1 TZCTL"); - GEL_WatchAdd("*0x6815,x","ePWM1 TZEINT"); - GEL_WatchAdd("*0x6816,x","ePWM1 TZFLG"); - GEL_WatchAdd("*0x6817,x","ePWM1 TZCLR"); - GEL_WatchAdd("*0x6818,x","ePWM1 TZFRC"); - GEL_WatchAdd("*0x6819,x","ePWM1 ETSEL"); - GEL_WatchAdd("*0x681A,x","ePWM1 ETPS"); - GEL_WatchAdd("*0x681B,x","ePWM1 ETFLG"); - GEL_WatchAdd("*0x681C,x","ePWM1 ETCLR"); - GEL_WatchAdd("*0x681D,x","ePWM1 ETFRC"); - GEL_WatchAdd("*0x681E,x","ePWM1 PCCTL"); - GEL_WatchAdd("*0x6820,x","ePWM1 HRCNFG"); -} -hotmenu ePWM1_TB_Regs() -{ - GEL_WatchAdd("*0x6800,x","ePWM1 TBCTL"); - GEL_WatchAdd("*0x6801,x","ePWM1 TBSTS"); - GEL_WatchAdd("*0x6802,x","ePWM1 TBPHSHR"); - GEL_WatchAdd("*0x6803,x","ePWM1 TBPHS"); - GEL_WatchAdd("*0x6804,x","ePWM1 TBCTR"); - GEL_WatchAdd("*0x6805,x","ePWM1 TBPRD"); -} -hotmenu ePWM1_CMP_Regs() -{ - GEL_WatchAdd("*0x6807,x","ePWM1 CMPCTL"); - GEL_WatchAdd("*0x6808,x","ePWM1 CMPAHR"); - GEL_WatchAdd("*0x6809,x","ePWM1 CMPA"); - GEL_WatchAdd("*0x680A,x","ePWM1 CMPB"); -} -hotmenu ePWM1_AQ_Regs() -{ - GEL_WatchAdd("*0x680B,x","ePWM1 AQCTLA"); - GEL_WatchAdd("*0x680C,x","ePWM1 AQCTLB"); - GEL_WatchAdd("*0x680D,x","ePWM1 AQSFRC"); - GEL_WatchAdd("*0x680E,x","ePWM1 AQCSFRC"); -} -hotmenu ePWM1_DB_Regs() -{ - GEL_WatchAdd("*0x680F,x","ePWM1 DBCTL"); - GEL_WatchAdd("*0x6810,x","ePWM1 DBRED"); - GEL_WatchAdd("*0x6811,x","ePWM1 DBFED"); -} -hotmenu ePWM1_TZ_Regs() -{ - GEL_WatchAdd("*0x6812,x","ePWM1 TZSEL"); - GEL_WatchAdd("*0x6814,x","ePWM1 TZCTL"); - GEL_WatchAdd("*0x6815,x","ePWM1 TZEINT"); - GEL_WatchAdd("*0x6816,x","ePWM1 TZFLG"); - GEL_WatchAdd("*0x6817,x","ePWM1 TZCLR"); - GEL_WatchAdd("*0x6818,x","ePWM1 TZFRC"); -} -hotmenu ePWM1_ET_Regs() -{ - GEL_WatchAdd("*0x6819,x","ePWM1 ETSEL"); - GEL_WatchAdd("*0x681A,x","ePWM1 ETPS"); - GEL_WatchAdd("*0x681B,x","ePWM1 ETFLG"); - GEL_WatchAdd("*0x681C,x","ePWM1 ETCLR"); - GEL_WatchAdd("*0x681D,x","ePWM1 ETFRC"); -} -hotmenu ePWM2_All_Regs() -{ - GEL_WatchAdd("*0x6840,x","ePWM2 TBCTL"); - GEL_WatchAdd("*0x6841,x","ePWM2 TBSTS"); - GEL_WatchAdd("*0x6842,x","ePWM2 TBPHSHR"); - GEL_WatchAdd("*0x6843,x","ePWM2 TBPHS"); - GEL_WatchAdd("*0x6844,x","ePWM2 TBCTR"); - GEL_WatchAdd("*0x6845,x","ePWM2 TBPRD"); - GEL_WatchAdd("*0x6847,x","ePWM2 CMPCTL"); - GEL_WatchAdd("*0x6848,x","ePWM2 CMPAHR"); - GEL_WatchAdd("*0x6849,x","ePWM2 CMPA"); - GEL_WatchAdd("*0x684A,x","ePWM2 CMPB"); - GEL_WatchAdd("*0x684B,x","ePWM2 AQCTLA"); - GEL_WatchAdd("*0x684C,x","ePWM2 AQCTLB"); - GEL_WatchAdd("*0x684D,x","ePWM2 AQSFRC"); - GEL_WatchAdd("*0x684E,x","ePWM2 AQCSFRC"); - GEL_WatchAdd("*0x684F,x","ePWM2 DBCTL"); - GEL_WatchAdd("*0x6850,x","ePWM2 DBRED"); - GEL_WatchAdd("*0x6851,x","ePWM2 DBFED"); - GEL_WatchAdd("*0x6852,x","ePWM2 TZSEL"); - GEL_WatchAdd("*0x6853,x","ePWM2 TZDCSEL"); - GEL_WatchAdd("*0x6854,x","ePWM2 TZCTL"); - GEL_WatchAdd("*0x6855,x","ePWM2 TZEINT"); - GEL_WatchAdd("*0x6856,x","ePWM2 TZFLG"); - GEL_WatchAdd("*0x6857,x","ePWM2 TZCLR"); - GEL_WatchAdd("*0x6858,x","ePWM2 TZFRC"); - GEL_WatchAdd("*0x6859,x","ePWM2 ETSEL"); - GEL_WatchAdd("*0x685A,x","ePWM2 ETPS"); - GEL_WatchAdd("*0x685B,x","ePWM2 ETFLG"); - GEL_WatchAdd("*0x685C,x","ePWM2 ETCLR"); - GEL_WatchAdd("*0x685D,x","ePWM2 ETFRC"); - GEL_WatchAdd("*0x685E,x","ePWM2 PCCTL"); - GEL_WatchAdd("*0x6860,x","ePWM2 HRCNFG"); -} -hotmenu ePWM2_TB_Regs() -{ - GEL_WatchAdd("*0x6840,x","ePWM2 TBCTL"); - GEL_WatchAdd("*0x6841,x","ePWM2 TBSTS"); - GEL_WatchAdd("*0x6842,x","ePWM2 TBPHSHR"); - GEL_WatchAdd("*0x6843,x","ePWM2 TBPHS"); - GEL_WatchAdd("*0x6844,x","ePWM2 TBCTR"); - GEL_WatchAdd("*0x6845,x","ePWM2 TBPRD"); -} -hotmenu ePWM2_CMP_Regs() -{ - GEL_WatchAdd("*0x6847,x","ePWM2 CMPCTL"); - GEL_WatchAdd("*0x6848,x","ePWM2 CMPAHR"); - GEL_WatchAdd("*0x6849,x","ePWM2 CMPA"); - GEL_WatchAdd("*0x684A,x","ePWM2 CMPB"); -} -hotmenu ePWM2_AQ_Regs() -{ - GEL_WatchAdd("*0x684B,x","ePWM2 AQCTLA"); - GEL_WatchAdd("*0x684C,x","ePWM2 AQCTLB"); - GEL_WatchAdd("*0x684D,x","ePWM2 AQSFRC"); - GEL_WatchAdd("*0x684E,x","ePWM2 AQCSFRC"); -} -hotmenu ePWM2_DB_Regs() -{ - GEL_WatchAdd("*0x684F,x","ePWM2 DBCTL"); - GEL_WatchAdd("*0x6850,x","ePWM2 DBRED"); - GEL_WatchAdd("*0x6851,x","ePWM2 DBFED"); -} -hotmenu ePWM2_TZ_Regs() -{ - GEL_WatchAdd("*0x6852,x","ePWM2 TZSEL"); - GEL_WatchAdd("*0x6854,x","ePWM2 TZCTL"); - GEL_WatchAdd("*0x6855,x","ePWM2 TZEINT"); - GEL_WatchAdd("*0x6856,x","ePWM2 TZFLG"); - GEL_WatchAdd("*0x6857,x","ePWM2 TZCLR"); - GEL_WatchAdd("*0x6858,x","ePWM2 TZFRC"); -} -hotmenu ePWM2_ET_Regs() -{ - GEL_WatchAdd("*0x6859,x","ePWM2 ETSEL"); - GEL_WatchAdd("*0x685A,x","ePWM2 ETPS"); - GEL_WatchAdd("*0x685B,x","ePWM2 ETFLG"); - GEL_WatchAdd("*0x685C,x","ePWM2 ETCLR"); - GEL_WatchAdd("*0x685D,x","ePWM2 ETFRC"); -} -hotmenu ePWM3_All_Regs() -{ - GEL_WatchAdd("*0x6880,x","ePWM3 TBCTL"); - GEL_WatchAdd("*0x6881,x","ePWM3 TBSTS"); - GEL_WatchAdd("*0x6882,x","ePWM3 TBPHSHR"); - GEL_WatchAdd("*0x6883,x","ePWM3 TBPHS"); - GEL_WatchAdd("*0x6884,x","ePWM3 TBCTR"); - GEL_WatchAdd("*0x6885,x","ePWM3 TBPRD"); - GEL_WatchAdd("*0x6887,x","ePWM3 CMPCTL"); - GEL_WatchAdd("*0x6888,x","ePWM3 CMPAHR"); - GEL_WatchAdd("*0x6889,x","ePWM3 CMPA"); - GEL_WatchAdd("*0x688A,x","ePWM3 CMPB"); - GEL_WatchAdd("*0x688B,x","ePWM3 AQCTLA"); - GEL_WatchAdd("*0x688C,x","ePWM3 AQCTLB"); - GEL_WatchAdd("*0x688D,x","ePWM3 AQSFRC"); - GEL_WatchAdd("*0x688E,x","ePWM3 AQCSFRC"); - GEL_WatchAdd("*0x688F,x","ePWM3 DBCTL"); - GEL_WatchAdd("*0x6890,x","ePWM3 DBRED"); - GEL_WatchAdd("*0x6891,x","ePWM3 DBFED"); - GEL_WatchAdd("*0x6892,x","ePWM3 TZSEL"); - GEL_WatchAdd("*0x6893,x","ePWM3 TZDCSEL"); - GEL_WatchAdd("*0x6894,x","ePWM3 TZCTL"); - GEL_WatchAdd("*0x6895,x","ePWM3 TZEINT"); - GEL_WatchAdd("*0x6896,x","ePWM3 TZFLG"); - GEL_WatchAdd("*0x6897,x","ePWM3 TZCLR"); - GEL_WatchAdd("*0x6898,x","ePWM3 TZFRC"); - GEL_WatchAdd("*0x6899,x","ePWM3 ETSEL"); - GEL_WatchAdd("*0x689A,x","ePWM3 ETPS"); - GEL_WatchAdd("*0x689B,x","ePWM3 ETFLG"); - GEL_WatchAdd("*0x689C,x","ePWM3 ETCLR"); - GEL_WatchAdd("*0x689D,x","ePWM3 ETFRC"); - GEL_WatchAdd("*0x689E,x","ePWM3 PCCTL"); - GEL_WatchAdd("*0x68A0,x","ePWM3 HRCNFG"); -} -hotmenu ePWM3_TB_Regs() -{ - GEL_WatchAdd("*0x6880,x","ePWM3 TBCTL"); - GEL_WatchAdd("*0x6881,x","ePWM3 TBSTS"); - GEL_WatchAdd("*0x6882,x","ePWM3 TBPHSHR"); - GEL_WatchAdd("*0x6883,x","ePWM3 TBPHS"); - GEL_WatchAdd("*0x6884,x","ePWM3 TBCTR"); - GEL_WatchAdd("*0x6885,x","ePWM3 TBPRD"); -} -hotmenu ePWM3_CMP_Regs() -{ - GEL_WatchAdd("*0x6887,x","ePWM3 CMPCTL"); - GEL_WatchAdd("*0x6888,x","ePWM3 CMPAHR"); - GEL_WatchAdd("*0x6889,x","ePWM3 CMPA"); - GEL_WatchAdd("*0x688A,x","ePWM3 CMPB"); -} -hotmenu ePWM3_AQ_Regs() -{ - GEL_WatchAdd("*0x688B,x","ePWM3 AQCTLA"); - GEL_WatchAdd("*0x688C,x","ePWM3 AQCTLB"); - GEL_WatchAdd("*0x688D,x","ePWM3 AQSFRC"); - GEL_WatchAdd("*0x688E,x","ePWM3 AQCSFRC"); -} -hotmenu ePWM3_DB_Regs() -{ - GEL_WatchAdd("*0x688F,x","ePWM3 DBCTL"); - GEL_WatchAdd("*0x6890,x","ePWM3 DBRED"); - GEL_WatchAdd("*0x6891,x","ePWM3 DBFED"); -} -hotmenu ePWM3_TZ_Regs() -{ - GEL_WatchAdd("*0x6892,x","ePWM3 TZSEL"); - GEL_WatchAdd("*0x6894,x","ePWM3 TZCTL"); - GEL_WatchAdd("*0x6895,x","ePWM3 TZEINT"); - GEL_WatchAdd("*0x6896,x","ePWM3 TZFLG"); - GEL_WatchAdd("*0x6897,x","ePWM3 TZCLR"); - GEL_WatchAdd("*0x6898,x","ePWM3 TZFRC"); -} -hotmenu ePWM3_ET_Regs() -{ - GEL_WatchAdd("*0x6899,x","ePWM3 ETSEL"); - GEL_WatchAdd("*0x689A,x","ePWM3 ETPS"); - GEL_WatchAdd("*0x689B,x","ePWM3 ETFLG"); - GEL_WatchAdd("*0x689C,x","ePWM3 ETCLR"); - GEL_WatchAdd("*0x689D,x","ePWM3 ETFRC"); -} -hotmenu ePWM4_All_Regs() -{ - GEL_WatchAdd("*0x68C0,x","ePWM4 TBCTL"); - GEL_WatchAdd("*0x68C1,x","ePWM4 TBSTS"); - GEL_WatchAdd("*0x68C2,x","ePWM4 TBPHSHR"); - GEL_WatchAdd("*0x68C3,x","ePWM4 TBPHS"); - GEL_WatchAdd("*0x68C4,x","ePWM4 TBCTR"); - GEL_WatchAdd("*0x68C5,x","ePWM4 TBPRD"); - GEL_WatchAdd("*0x68C7,x","ePWM4 CMPCTL"); - GEL_WatchAdd("*0x68C8,x","ePWM4 CMPAHR"); - GEL_WatchAdd("*0x68C9,x","ePWM4 CMPA"); - GEL_WatchAdd("*0x68CA,x","ePWM4 CMPB"); - GEL_WatchAdd("*0x68CB,x","ePWM4 AQCTLA"); - GEL_WatchAdd("*0x68CC,x","ePWM4 AQCTLB"); - GEL_WatchAdd("*0x68CD,x","ePWM4 AQSFRC"); - GEL_WatchAdd("*0x68CE,x","ePWM4 AQCSFRC"); - GEL_WatchAdd("*0x68CF,x","ePWM4 DBCTL"); - GEL_WatchAdd("*0x68D0,x","ePWM4 DBRED"); - GEL_WatchAdd("*0x68D1,x","ePWM4 DBFED"); - GEL_WatchAdd("*0x68D2,x","ePWM4 TZSEL"); - GEL_WatchAdd("*0x68D3,x","ePWM4 TZDCSEL"); - GEL_WatchAdd("*0x68D4,x","ePWM4 TZCTL"); - GEL_WatchAdd("*0x68D5,x","ePWM4 TZEINT"); - GEL_WatchAdd("*0x68D6,x","ePWM4 TZFLG"); - GEL_WatchAdd("*0x68D7,x","ePWM4 TZCLR"); - GEL_WatchAdd("*0x68D8,x","ePWM4 TZFRC"); - GEL_WatchAdd("*0x68D9,x","ePWM4 ETSEL"); - GEL_WatchAdd("*0x68DA,x","ePWM4 ETPS"); - GEL_WatchAdd("*0x68DB,x","ePWM4 ETFLG"); - GEL_WatchAdd("*0x68DC,x","ePWM4 ETCLR"); - GEL_WatchAdd("*0x68DD,x","ePWM4 ETFRC"); - GEL_WatchAdd("*0x68DE,x","ePWM4 PCCTL"); - GEL_WatchAdd("*0x68E0,x","ePWM4 HRCNFG"); -} -hotmenu ePWM4_TB_Regs() -{ - GEL_WatchAdd("*0x68C0,x","ePWM4 TBCTL"); - GEL_WatchAdd("*0x68C1,x","ePWM4 TBSTS"); - GEL_WatchAdd("*0x68C2,x","ePWM4 TBPHSHR"); - GEL_WatchAdd("*0x68C3,x","ePWM4 TBPHS"); - GEL_WatchAdd("*0x68C4,x","ePWM4 TBCTR"); - GEL_WatchAdd("*0x68C5,x","ePWM4 TBPRD"); -} -hotmenu ePWM4_CMP_Regs() -{ - GEL_WatchAdd("*0x68C7,x","ePWM4 CMPCTL"); - GEL_WatchAdd("*0x68C8,x","ePWM4 CMPAHR"); - GEL_WatchAdd("*0x68C9,x","ePWM4 CMPA"); - GEL_WatchAdd("*0x68CA,x","ePWM4 CMPB"); -} -hotmenu ePWM4_AQ_Regs() -{ - GEL_WatchAdd("*0x68CB,x","ePWM4 AQCTLA"); - GEL_WatchAdd("*0x68CC,x","ePWM4 AQCTLB"); - GEL_WatchAdd("*0x68CD,x","ePWM4 AQSFRC"); - GEL_WatchAdd("*0x68CE,x","ePWM4 AQCSFRC"); -} -hotmenu ePWM4_DB_Regs() -{ - GEL_WatchAdd("*0x68CF,x","ePWM4 DBCTL"); - GEL_WatchAdd("*0x68D0,x","ePWM4 DBRED"); - GEL_WatchAdd("*0x68D1,x","ePWM4 DBFED"); -} -hotmenu ePWM4_TZ_Regs() -{ - GEL_WatchAdd("*0x68D2,x","ePWM4 TZSEL"); - GEL_WatchAdd("*0x68D4,x","ePWM4 TZCTL"); - GEL_WatchAdd("*0x68D5,x","ePWM4 TZEINT"); - GEL_WatchAdd("*0x68D6,x","ePWM4 TZFLG"); - GEL_WatchAdd("*0x68D7,x","ePWM4 TZCLR"); - GEL_WatchAdd("*0x68D8,x","ePWM4 TZFRC"); -} -hotmenu ePWM4_ET_Regs() -{ - GEL_WatchAdd("*0x68D9,x","ePWM4 ETSEL"); - GEL_WatchAdd("*0x68DA,x","ePWM4 ETPS"); - GEL_WatchAdd("*0x68DB,x","ePWM4 ETFLG"); - GEL_WatchAdd("*0x68DC,x","ePWM4 ETCLR"); - GEL_WatchAdd("*0x68DD,x","ePWM4 ETFRC"); -} -hotmenu ePWM5_All_Regs() -{ - GEL_WatchAdd("*0x6900,x","ePWM5 TBCTL"); - GEL_WatchAdd("*0x6901,x","ePWM5 TBSTS"); - GEL_WatchAdd("*0x6902,x","ePWM5 TBPHSHR"); - GEL_WatchAdd("*0x6903,x","ePWM5 TBPHS"); - GEL_WatchAdd("*0x6904,x","ePWM5 TBCTR"); - GEL_WatchAdd("*0x6905,x","ePWM5 TBPRD"); - GEL_WatchAdd("*0x6907,x","ePWM5 CMPCTL"); - GEL_WatchAdd("*0x6908,x","ePWM5 CMPAHR"); - GEL_WatchAdd("*0x6909,x","ePWM5 CMPA"); - GEL_WatchAdd("*0x690A,x","ePWM5 CMPB"); - GEL_WatchAdd("*0x690B,x","ePWM5 AQCTLA"); - GEL_WatchAdd("*0x690C,x","ePWM5 AQCTLB"); - GEL_WatchAdd("*0x690D,x","ePWM5 AQSFRC"); - GEL_WatchAdd("*0x690E,x","ePWM5 AQCSFRC"); - GEL_WatchAdd("*0x690F,x","ePWM5 DBCTL"); - GEL_WatchAdd("*0x6910,x","ePWM5 DBRED"); - GEL_WatchAdd("*0x6911,x","ePWM5 DBFED"); - GEL_WatchAdd("*0x6912,x","ePWM5 TZSEL"); - GEL_WatchAdd("*0x6913,x","ePWM5 TZDCSEL"); - GEL_WatchAdd("*0x6914,x","ePWM5 TZCTL"); - GEL_WatchAdd("*0x6915,x","ePWM5 TZEINT"); - GEL_WatchAdd("*0x6916,x","ePWM5 TZFLG"); - GEL_WatchAdd("*0x6917,x","ePWM5 TZCLR"); - GEL_WatchAdd("*0x6918,x","ePWM5 TZFRC"); - GEL_WatchAdd("*0x6919,x","ePWM5 ETSEL"); - GEL_WatchAdd("*0x691A,x","ePWM5 ETPS"); - GEL_WatchAdd("*0x691B,x","ePWM5 ETFLG"); - GEL_WatchAdd("*0x691C,x","ePWM5 ETCLR"); - GEL_WatchAdd("*0x691D,x","ePWM5 ETFRC"); - GEL_WatchAdd("*0x691E,x","ePWM5 PCCTL"); - GEL_WatchAdd("*0x6920,x","ePWM5 HRCNFG"); -} -hotmenu ePWM5_TB_Regs() -{ - GEL_WatchAdd("*0x6900,x","ePWM5 TBCTL"); - GEL_WatchAdd("*0x6901,x","ePWM5 TBSTS"); - GEL_WatchAdd("*0x6902,x","ePWM5 TBPHSHR"); - GEL_WatchAdd("*0x6903,x","ePWM5 TBPHS"); - GEL_WatchAdd("*0x6904,x","ePWM5 TBCTR"); - GEL_WatchAdd("*0x6905,x","ePWM5 TBPRD"); -} -hotmenu ePWM5_CMP_Regs() -{ - GEL_WatchAdd("*0x6907,x","ePWM5 CMPCTL"); - GEL_WatchAdd("*0x6908,x","ePWM5 CMPAHR"); - GEL_WatchAdd("*0x6909,x","ePWM5 CMPA"); - GEL_WatchAdd("*0x690A,x","ePWM5 CMPB"); -} -hotmenu ePWM5_AQ_Regs() -{ - GEL_WatchAdd("*0x690B,x","ePWM5 AQCTLA"); - GEL_WatchAdd("*0x690C,x","ePWM5 AQCTLB"); - GEL_WatchAdd("*0x690D,x","ePWM5 AQSFRC"); - GEL_WatchAdd("*0x690E,x","ePWM5 AQCSFRC"); -} -hotmenu ePWM5_DB_Regs() -{ - GEL_WatchAdd("*0x690F,x","ePWM5 DBCTL"); - GEL_WatchAdd("*0x6910,x","ePWM5 DBRED"); - GEL_WatchAdd("*0x6911,x","ePWM5 DBFED"); -} -hotmenu ePWM5_TZ_Regs() -{ - GEL_WatchAdd("*0x6912,x","ePWM5 TZSEL"); - GEL_WatchAdd("*0x6914,x","ePWM5 TZCTL"); - GEL_WatchAdd("*0x6915,x","ePWM5 TZEINT"); - GEL_WatchAdd("*0x6916,x","ePWM5 TZFLG"); - GEL_WatchAdd("*0x6917,x","ePWM5 TZCLR"); - GEL_WatchAdd("*0x6918,x","ePWM5 TZFRC"); -} -hotmenu ePWM5_ET_Regs() -{ - GEL_WatchAdd("*0x6919,x","ePWM5 ETSEL"); - GEL_WatchAdd("*0x691A,x","ePWM5 ETPS"); - GEL_WatchAdd("*0x691B,x","ePWM5 ETFLG"); - GEL_WatchAdd("*0x691C,x","ePWM5 ETCLR"); - GEL_WatchAdd("*0x691D,x","ePWM5 ETFRC"); -} -hotmenu ePWM6_All_Regs() -{ - GEL_WatchAdd("*0x6940,x","ePWM6 TBCTL"); - GEL_WatchAdd("*0x6941,x","ePWM6 TBSTS"); - GEL_WatchAdd("*0x6942,x","ePWM6 TBPHSHR"); - GEL_WatchAdd("*0x6943,x","ePWM6 TBPHS"); - GEL_WatchAdd("*0x6944,x","ePWM6 TBCTR"); - GEL_WatchAdd("*0x6945,x","ePWM6 TBPRD"); - GEL_WatchAdd("*0x6947,x","ePWM6 CMPCTL"); - GEL_WatchAdd("*0x6948,x","ePWM6 CMPAHR"); - GEL_WatchAdd("*0x6949,x","ePWM6 CMPA"); - GEL_WatchAdd("*0x694A,x","ePWM6 CMPB"); - GEL_WatchAdd("*0x694B,x","ePWM6 AQCTLA"); - GEL_WatchAdd("*0x694C,x","ePWM6 AQCTLB"); - GEL_WatchAdd("*0x694D,x","ePWM6 AQSFRC"); - GEL_WatchAdd("*0x694E,x","ePWM6 AQCSFRC"); - GEL_WatchAdd("*0x694F,x","ePWM6 DBCTL"); - GEL_WatchAdd("*0x6950,x","ePWM6 DBRED"); - GEL_WatchAdd("*0x6951,x","ePWM6 DBFED"); - GEL_WatchAdd("*0x6952,x","ePWM6 TZSEL"); - GEL_WatchAdd("*0x6953,x","ePWM6 TZDCSEL"); - GEL_WatchAdd("*0x6954,x","ePWM6 TZCTL"); - GEL_WatchAdd("*0x6955,x","ePWM6 TZEINT"); - GEL_WatchAdd("*0x6956,x","ePWM6 TZFLG"); - GEL_WatchAdd("*0x6957,x","ePWM6 TZCLR"); - GEL_WatchAdd("*0x6958,x","ePWM6 TZFRC"); - GEL_WatchAdd("*0x6959,x","ePWM6 ETSEL"); - GEL_WatchAdd("*0x695A,x","ePWM6 ETPS"); - GEL_WatchAdd("*0x695B,x","ePWM6 ETFLG"); - GEL_WatchAdd("*0x695C,x","ePWM6 ETCLR"); - GEL_WatchAdd("*0x695D,x","ePWM6 ETFRC"); - GEL_WatchAdd("*0x695E,x","ePWM6 PCCTL"); - GEL_WatchAdd("*0x6960,x","ePWM6 HRCNFG"); - -} -hotmenu ePWM6_TB_Regs() -{ - GEL_WatchAdd("*0x6940,x","ePWM6 TBCTL"); - GEL_WatchAdd("*0x6941,x","ePWM6 TBSTS"); - GEL_WatchAdd("*0x6942,x","ePWM6 TBPHSHR"); - GEL_WatchAdd("*0x6943,x","ePWM6 TBPHS"); - GEL_WatchAdd("*0x6944,x","ePWM6 TBCTR"); - GEL_WatchAdd("*0x6945,x","ePWM6 TBPRD"); -} -hotmenu ePWM6_CMP_Regs() -{ - GEL_WatchAdd("*0x6947,x","ePWM6 CMPCTL"); - GEL_WatchAdd("*0x6948,x","ePWM6 CMPAHR"); - GEL_WatchAdd("*0x6949,x","ePWM6 CMPA"); - GEL_WatchAdd("*0x694A,x","ePWM6 CMPB"); -} -hotmenu ePWM6_AQ_Regs() -{ - GEL_WatchAdd("*0x694B,x","ePWM6 AQCTLA"); - GEL_WatchAdd("*0x694C,x","ePWM6 AQCTLB"); - GEL_WatchAdd("*0x694D,x","ePWM6 AQSFRC"); - GEL_WatchAdd("*0x694E,x","ePWM6 AQCSFRC"); -} -hotmenu ePWM6_DB_Regs() -{ - GEL_WatchAdd("*0x694F,x","ePWM6 DBCTL"); - GEL_WatchAdd("*0x6950,x","ePWM6 DBRED"); - GEL_WatchAdd("*0x6951,x","ePWM6 DBFED"); -} -hotmenu ePWM6_TZ_Regs() -{ - GEL_WatchAdd("*0x6952,x","ePWM6 TZSEL"); - GEL_WatchAdd("*0x6954,x","ePWM6 TZCTL"); - GEL_WatchAdd("*0x6955,x","ePWM6 TZEINT"); - GEL_WatchAdd("*0x6956,x","ePWM6 TZFLG"); - GEL_WatchAdd("*0x6957,x","ePWM6 TZCLR"); - GEL_WatchAdd("*0x6958,x","ePWM6 TZFRC"); -} -hotmenu ePWM6_ET_Regs() -{ - GEL_WatchAdd("*0x6959,x","ePWM6 ETSEL"); - GEL_WatchAdd("*0x695A,x","ePWM6 ETPS"); - GEL_WatchAdd("*0x695B,x","ePWM6 ETFLG"); - GEL_WatchAdd("*0x695C,x","ePWM6 ETCLR"); - GEL_WatchAdd("*0x695D,x","ePWM6 ETFRC"); -} - - -/********************************************************************/ -/* Enhanced EQEP Registers */ -/********************************************************************/ -menuitem "Watch eQEP" - -hotmenu eQEP1_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6B00,x","eQEP1 QPOSCNT"); - GEL_WatchAdd("*(long *)0x6B02,x","eQEP1 QPOSINIT"); - GEL_WatchAdd("*(long *)0x6B04,x","eQEP1 QPOSMAX"); - GEL_WatchAdd("*(long *)0x6B06,x","eQEP1 QPOSCMP"); - GEL_WatchAdd("*(long *)0x6B08,x","eQEP1 QPOSILAT"); - GEL_WatchAdd("*(long *)0x6B0A,x","eQEP1 QPOSSLAT"); - GEL_WatchAdd("*(long *)0x6B0C,x","eQEP1 QPOSLAT"); - GEL_WatchAdd("*(long *)0x6B0E,x","eQEP1 QUTMR"); - GEL_WatchAdd("*(long *)0x6B10,x","eQEP1 QUPRD"); - GEL_WatchAdd("*0x6B12,x","eQEP1 QWDTMR"); - GEL_WatchAdd("*0x6B13,x","eQEP1 QWDPRD"); - GEL_WatchAdd("*0x6B14,x","eQEP1 QDECCTL"); - GEL_WatchAdd("*0x6B15,x","eQEP1 QEPCTL"); - GEL_WatchAdd("*0x6B16,x","eQEP1 QCAPCTL"); - GEL_WatchAdd("*0x6B17,x","eQEP1 QPOSCTL"); - GEL_WatchAdd("*0x6B18,x","eQEP1 QEINT"); - GEL_WatchAdd("*0x6B19,x","eQEP1 QFLG"); - GEL_WatchAdd("*0x6B1A,x","eQEP1 QCLR"); - GEL_WatchAdd("*0x6B1B,x","eQEP1 QFRC"); - GEL_WatchAdd("*0x6B1C,x","eQEP1 QEPSTS"); - GEL_WatchAdd("*0x6B1D,x","eQEP1 QCTMR"); - GEL_WatchAdd("*0x6B1E,x","eQEP1 QCPRD"); - GEL_WatchAdd("*0x6B1F,x","eQEP1 QCTMRLAT"); - GEL_WatchAdd("*0x6B20,x","eQEP1 QCPRDLAT"); -} -hotmenu eQEP2_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6B40,x","eQEP2 QPOSCNT"); - GEL_WatchAdd("*(long *)0x6B42,x","eQEP2 QPOSINIT"); - GEL_WatchAdd("*(long *)0x6B44,x","eQEP2 QPOSMAX"); - GEL_WatchAdd("*(long *)0x6B46,x","eQEP2 QPOSCMP"); - GEL_WatchAdd("*(long *)0x6B48,x","eQEP2 QPOSILAT"); - GEL_WatchAdd("*(long *)0x6B4A,x","eQEP2 QPOSSLAT"); - GEL_WatchAdd("*(long *)0x6B4C,x","eQEP2 QPOSLAT"); - GEL_WatchAdd("(long *)*0x6B4E,x","eQEP2 QUTMR"); - GEL_WatchAdd("*(long *)0x6B50,x","eQEP2 QUPRD"); - GEL_WatchAdd("*0x6B52,x","eQEP2 QWDTMR"); - GEL_WatchAdd("*0x6B53,x","eQEP2 QWDPRD"); - GEL_WatchAdd("*0x6B54,x","eQEP2 QDECCTL"); - GEL_WatchAdd("*0x6B55,x","eQEP2 QEPCTL"); - GEL_WatchAdd("*0x6B56,x","eQEP2 QCAPCTL"); - GEL_WatchAdd("*0x6B57,x","eQEP2 QPOSCTL"); - GEL_WatchAdd("*0x6B58,x","eQEP2 QEINT"); - GEL_WatchAdd("*0x6B59,x","eQEP2 QFLG"); - GEL_WatchAdd("*0x6B5A,x","eQEP2 QCLR"); - GEL_WatchAdd("*0x6B5B,x","eQEP2 QFRC"); - GEL_WatchAdd("*0x6B5C,x","eQEP2 QEPSTS"); - GEL_WatchAdd("*0x6B5D,x","eQEP2 QCTMR"); - GEL_WatchAdd("*0x6B5E,x","eQEP2 QCPRD"); - GEL_WatchAdd("*0x6B5F,x","eQEP2 QCTMRLAT"); - GEL_WatchAdd("*0x6B60,x","eQEP2 QCPRDLAT"); -} - - -/********************************************************************/ -/* External Interface Registers */ -/********************************************************************/ -menuitem "Watch External Interface Registers"; - -hotmenu All_External_Interface_Regs() -{ - GEL_WatchAdd("*(long *)0x0B20,x","XTIMING0"); - GEL_WatchAdd("*(long *)0x0B2C,x","XTIMING6"); - GEL_WatchAdd("*(long *)0x0B2E,x","XTIMING7"); - GEL_WatchAdd("*(long *)0x0B34,x","XINTCNF2"); - GEL_WatchAdd("*0x0B38,x","XBANK"); - GEL_WatchAdd("*0x0B3A,x","XREVISION"); - GEL_WatchAdd("*0x0B3D,x","XRESET"); -} - -/********************************************************************/ -/* External Interrupt Registers */ -/********************************************************************/ -menuitem "Watch External Interrupt Registers"; - -hotmenu All_XINT_Regs() -{ - GEL_WatchAdd("*0x7070,x","XINT1CR"); - GEL_WatchAdd("*0x7071,x","XINT2CR"); - GEL_WatchAdd("*0x7072,x","XINT3CR"); - GEL_WatchAdd("*0x7073,x","XINT4CR"); - GEL_WatchAdd("*0x7074,x","XINT5CR"); - GEL_WatchAdd("*0x7075,x","XINT6CR"); - GEL_WatchAdd("*0x7076,x","XINT7CR"); - GEL_WatchAdd("*0x7077,x","XNMICR"); - GEL_WatchAdd("*0x7078,x","XINT1CTR"); - GEL_WatchAdd("*0x7079,x","XINT2CTR"); - GEL_WatchAdd("*0x707F,x","XNMICTR"); -} -hotmenu XINT_Control_Regs() -{ - GEL_WatchAdd("*0x7070,x","XINT1CR"); - GEL_WatchAdd("*0x7071,x","XINT2CR"); - GEL_WatchAdd("*0x7072,x","XINT3CR"); - GEL_WatchAdd("*0x7073,x","XINT4CR"); - GEL_WatchAdd("*0x7074,x","XINT5CR"); - GEL_WatchAdd("*0x7075,x","XINT6CR"); - GEL_WatchAdd("*0x7076,x","XINT7CR"); - GEL_WatchAdd("*0x7077,x","XNMICR"); -} -hotmenu XINT_Counter_Regs() -{ - GEL_WatchAdd("*0x7078,x","XINT1CTR"); - GEL_WatchAdd("*0x7079,x","XINT2CTR"); - GEL_WatchAdd("*0x707F,x","XNMICTR"); -} - - -/********************************************************************/ -/* FPU Registers */ -/********************************************************************/ -menuitem "Watch FPU Registers" - -hotmenu All_FPU_Single_Precision_Regs() -{ - GEL_WatchAdd("RB"); - GEL_WatchAdd("STF"); - GEL_WatchAdd("R0H"); - GEL_WatchAdd("R1H"); - GEL_WatchAdd("R2H"); - GEL_WatchAdd("R3H"); - GEL_WatchAdd("R4H"); - GEL_WatchAdd("R5H"); - GEL_WatchAdd("R6H"); - GEL_WatchAdd("R7H"); -} - - -/********************************************************************/ -/* GPIO Registers */ -/********************************************************************/ -menuitem "Watch GPIO Registers"; - -hotmenu All_GPIO_CONTROL_Regs() -{ - GEL_WatchAdd("*(long *)0x6F80,x","GPACTRL"); - GEL_WatchAdd("*(long *)0x6F82,x","GPAQSEL1"); - GEL_WatchAdd("*(long *)0x6F84,x","GPAQSEL2"); - GEL_WatchAdd("*(long *)0x6F86,x","GPAMUX1"); - GEL_WatchAdd("*(long *)0x6F88,x","GPAMUX2"); - GEL_WatchAdd("*(long *)0x6F8A,x","GPADIR"); - GEL_WatchAdd("*(long *)0x6F8C,x","GPAPUD"); - - GEL_WatchAdd("*(long *)0x6F90,x","GPBCTRL"); - GEL_WatchAdd("*(long *)0x6F92,x","GPBQSEL1"); - GEL_WatchAdd("*(long *)0x6F94,x","GPBQSEL2"); - GEL_WatchAdd("*(long *)0x6F96,x","GPBMUX1"); - GEL_WatchAdd("*(long *)0x6F98,x","GPBMUX2"); - GEL_WatchAdd("*(long *)0x6F9A,x","GPBDIR"); - GEL_WatchAdd("*(long *)0x6F9C,x","GPBPUD"); - - GEL_WatchAdd("*(long *)0x6FA6,x","GPCMUX1"); - GEL_WatchAdd("*(long *)0x6FA8,x","GPCMUX2"); - GEL_WatchAdd("*(long *)0x6FAA,x","GPCDIR"); - GEL_WatchAdd("*(long *)0x6FAC,x","GPCPUD"); -} -hotmenu All_GPIO_DATA_Regs() -{ - GEL_WatchAdd("*(long *)0x6FC0,x","GPADAT"); - GEL_WatchAdd("*(long *)0x6FC2,x","GPASET"); - GEL_WatchAdd("*(long *)0x6FC4,x","GPACLEAR"); - GEL_WatchAdd("*(long *)0x6FC6,x","GPATOGGLE"); - - GEL_WatchAdd("*(long *)0x6FC8,x","GPBDAT"); - GEL_WatchAdd("*(long *)0x6FCA,x","GPBSET"); - GEL_WatchAdd("*(long *)0x6FCC,x","GPBCLEAR"); - GEL_WatchAdd("*(long *)0x6FCE,x","GPBTOGGLE"); - - GEL_WatchAdd("*(long *)0x6FD0,x","GPCDAT"); - GEL_WatchAdd("*(long *)0x6FD2,x","GPCSET"); - GEL_WatchAdd("*(long *)0x6FD4,x","GPCCLEAR"); - GEL_WatchAdd("*(long *)0x6FD6,x","GPCTOGGLE"); -} -hotmenu All_GPIO_INTERRUPT_Regs() -{ - GEL_WatchAdd("*0x6FE0,x","GPIOXINT1SEL"); - GEL_WatchAdd("*0x6FE1,x","GPIOXINT2SEL"); - GEL_WatchAdd("*0x6FE2,x","GPIOXNMISEL"); - GEL_WatchAdd("*0x6FE3,x","GPIOXINT3SEL"); - GEL_WatchAdd("*0x6FE4,x","GPIOXINT4SEL"); - GEL_WatchAdd("*0x6FE5,x","GPIOXINT5SEL"); - GEL_WatchAdd("*0x6FE6,x","GPIOXINT6SEL"); - GEL_WatchAdd("*0x6FE7,x","GPIOXINT7SEL"); - GEL_WatchAdd("*(long *)0x6FE8,x","GPIOLPMSEL"); -} -hotmenu All_GPA_Registers() -{ - GEL_WatchAdd("*(long *)0x6F80,x","GPACTRL"); - GEL_WatchAdd("*(long *)0x6F82,x","GPAQSEL1"); - GEL_WatchAdd("*(long *)0x6F84,x","GPAQSEL2"); - GEL_WatchAdd("*(long *)0x6F86,x","GPAMUX1"); - GEL_WatchAdd("*(long *)0x6F88,x","GPAMUX2"); - GEL_WatchAdd("*(long *)0x6F8A,x","GPADIR"); - GEL_WatchAdd("*(long *)0x6F8C,x","GPAPUD"); - - GEL_WatchAdd("*(long *)0x6FC0,x","GPADAT"); - GEL_WatchAdd("*(long *)0x6FC2,x","GPASET"); - GEL_WatchAdd("*(long *)0x6FC4,x","GPACLEAR"); - GEL_WatchAdd("*(long *)0x6FC6,x","GPATOGGLE"); -} -hotmenu All_GPB_Registers() -{ - GEL_WatchAdd("*(long *)0x6F90,x","GPBCTRL"); - GEL_WatchAdd("*(long *)0x6F92,x","GPBQSEL1"); - GEL_WatchAdd("*(long *)0x6F94,x","GPBQSEL2"); - GEL_WatchAdd("*(long *)0x6F96,x","GPBMUX1"); - GEL_WatchAdd("*(long *)0x6F98,x","GPBMUX2"); - GEL_WatchAdd("*(long *)0x6F9A,x","GPBDIR"); - GEL_WatchAdd("*(long *)0x6F9C,x","GPBPUD"); - - GEL_WatchAdd("*(long *)0x6FC8,x","GPBDAT"); - GEL_WatchAdd("*(long *)0x6FCA,x","GPBSET"); - GEL_WatchAdd("*(long *)0x6FCC,x","GPBCLEAR"); - GEL_WatchAdd("*(long *)0x6FCE,x","GPBTOGGLE"); -} -hotmenu All_GPC_Registers() -{ - GEL_WatchAdd("*(long *)0x6FA6,x","GPCMUX1"); - GEL_WatchAdd("*(long *)0x6FA8,x","GPCMUX2"); - GEL_WatchAdd("*(long *)0x6FAA,x","GPCDIR"); - GEL_WatchAdd("*(long *)0x6FAC,x","GPCPUD"); - - GEL_WatchAdd("*(long *)0x6FC8,x","GPBDAT"); - GEL_WatchAdd("*(long *)0x6FCA,x","GPBSET"); - GEL_WatchAdd("*(long *)0x6FCC,x","GPBCLEAR"); - GEL_WatchAdd("*(long *)0x6FCE,x","GPBTOGGLE"); - - GEL_WatchAdd("*(long *)0x6FD0,x","GPCDAT"); - GEL_WatchAdd("*(long *)0x6FD2,x","GPCSET"); - GEL_WatchAdd("*(long *)0x6FD4,x","GPCCLEAR"); - GEL_WatchAdd("*(long *)0x6FD6,x","GPCTOGGLE"); -} - - -/********************************************************************/ -/* Multichannel Serial Port Registers */ -/********************************************************************/ -menuitem "Watch McBSP Registers"; - -hotmenu All_McBSP_A_Regs() -{ - GEL_WatchAdd("*0x5000,x","McBSPA DRR2"); - GEL_WatchAdd("*0x5001,x","McBSPA DRR1"); - GEL_WatchAdd("*0x5002,x","McBSPA DXR2"); - GEL_WatchAdd("*0x5003,x","McBSPA DXR1"); - GEL_WatchAdd("*0x5004,x","McBSPA SPCR2"); - GEL_WatchAdd("*0x5005,x","McBSPA SPCR1"); - GEL_WatchAdd("*0x5006,x","McBSPA RCR2"); - GEL_WatchAdd("*0x5007,x","McBSPA RCR1"); - GEL_WatchAdd("*0x5008,x","McBSPA XCR2"); - GEL_WatchAdd("*0x5009,x","McBSPA XCR1"); - GEL_WatchAdd("*0x500A,x","McBSPA SRGR2"); - GEL_WatchAdd("*0x500B,x","McBSPA SRGR1"); - GEL_WatchAdd("*0x500C,x","McBSPA MCR2"); - GEL_WatchAdd("*0x500D,x","McBSPA MCR1"); - GEL_WatchAdd("*0x500E,x","McBSPA RCERA"); - GEL_WatchAdd("*0x500F,x","McBSPA RCERB"); - GEL_WatchAdd("*0x5010,x","McBSPA XCERA"); - GEL_WatchAdd("*0x5011,x","McBSPA XCERB"); - GEL_WatchAdd("*0x5012,x","McBSPA PCR1"); - GEL_WatchAdd("*0x5013,x","McBSPA RCERC"); - GEL_WatchAdd("*0x5014,x","McBSPA RCERD"); - GEL_WatchAdd("*0x5015,x","McBSPA XCERC"); - GEL_WatchAdd("*0x5016,x","McBSPA XCERD"); - GEL_WatchAdd("*0x5017,x","McBSPA RCERE"); - GEL_WatchAdd("*0x5018,x","McBSPA RCERF"); - GEL_WatchAdd("*0x5019,x","McBSPA XCERE"); - GEL_WatchAdd("*0x501A,x","McBSPA XCERF"); - GEL_WatchAdd("*0x501B,x","McBSPA RCERG"); - GEL_WatchAdd("*0x501C,x","McBSPA RCERH"); - GEL_WatchAdd("*0x501D,x","McBSPA XCERG"); - GEL_WatchAdd("*0x501E,x","McBSPA XCERH"); - GEL_WatchAdd("*0x5023,x","McBSPA MFFINT"); - GEL_WatchAdd("*0x503F,x","McBSPA Revision"); -} - -hotmenu All_McBSP_B_Regs() -{ - GEL_WatchAdd("*0x5040,x","McBSPB DRR2"); - GEL_WatchAdd("*0x5041,x","McBSPB DRR1"); - GEL_WatchAdd("*0x5042,x","McBSPB DXR2"); - GEL_WatchAdd("*0x5043,x","McBSPB DXR1"); - GEL_WatchAdd("*0x5044,x","McBSPB SPCR2"); - GEL_WatchAdd("*0x5045,x","McBSPB SPCR1"); - GEL_WatchAdd("*0x5046,x","McBSPB RCR2"); - GEL_WatchAdd("*0x5047,x","McBSPB RCR1"); - GEL_WatchAdd("*0x5048,x","McBSPB XCR2"); - GEL_WatchAdd("*0x5049,x","McBSPB XCR1"); - GEL_WatchAdd("*0x504A,x","McBSPB SRGR2"); - GEL_WatchAdd("*0x504B,x","McBSPB SRGR1"); - GEL_WatchAdd("*0x504C,x","McBSPB MCR2"); - GEL_WatchAdd("*0x504D,x","McBSPB MCR1"); - GEL_WatchAdd("*0x504E,x","McBSPB RCERA"); - GEL_WatchAdd("*0x504F,x","McBSPB RCERB"); - GEL_WatchAdd("*0x5050,x","McBSPB XCERA"); - GEL_WatchAdd("*0x5051,x","McBSPB XCERB"); - GEL_WatchAdd("*0x5052,x","McBSPB PCR1"); - GEL_WatchAdd("*0x5053,x","McBSPB RCERC"); - GEL_WatchAdd("*0x5054,x","McBSPB RCERD"); - GEL_WatchAdd("*0x5055,x","McBSPB XCERC"); - GEL_WatchAdd("*0x5056,x","McBSPB XCERD"); - GEL_WatchAdd("*0x5057,x","McBSPB RCERE"); - GEL_WatchAdd("*0x5058,x","McBSPB RCERF"); - GEL_WatchAdd("*0x5059,x","McBSPB XCERE"); - GEL_WatchAdd("*0x505A,x","McBSPB XCERF"); - GEL_WatchAdd("*0x505B,x","McBSPB RCERG"); - GEL_WatchAdd("*0x505C,x","McBSPB RCERH"); - GEL_WatchAdd("*0x505D,x","McBSPB XCERG"); - GEL_WatchAdd("*0x505E,x","McBSPB XCERH"); - GEL_WatchAdd("*0x5063,x","McBSPB MFFINT"); - GEL_WatchAdd("*0x506F,x","McBSPB Revision"); -} - - - -/********************************************************************/ -/* I2C Registers */ -/********************************************************************/ -menuitem "Watch I2C Registers"; - -hotmenu All_I2C_Regs() -{ - GEL_WatchAdd("*0x7900,x","I2COAR"); - GEL_WatchAdd("*0x7901,x","I2CIER"); - GEL_WatchAdd("*0x7902,x","I2CSTR"); - GEL_WatchAdd("*0x7903,x","I2CCLKL"); - GEL_WatchAdd("*0x7904,x","I2CCLKH"); - GEL_WatchAdd("*0x7905,x","I2CCNT"); - GEL_WatchAdd("*0x7906,x","I2CDRR"); - GEL_WatchAdd("*0x7907,x","I2CSAR"); - GEL_WatchAdd("*0x7908,x","I2CDXR"); - GEL_WatchAdd("*0x7909,x","I2CMDR"); - GEL_WatchAdd("*0x790A,x","I2CISRC"); - GEL_WatchAdd("*0x790C,x","I2CPSC"); - GEL_WatchAdd("*0x7920,x","I2CFFTX"); - GEL_WatchAdd("*0x7921,x","I2CFFRX"); -} - - -/********************************************************************/ -/* Peripheral Interrupt Expansion Registers */ -/********************************************************************/ -menuitem "Watch Peripheral Interrupt Expansion Registers"; - -hotmenu All_PIE_Regs() -{ - GEL_WatchAdd("*0x0CE0,x","PIECTRL"); - GEL_WatchAdd("*0x0CE1,x","PIEACK"); - GEL_WatchAdd("*0x0CE2,x","PIEIER1"); - GEL_WatchAdd("*0x0CE3,x","PIEIFR1"); - GEL_WatchAdd("*0x0CE4,x","PIEIER2"); - GEL_WatchAdd("*0x0CE5,x","PIEIFR2"); - GEL_WatchAdd("*0x0CE6,x","PIEIER3"); - GEL_WatchAdd("*0x0CE7,x","PIEIFR3"); - GEL_WatchAdd("*0x0CE8,x","PIEIER4"); - GEL_WatchAdd("*0x0CE9,x","PIEIFR4"); - GEL_WatchAdd("*0x0CEA,x","PIEIER5"); - GEL_WatchAdd("*0x0CEB,x","PIEIFR5"); - GEL_WatchAdd("*0x0CEC,x","PIEIER6"); - GEL_WatchAdd("*0x0CED,x","PIEIFR6"); - GEL_WatchAdd("*0x0CEE,x","PIEIER7"); - GEL_WatchAdd("*0x0CEF,x","PIEIFR7"); - GEL_WatchAdd("*0x0CF0,x","PIEIER8"); - GEL_WatchAdd("*0x0CF1,x","PIEIFR8"); - GEL_WatchAdd("*0x0CF2,x","PIEIER9"); - GEL_WatchAdd("*0x0CF3,x","PIEIFR9"); - GEL_WatchAdd("*0x0CF4,x","PIEIER10"); - GEL_WatchAdd("*0x0CF5,x","PIEIFR10"); - GEL_WatchAdd("*0x0CF6,x","PIEIER11"); - GEL_WatchAdd("*0x0CF7,x","PIEIFR11"); - GEL_WatchAdd("*0x0CF8,x","PIEIER12"); - GEL_WatchAdd("*0x0CF9,x","PIEIFR12"); -} -hotmenu PIECTRL() -{ - GEL_WatchAdd("*0x0CE0,x","PIECTRL"); -} -hotmenu PIEACK() -{ - GEL_WatchAdd("*0x0CE1,x","PIEACK"); -} -hotmenu PIEIER1_and_PIEIFR1() -{ - GEL_WatchAdd("*0x0CE2,x","PIEIER1"); - GEL_WatchAdd("*0x0CE3,x","PIEIFR1"); -} -hotmenu PIEIER2_and_PIEIFR2() -{ - GEL_WatchAdd("*0x0CE4,x","PIEIER2"); - GEL_WatchAdd("*0x0CE5,x","PIEIFR2"); -} -hotmenu PIEIER3_and_PIEIFR3() -{ - GEL_WatchAdd("*0x0CE6,x","PIEIER3"); - GEL_WatchAdd("*0x0CE7,x","PIEIFR3"); -} -hotmenu PIEIER4_and_PIEIFR4() -{ - GEL_WatchAdd("*0x0CE8,x","PIEIER4"); - GEL_WatchAdd("*0x0CE9,x","PIEIFR4"); -} -hotmenu PIEIER5_and_PIEIFR5() -{ - GEL_WatchAdd("*0x0CEA,x","PIEIER5"); - GEL_WatchAdd("*0x0CEB,x","PIEIFR5"); -} -hotmenu PIEIER6_and_PIEIFR6() -{ - GEL_WatchAdd("*0x0CEC,x","PIEIER6"); - GEL_WatchAdd("*0x0CED,x","PIEIFR6"); -} -hotmenu PIEIER7_and_PIEIFR7() -{ - GEL_WatchAdd("*0x0CEE,x","PIEIER7"); - GEL_WatchAdd("*0x0CEF,x","PIEIFR7"); -} -hotmenu PIEIER8_and_PIEIFR8() -{ - GEL_WatchAdd("*0x0CF0,x","PIEIER8"); - GEL_WatchAdd("*0x0CF1,x","PIEIFR8"); -} -hotmenu PIEIER9_and_PIEIFR9() -{ - GEL_WatchAdd("*0x0CF2,x","PIEIER9"); - GEL_WatchAdd("*0x0CF3,x","PIEIFR9"); -} -hotmenu PIEIFR10_and_PIEIFR10() -{ - GEL_WatchAdd("*0x0CF4,x","PIEIER10"); - GEL_WatchAdd("*0x0CF5,x","PIEIFR10"); -} -hotmenu PIEIER11_and_PIEIFR11() -{ - GEL_WatchAdd("*0x0CF6,x","PIEIER11"); - GEL_WatchAdd("*0x0CF7,x","PIEIFR11"); -} -hotmenu PIEIER12_and_PIEIFR12() -{ - GEL_WatchAdd("*0x0CF8,x","PIEIER12"); - GEL_WatchAdd("*0x0CF9,x","PIEIFR12"); -} - - -/********************************************************************/ -/* Serial Communication Interface Registers */ -/********************************************************************/ -menuitem "Watch SCI Registers"; - -hotmenu SCI_A_All_Regs() -{ - GEL_WatchAdd("*0x7050,x","SCICCRA"); - GEL_WatchAdd("*0x7051,x","SCICTL1A"); - GEL_WatchAdd("*0x7052,x","SCIHBAUDA"); - GEL_WatchAdd("*0x7053,x","SCILBAUDA"); - GEL_WatchAdd("*0x7054,x","SCICTL2A"); - GEL_WatchAdd("*0x7055,x","SCIRXSTA"); - GEL_WatchAdd("*0x7056,x","SCIRXEMUA"); - GEL_WatchAdd("*0x7057,x","SCIRXBUFA"); - GEL_WatchAdd("*0x7059,x","SCITXBUFA"); - GEL_WatchAdd("*0x705A,x","SCIFFTXA"); - GEL_WatchAdd("*0x705B,x","SCIFFRXA"); - GEL_WatchAdd("*0x705C,x","SCIFFCTA"); - GEL_WatchAdd("*0x705F,x","SCIPRIA"); -} -hotmenu SCI_A_FIFO_Registers() -{ - GEL_WatchAdd("*0x705A,x","SCIFFTXA"); - GEL_WatchAdd("*0x705B,x","SCIFFRXA"); - GEL_WatchAdd("*0x705C,x","SCIFFCTA"); -} -hotmenu SCI_B_All_Regs() -{ - GEL_WatchAdd("*0x7750,x","SCICCRB"); - GEL_WatchAdd("*0x7751,x","SCICTL1B"); - GEL_WatchAdd("*0x7752,x","SCIHBAUDB"); - GEL_WatchAdd("*0x7753,x","SCILBAUDB"); - GEL_WatchAdd("*0x7754,x","SCICTL2B"); - GEL_WatchAdd("*0x7755,x","SCIRXSTB"); - GEL_WatchAdd("*0x7756,x","SCIRXEMUB"); - GEL_WatchAdd("*0x7757,x","SCIRXBUFB"); - GEL_WatchAdd("*0x7759,x","SCITXBUFB"); - GEL_WatchAdd("*0x775A,x","SCIFFTXB"); - GEL_WatchAdd("*0x775B,x","SCIFFRXB"); - GEL_WatchAdd("*0x775C,x","SCIFFCTB"); - GEL_WatchAdd("*0x775F,x","SCIPRIB"); -} - -hotmenu SCI_B_FIFO_Registers() -{ - GEL_WatchAdd("*0x775A,x","SCIFFTXB"); - GEL_WatchAdd("*0x775B,x","SCIFFRXB"); - GEL_WatchAdd("*0x775C,x","SCIFFCTB"); -} -hotmenu SCI_C_All_Regs() -{ - GEL_WatchAdd("*0x7770,x","SCICCRC"); - GEL_WatchAdd("*0x7771,x","SCICTL1C"); - GEL_WatchAdd("*0x7772,x","SCIHBAUDC"); - GEL_WatchAdd("*0x7773,x","SCILBAUDC"); - GEL_WatchAdd("*0x7774,x","SCICTL2C"); - GEL_WatchAdd("*0x7775,x","SCIRXSTC"); - GEL_WatchAdd("*0x7776,x","SCIRXEMUC"); - GEL_WatchAdd("*0x7777,x","SCIRXBUFC"); - GEL_WatchAdd("*0x7779,x","SCITXBUFC"); - GEL_WatchAdd("*0x777A,x","SCIFFTXC"); - GEL_WatchAdd("*0x777B,x","SCIFFRXC"); - GEL_WatchAdd("*0x777C,x","SCIFFCTC"); - GEL_WatchAdd("*0x777F,x","SCIPRIC"); -} -hotmenu SCI_C_FIFO_Registers() -{ - GEL_WatchAdd("*0x777A,x","SCIFFTXC"); - GEL_WatchAdd("*0x777B,x","SCIFFRXC"); - GEL_WatchAdd("*0x777C,x","SCIFFCTC"); -} - - -/********************************************************************/ -/* Serial Peripheral Interface Registers */ -/********************************************************************/ -menuitem "Watch SPI Registers"; - -hotmenu SPI_A_All_Regs() -{ - GEL_WatchAdd("*0x7040,x","SPIA SPICCR"); - GEL_WatchAdd("*0x7041,x","SPIA SPICTL"); - GEL_WatchAdd("*0x7042,x","SPIA SPIST"); - GEL_WatchAdd("*0x7044,x","SPIA SPIBRR"); - GEL_WatchAdd("*0x7046,x","SPIA SPIEMU"); - GEL_WatchAdd("*0x7047,x","SPIA SPIRXBUF"); - GEL_WatchAdd("*0x7048,x","SPIA SPITXBUF"); - GEL_WatchAdd("*0x7049,x","SPIA SPIDAT"); - GEL_WatchAdd("*0x704A,x","SPIA SPIFFTX"); - GEL_WatchAdd("*0x704B,x","SPIA SPIFFRX"); - GEL_WatchAdd("*0x704C,x","SPIA SPIFFCT"); - GEL_WatchAdd("*0x704F,x","SPIA SPIPRI"); -} -hotmenu SPI_A_FIFO_Registers() -{ - GEL_WatchAdd("*0x704A,x","SPIA SPIFFTX"); - GEL_WatchAdd("*0x704B,x","SPIA SPIFFRX"); - GEL_WatchAdd("*0x704C,x","SPIA SPIFFCT"); -} - - -/********************************************************************/ -/* Watchdog Timer Registers */ -/********************************************************************/ -menuitem "Watch Watchdog Timer Registers"; - -hotmenu All_Watchdog_Regs() -{ - GEL_WatchAdd("*0x7023,x","WDCNTR"); - GEL_WatchAdd("*0x7025,x","WDKEY"); - GEL_WatchAdd("*0x7029,x","WDCR"); - GEL_WatchAdd("*0x7022,x","SCSR"); -} - -/********************************************************************/ -/*** End of file ***/ diff --git a/Source/External/v120/DSP2833x_common/gel/f28335.gel b/Source/External/v120/DSP2833x_common/gel/f28335.gel deleted file mode 100644 index a3c37ec..0000000 --- a/Source/External/v120/DSP2833x_common/gel/f28335.gel +++ /dev/null @@ -1,2960 +0,0 @@ -/********************************************************************/ -/* f28335.gel */ -/* Version 3.30.2 */ -/* */ -/* This GEL file is to be used with the TMS320F28335 DSP. */ -/* Changes may be required to support specific hardware designs. */ -/* */ -/* Code Composer Studio supports six reserved GEL functions that */ -/* automatically get executed if they are defined. They are: */ -/* */ -/* StartUp() - Executed whenever CCS is invoked */ -/* OnReset() - Executed after Debug->Reset CPU */ -/* OnRestart() - Executed after Debug->Restart */ -/* OnPreFileLoaded() - Executed before File->Load Program */ -/* OnFileLoaded() - Executed after File->Load Program */ -/* OnTargetConnect() - Executed after Debug->Connect */ -/* */ -/********************************************************************/ - -StartUp() -{ - -/* The next line automatically loads the .gel file that comes */ -/* with the DSP2833x Peripheral Header Files download. To use, */ -/* uncomment, and adjust the directory path as needed. */ -// GEL_LoadGel("c:\\CCStudio_v3.3\\cc\\gel\\DSP2833x_Peripheral.gel"); - -} - -OnReset(int nErrorCode) -{ - C28x_Mode(); - Unlock_CSM(); - ADC_Cal(); - -} - -OnRestart(int nErrorCode) -{ -/* CCS will call OnRestart() when you do a Debug->Restart and */ -/* after you load a new file. Between running interrupt based */ -/* programs, this function will clear interrupts and help keep */ -/* the processor from going off into invalid memory. */ - C28x_Mode(); - IER = 0; - IFR = 0; - ADC_Cal(); -} - -int TxtOutCtl=0; -OnPreFileLoaded() -{ - XINTF_Enable(); - if (TxtOutCtl==0) - { - GEL_TextOut("\nNOTES:\nGel will enable XINTFx16 during Debug only.\nEnable XINTF in code prior to use."); - GEL_TextOut("\nFPU Registers can be found via GEL->Watch FPU Registers."); - TxtOutCtl=1; - } -} - -OnFileLoaded(int nErrorCode, int bSymbolsOnly) -{ - ADC_Cal(); -} - -OnTargetConnect() -{ - C28x_Mode(); - F28335_Memory_Map(); /* Initialize the CCS memory map */ - -/* Check to see if CCS has been started-up with the DSP already */ -/* running in real-time mode. The user can add whatever */ -/* custom initialization stuff they want to each case. */ - - if (GEL_IsInRealtimeMode()) /* Do real-time mode target initialization */ - { - - } - else /* Do stop-mode target initialization */ - { - GEL_Reset(); /* Reset DSP */ - } - -} - - -/********************************************************************/ -/* These functions are launched by the GEL_Toolbar button plugin */ -/********************************************************************/ -GEL_Toolbar1() -{ - Run_Realtime_with_Reset(); -} -GEL_Toolbar2() -{ - Run_Realtime_with_Restart(); -} -GEL_Toolbar3() -{ - Full_Halt(); -} -GEL_Toolbar4() -{ - Full_Halt_with_Reset(); -} - -int GEL_Toolbar5_Toggle = 0; -GEL_Toolbar5() -{ - if(GEL_Toolbar5_Toggle == 0) - { - GEL_Toolbar5_Toggle = 1; - GEL_OpenWindow("GEL_Buttons",1,4); - GEL_TextOut("Button 1: Run_Realtime_with_Reset()","GEL_Buttons",0,0); - GEL_TextOut("Button 2: Run_Realtime_with_Restart()","GEL_Buttons",0,1); - GEL_TextOut("Button 3: Full_Halt()", "GEL_Buttons",0,2); - GEL_TextOut("Button 4: Full_Halt_with_Reset()","GEL_Buttons",0,3); - } - else - { - GEL_Toolbar5_Toggle = 0; - GEL_CloseWindow("GEL_Buttons"); - } -} - - -/********************************************************************/ -/* These functions are useful to engage/dis-enagage realtime */ -/* emulation mode during debug. They save the user from having to */ -/* manually perform these steps in CCS. */ -/********************************************************************/ -menuitem "Realtime Emulation Control"; - -hotmenu Run_Realtime_with_Reset() -{ - GEL_Reset(); /* Reset the DSP */ - ST1 = ST1 & 0xFFFD; /* clear DBGM bit in ST1 */ - GEL_EnableRealtime(); /* Enable Realtime mode */ - GEL_Run(); /* Run the DSP */ -} -hotmenu Run_Realtime_with_Restart() -{ - GEL_Restart(); /* Reset the DSP */ - ST1 = ST1 & 0xFFFD; /* clear DBGM bit in ST1 */ - GEL_EnableRealtime(); /* Enable Realtime mode */ - GEL_Run(); /* Run the DSP */ -} -hotmenu Full_Halt() -{ - GEL_DisableRealtime(); /* Disable Realtime mode */ - GEL_Halt(); /* Halt the DSP */ -} -hotmenu Full_Halt_with_Reset() -{ - GEL_DisableRealtime(); /* Disable Realtime mode */ - GEL_Halt(); /* Halt the DSP */ - GEL_Reset(); /* Reset the DSP */ -} - - -/********************************************************************/ -/* F28335 Memory Map */ -/* */ -/* Note: M0M1MAP and VMAP signals tied high on F28335 core */ -/* */ -/* 0x000000 - 0x0003ff M0 SARAM (Prog and Data) */ -/* 0x000400 - 0x0007ff M1 SARAM (Prog and Data) */ -/* 0x000800 - 0x001fff Peripheral Frame0 (PF0) (Data only) */ -/* 0x004000 - 0x004fff XINTF Zone 0 (Prog and Data) */ -/* 0x005000 - 0x005fff Peripheral Frame3 (PF3) (Data only) */ -/* 0x006000 - 0x006fff Peripheral Frame1 (PF1) (Data only) */ -/* 0x007000 - 0x007fff Peripheral Frame2 (PF2) (Data only) */ -/* 0x008000 - 0x008fff L0 SARAM (Prog and Data) */ -/* 0x009000 - 0x009fff L1 SARAM (Prog and Data) */ -/* 0x00A000 - 0x00Afff L2 SARAM (Prog and Data) */ -/* 0x00B000 - 0x00Bfff L3 SARAM (Prog and Data) */ -/* 0x00C000 - 0x00Cfff L4 SARAM (Prog and Data) */ -/* 0x00D000 - 0x00Dfff L5 SARAM (Prog and Data) */ -/* 0x00E000 - 0x00Efff L6 SARAM (Prog and Data) */ -/* 0x00F000 - 0x00Ffff L7 SARAM (Prog and Data) */ -/* 0x100000 - 0x1fffff XINTF Zone 6 (Prog and Data) */ -/* 0x200000 - 0x2fffff XINTF Zone 7 (Prog and Data */ -/* 0x300000 - 0x33ffff Flash (Prog and Data) */ -/* 0x380080 - 0x380088 ADC_cal function (Prog and Data) */ -/* 0x380090 - 0x380090 PARTID value (Prog and Data) */ -/* 0x380400 - 0x3807ff OTP (Prog and Data) */ -/* 0x3f8000 - 0x3f8fff L0 SARAM (Prog and Data) */ -/* 0x3f9000 - 0x3f9fff L1 SARAM (Prog and Data) */ -/* 0x3fA000 - 0x3fAfff L2 SARAM (Prog and Data) */ -/* 0x3fB000 - 0x3fBfff L3 SARAM (Prog and Data) */ -/* 0x3fe000 - 0x3fffff BOOT ROM (Prog and Data) */ -/********************************************************************/ -menuitem "Initialize Memory Map"; - -hotmenu F28335_Memory_Map() -{ - GEL_MapReset(); - GEL_MapOn(); - - /* Program memory map */ - GEL_MapAdd(0x0,0,0x400,1,1); /* M0 SARAM */ - GEL_MapAdd(0x400,0,0x400,1,1); /* M1 SARAM */ - GEL_MapAdd(0x4000,0,0x1000,1,1); /* Zone 0 */ - GEL_MapAdd(0x8000,0,0x1000,1,1); /* L0 SARAM */ - GEL_MapAdd(0x9000,0,0x1000,1,1); /* L1 SARAM */ - GEL_MapAdd(0xA000,0,0x1000,1,1); /* L2 SARAM */ - GEL_MapAdd(0xB000,0,0x1000,1,1); /* L3 SARAM */ - GEL_MapAdd(0xC000,0,0x1000,1,1); /* L4 SARAM */ - GEL_MapAdd(0xD000,0,0x1000,1,1); /* L5 SARAM */ - GEL_MapAdd(0xE000,0,0x1000,1,1); /* L6 SARAM */ - GEL_MapAdd(0xF000,0,0x1000,1,1); /* L7 SARAM */ - GEL_MapAdd(0x100000,0,0x100000,1,1); /* Zone 6 */ - GEL_MapAdd(0x200000,0,0x100000,1,1); /* Zone 7 */ - GEL_MapAdd(0x300000,0,0x40000,1,0); /* FLASH */ - GEL_MapAdd(0x380080,0,0x00009,1,0); /* ADC_cal function*/ - GEL_MapAdd(0x380090,0,0x00001,1,0); /* PARTID value */ - GEL_MapAdd(0x380400,0,0x00400,1,0); /* OTP */ - GEL_MapAdd(0x3f8000,0,0x1000,1,1); /* L0 SARAM Mirror */ - GEL_MapAdd(0x3f9000,0,0x1000,1,1); /* L1 SARAM Mirror */ - GEL_MapAdd(0x3fA000,0,0x1000,1,1); /* L2 SARAM Mirror */ - GEL_MapAdd(0x3fb000,0,0x1000,1,1); /* L3 SARAM Mirror */ - GEL_MapAdd(0x3fe000,0,0x2000,1,0); /* BOOT ROM */ - - /* Data memory map */ - GEL_MapAdd(0x000,1,0x400,1,1); /* M0 SARAM */ - GEL_MapAdd(0x400,1,0x400,1,1); /* M1 SARAM */ - GEL_MapAdd(0x800,1,0x1800,1,1); /* PF0 */ - GEL_MapAdd(0x4000,1,0x1000,1,1); /* Zone 0 */ - GEL_MapAdd(0x5000,1,0x1000,1,1); /* PF3 */ - GEL_MapAdd(0x6000,1,0x1000,1,1); /* PF1 */ - GEL_MapAddStr(0x7000,1,0x1000,"R|W|AS2",0); /* PF2 */ - GEL_MapAdd(0x8000,1,0x1000,1,1); /* L0 SARAM */ - GEL_MapAdd(0x9000,1,0x1000,1,1); /* L1 SARAM */ - GEL_MapAdd(0xA000,1,0x1000,1,1); /* L2 SARAM */ - GEL_MapAdd(0xB000,1,0x1000,1,1); /* L3 SARAM */ - GEL_MapAdd(0xC000,1,0x1000,1,1); /* L4 SARAM */ - GEL_MapAdd(0xD000,1,0x1000,1,1); /* L5 SARAM */ - GEL_MapAdd(0xE000,1,0x1000,1,1); /* L6 SARAM */ - GEL_MapAdd(0xF000,1,0x1000,1,1); /* L7 SARAM */ - GEL_MapAdd(0x100000,1,0x100000,1,1); /* Zone 6 */ - GEL_MapAdd(0x200000,1,0x100000,1,1); /* Zone 7 */ - GEL_MapAdd(0x300000,1,0x40000,1,0); /* FLASH */ - GEL_MapAdd(0x380400,1,0x00400,1,0); /* OTP */ - GEL_MapAdd(0x380080,1,0x00009,1,0); /* ADC_cal function*/ - GEL_MapAdd(0x380090,1,0x00001,1,0); /* PARTID value */ - GEL_MapAdd(0x3f8000,1,0x1000,1,1); /* L0 SARAM Mirror */ - GEL_MapAdd(0x3f9000,1,0x1000,1,1); /* L1 SARAM Mirror */ - GEL_MapAdd(0x3fA000,1,0x1000,1,1); /* L2 SARAM Mirror */ - GEL_MapAdd(0x3fb000,1,0x1000,1,1); /* L3 SARAM Mirror */ - GEL_MapAdd(0x3fe000,1,0x2000,1,0); /* BOOT ROM */ -} - - -/********************************************************************/ -/* The ESTOP0 fill functions are useful for debug. They fill the */ -/* RAM with software breakpoints that will trap runaway code. */ -/********************************************************************/ -hotmenu Fill_F28335_RAM_with_ESTOP0() -{ - GEL_MemoryFill(0x000000,1,0x000800,0x7625); /* Fill M0/M1 */ - GEL_MemoryFill(0x008000,1,0x002000,0x7625); /* Fill L0/L1 */ - GEL_MemoryFill(0x00A000,1,0x002000,0x7625); /* Fill L2/L3 */ - GEL_MemoryFill(0x00C000,1,0x002000,0x7625); /* Fill L4/L5 */ - GEL_MemoryFill(0x00E000,1,0x002000,0x7625); /* Fill L6/L7 */ -} - - -/********************************************************************/ -menuitem "Watchdog"; -hotmenu Disable_WD() -{ - *0x7029 = *0x7029 | 0x0068; /* Set the WDDIS bit */ - *0x7025 = 0x0055; /* Service the WD */ - *0x7025 = 0x00AA; /* once to be safe. */ - GEL_TextOut("\nWatchdog Timer Disabled"); -} - - -/********************************************************************/ -menuitem "Code Security Module" -hotmenu Unlock_CSM() -{ - /* Perform dummy reads of the password locations */ - XAR0 = *0x33FFF8; - XAR0 = *0x33FFF9; - XAR0 = *0x33FFFA; - XAR0 = *0x33FFFB; - XAR0 = *0x33FFFC; - XAR0 = *0x33FFFD; - XAR0 = *0x33FFFE; - XAR0 = *0x33FFFF; - - /* Write passwords to the KEY registers. 0xFFFF's are dummy passwords. - User should replace them with the correct password for their DSP */ - *0xAE0 = 0xFFFF; - *0xAE1 = 0xFFFF; - *0xAE2 = 0xFFFF; - *0xAE3 = 0xFFFF; - *0xAE4 = 0xFFFF; - *0xAE5 = 0xFFFF; - *0xAE6 = 0xFFFF; - *0xAE7 = 0xFFFF; -} - - -/********************************************************************/ -menuitem "Addressing Modes"; -hotmenu C28x_Mode() -{ - ST1 = ST1 & (~0x0100); /* AMODE = 0 */ - ST1 = ST1 | 0x0200; /* OBJMODE = 1 */ -} -hotmenu C24x_Mode() -{ - ST1 = ST1 | 0x0100; /* AMODE = 1 */ - ST1 = ST1 | 0x0200; /* OBJMODE = 1 */ -} -hotmenu C27x_Mode() -{ - ST1 = ST1 & (~0x0100); /* AMODE = 0 */ - ST1 = ST1 & (~0x0200); /* OBJMODE = 0 */ -} - - -/********************************************************************/ -/* PLL Ratios */ -/* */ -/* The following table describes the PLL clocking ratios (0..10) */ -/* */ -/* Ratio CLKIN Description */ -/* ----- -------------- ------------ */ -/* 0 OSCCLK/2 PLL bypassed */ -/* 1 (OSCCLK * 1)/2 15 Mhz for 30 Mhz CLKIN */ -/* 2 (OSCCLK * 2)/2 30 Mhz for 30 Mhz CLKIN */ -/* 3 (OSCCLK * 3)/2 45 Mhz for 30 Mhz CLKIN */ -/* 4 (OSCCLK * 4)/2 60 Mhz for 30 Mhz CLKIN */ -/* 5 (OSCCLK * 5)/2 75 Mhz for 30 Mhz CLKIN */ -/* 6 (OSCCLK * 6)/2 90 Mhz for 30 Mhz CLKIN */ -/* 7 (OSCCLK * 7)/2 105 Mhz for 30 Mhz CLKIN */ -/* 8 (OSCCLK * 8)/2 120 Mhz for 30 Mhz CLKIN */ -/* 9 (OSCCLK * 9)/2 135 Mhz for 30 Mhz CLKIN */ -/* 10 (OSCCLK * 10)/2 150 Mhz for 30 Mhz CLKIN */ -/********************************************************************/ -menuitem "Set PLL Ratio"; - -hotmenu Bypass() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 0; /* CLKIN = OSCCLK/2, PLL is bypassed */ - PLL_Wait(); -} -hotmenu OSCCLK_x1_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 1; /* CLKIN = (OSCCLK * 1)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x2_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 2; /* CLKIN = (OSCCLK * 2)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x3_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 3; /* CLKIN = (OSCCLK * 3)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x4_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 4; /* CLKIN = (OSCCLK * 4)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x5_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 5; /* CLKIN = (OSCCLK * 5)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x6_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 6; /* CLKIN = (OSCCLK * 6)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x7_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 7; /* CLKIN = (OSCCLK * 7)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x8_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 8; /* CLKIN = (OSCCLK * 8)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x9_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 9; /* CLKIN = (OSCCLK * 9)/2 */ - PLL_Wait(); -} -hotmenu OSCCLK_x10_divided_by_2() -{ - DIVSEL_div2(); /* DIVSEL = 1/2 */ - *0x7021 = 10; /* CLKIN = (OSCCLK * 10)/2 */ - PLL_Wait(); -} -// hotmenu OSCCLK_x1_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 1; /* CLKIN = (OSCCLK * 1)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x2_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 2; /* CLKIN = (OSCCLK * 2)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x3_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 3; /* CLKIN = (OSCCLK * 3)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x4_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 4; /* CLKIN = (OSCCLK * 4)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x5_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 5; /* CLKIN = (OSCCLK * 5)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x6_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 6; /* CLKIN = (OSCCLK * 6)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x7_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 7; /* CLKIN = (OSCCLK * 7)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x8_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 8; /* CLKIN = (OSCCLK * 8)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x9_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 9; /* CLKIN = (OSCCLK * 9)/1 */ -// PLL_Wait(); -// } -// hotmenu OSCCLK_x10_divided_by_1() -// { -// DIVSEL_div1(); /* DIVSEL = 1/1 */ -// *0x7021 = 10; /* CLKIN = (OSCCLK * 10)/1 */ -// PLL_Wait(); -// } - - - -/********************************************************************/ -/* For F2833x devices, DIVSEL is 1/4 by default. Switch it to 1/2 */ -/********************************************************************/ - -DIVSEL_div2() -{ - int temp; - int PLLSTS; - - PLLSTS = 0x7011; - - temp = *PLLSTS; - temp &= 0xFE7F; /* Clear bits 7 & 8 */ - temp |= 2 << 7; /* Set bit 8 */ - *PLLSTS = temp; /* Switch to 1/2 */ -} - - - -/********************************************************************/ -/* For F2833x devices, DIVSEL is 1/4 by default. Switch it to /1 */ -/********************************************************************/ - -DIVSEL_div1() -{ - int temp; - int PLLSTS; - - PLLSTS = 0x7011; - - DIVSEL_div2(); /* First switch DIVSEL to 1/2 and wait */ - wait(); - temp = *PLLSTS; - temp |= 3 << 7; /* Set bits 7 & 8 */ - *PLLSTS = temp; /* Switch to 1/2 */ -} - -wait() -{ - int delay = 0; - for (delay = 0; delay <= 5; delay ++) - {} -} - -/********************************************************************/ -/* For F2833x devices, check the PLLOCKS bit for PLL lock. */ -/********************************************************************/ -PLL_Wait() -{ - int PLLSTS; - int delay = 0; - - PLLSTS = 0x7011; - - - while ( ( (unsigned int)*PLLSTS & 0x0001) != 0x0001) - { - delay++; - GEL_TextOut("Waiting for PLL Lock, PLLSTS = %x\n",,,,,(unsigned int)*PLLSTS); - } - GEL_TextOut("\nPLL lock complete, PLLSTS = %x\n",,,,,(unsigned int)*PLLSTS); -} - -/********************************************************************/ -/* Load the ADC Calibration values from TI OTP */ -/********************************************************************/ -menuitem "ADC Calibration" -hotmenu ADC_Cal() -{ - /* Perform dummy reads of the password locations */ - XAR0 = *0x33FFF8; - XAR0 = *0x33FFF9; - XAR0 = *0x33FFFA; - XAR0 = *0x33FFFB; - XAR0 = *0x33FFFC; - XAR0 = *0x33FFFD; - XAR0 = *0x33FFFE; - XAR0 = *0x33FFFF; - - - if(((*0x0AEF) & 0x0001) == 0) - { - XAR0 = *0x701C; - *0x701C |= 0x0008; - *0x711C = *0x380083; - *0x711D = *0x380085; - *0x701C = XAR0; - XAR0 = 0; - - } - else - { - GEL_TextOut("\nADC Calibration not complete, check if device is unlocked and recalibrate."); - } -} - -/********************************************************************/ -/* Enable the XINTF and configure GPIOs for XINTF function */ -/********************************************************************/ -menuitem "XINTF Enable" -hotmenu XINTF_Enable() -{ - - /* enable XINTF clock (XTIMCLK) */ - - *0x7020 = 0x3700; - /* GPBMUX1: XA0-XA7, XA16, XZCS0, */ - /* XZCS7, XREADY, XRNW, XWE0 */ - /* GPAMUX2: XA17-XA19, XZCS6 */ - /* GPCMUX2: XA8-XA15 */ - /* GPCMUX1: XD0-XD15 */ - *(unsigned long *)0x6F96 = 0xFFFFFFC0; /* GPBMUX1 */ - *(unsigned long *)0x6f88 = 0xFF000000; /* GPAMUX2 */ - *(unsigned long *)0x6FA8 = 0x0000AAAA; /* GPCMUX2 */ - *(unsigned long *)0x6FA6 = 0xAAAAAAAA; /* GPCMUX1 */ - - /* Uncomment for x32 data bus */ - /* GPBMUX2: XD16-XD31 */ -// *(unsigned long *)0x6F98 = 0xFFFFFFFF; /* GPBMUX2 */ - - /* Zone timing. - /* Each zone can be configured seperately */ - /* Uncomment the x16 or the x32 timing */ - /* depending on the data bus width for */ - /* the zone */ - - /* x16 Timing */ - *(unsigned long *)0x0B20 = 0x0043FFFF; /* Zone0 */ - *(unsigned long *)0x0B2C = 0x0043FFFF; /* Zone6 */ - *(unsigned long *)0x0B2E = 0x0043FFFF; /* Zone7 */ - - /* x32 Timing: -// *(unsigned long *)0x0B20 = 0x0041FFFF; /* x32 */ -// *(unsigned long *)0x0B2C = 0x0041FFFF; /* x32 */ -// *(unsigned long *)0x0B2E = 0x0041FFFF; /* x32 */ - - -} - - - - - -/********************************************************************/ -/* The below are used to display the symbolic names of the F28335 */ -/* memory mapped registers in the watch window. To view these */ -/* registers, click on the GEL menu button in Code Composer Studio, */ -/* then select which registers or groups of registers you want to */ -/* view. They will appear in the watch window under the Watch1 tab. */ -/********************************************************************/ - -/* Add a space line to the GEL menu */ -menuitem "______________________________________"; -hotmenu __() {} - -/********************************************************************/ -/* A/D Converter Registers */ -/********************************************************************/ -menuitem "Watch ADC Registers"; - -hotmenu All_ADC_Regs() -{ - GEL_WatchAdd("*0x7100,x","ADCTRL1"); - GEL_WatchAdd("*0x7101,x","ADCTRL2"); - GEL_WatchAdd("*0x7102,x","ADCMAXCONV"); - GEL_WatchAdd("*0x7103,x","ADCCHSELSEQ1"); - GEL_WatchAdd("*0x7104,x","ADCCHSELSEQ2"); - GEL_WatchAdd("*0x7105,x","ADCCHSELSEQ3"); - GEL_WatchAdd("*0x7106,x","ADCCHSELSEQ4"); - GEL_WatchAdd("*0x7107,x","ADCASEQSR"); - GEL_WatchAdd("*0x7108,x","ADCRESULT0"); - GEL_WatchAdd("*0x7109,x","ADCRESULT1"); - GEL_WatchAdd("*0x710A,x","ADCRESULT2"); - GEL_WatchAdd("*0x710B,x","ADCRESULT3"); - GEL_WatchAdd("*0x710C,x","ADCRESULT4"); - GEL_WatchAdd("*0x710D,x","ADCRESULT5"); - GEL_WatchAdd("*0x710E,x","ADCRESULT6"); - GEL_WatchAdd("*0x710F,x","ADCRESULT7"); - GEL_WatchAdd("*0x7110,x","ADCRESULT8"); - GEL_WatchAdd("*0x7111,x","ADCRESULT9"); - GEL_WatchAdd("*0x7112,x","ADCRESULT10"); - GEL_WatchAdd("*0x7113,x","ADCRESULT11"); - GEL_WatchAdd("*0x7114,x","ADCRESULT12"); - GEL_WatchAdd("*0x7115,x","ADCRESULT13"); - GEL_WatchAdd("*0x7116,x","ADCRESULT14"); - GEL_WatchAdd("*0x7117,x","ADCRESULT15"); - GEL_WatchAdd("*0x7118,x","ADCTRL3"); - GEL_WatchAdd("*0x7119,x","ADCST"); - GEL_WatchAdd("*0x711C,x","ADCREFSEL"); - GEL_WatchAdd("*0x711D,x","ADCOFFTRIM"); - - GEL_WatchAdd("*0x0B00,x","ADCRESULT0 Mirror"); - GEL_WatchAdd("*0x0B01,x","ADCRESULT1 Mirror"); - GEL_WatchAdd("*0x0B02,x","ADCRESULT2 Mirror"); - GEL_WatchAdd("*0x0B03,x","ADCRESULT3 Mirror"); - GEL_WatchAdd("*0x0B04,x","ADCRESULT4 Mirror"); - GEL_WatchAdd("*0x0B05,x","ADCRESULT5 Mirror"); - GEL_WatchAdd("*0x0B06,x","ADCRESULT6 Mirror"); - GEL_WatchAdd("*0x0B07,x","ADCRESULT7 Mirror"); - GEL_WatchAdd("*0x0B08,x","ADCRESULT8 Mirror"); - GEL_WatchAdd("*0x0B09,x","ADCRESULT9 Mirror"); - GEL_WatchAdd("*0x0B0A,x","ADCRESULT10 Mirror"); - GEL_WatchAdd("*0x0B0B,x","ADCRESULT11 Mirror"); - GEL_WatchAdd("*0x0B0C,x","ADCRESULT12 Mirror"); - GEL_WatchAdd("*0x0B0D,x","ADCRESULT13 Mirror"); - GEL_WatchAdd("*0x0B0E,x","ADCRESULT14 Mirror"); - GEL_WatchAdd("*0x0B0F,x","ADCRESULT15 Mirror"); -} -hotmenu ADC_Control_Regs() -{ - GEL_WatchAdd("*0x7100,x","ADCTRL1"); - GEL_WatchAdd("*0x7101,x","ADCTRL2"); - GEL_WatchAdd("*0x7102,x","ADCMAXCONV"); - GEL_WatchAdd("*0x7107,x","ADCASEQSR"); - GEL_WatchAdd("*0x7118,x","ADCTRL3"); - GEL_WatchAdd("*0x7119,x","ADCST"); - GEL_WatchAdd("*0x711C,x","ADCREFSEL"); - GEL_WatchAdd("*0x711D,x","ADCOFFTRIM"); -} -hotmenu ADCCHSELSEQx_Regs() -{ - GEL_WatchAdd("*0x7103,x","ADCCHSELSEQ1"); - GEL_WatchAdd("*0x7104,x","ADCCHSELSEQ2"); - GEL_WatchAdd("*0x7105,x","ADCCHSELSEQ3"); - GEL_WatchAdd("*0x7106,x","ADCCHSELSEQ4"); -} -hotmenu ADCRESULT_0_to_7() -{ - GEL_WatchAdd("*0x7108,x","ADCRESULT0"); - GEL_WatchAdd("*0x7109,x","ADCRESULT1"); - GEL_WatchAdd("*0x710A,x","ADCRESULT2"); - GEL_WatchAdd("*0x710B,x","ADCRESULT3"); - GEL_WatchAdd("*0x710C,x","ADCRESULT4"); - GEL_WatchAdd("*0x710D,x","ADCRESULT5"); - GEL_WatchAdd("*0x710E,x","ADCRESULT6"); - GEL_WatchAdd("*0x710F,x","ADCRESULT7"); -} -hotmenu ADCRESULT_8_to_15() -{ - GEL_WatchAdd("*0x7110,x","ADCRESULT8"); - GEL_WatchAdd("*0x7111,x","ADCRESULT9"); - GEL_WatchAdd("*0x7112,x","ADCRESULT10"); - GEL_WatchAdd("*0x7113,x","ADCRESULT11"); - GEL_WatchAdd("*0x7114,x","ADCRESULT12"); - GEL_WatchAdd("*0x7115,x","ADCRESULT13"); - GEL_WatchAdd("*0x7116,x","ADCRESULT14"); - GEL_WatchAdd("*0x7117,x","ADCRESULT15"); -} -hotmenu ADCRESULT_Mirror_0_to_7() -{ - GEL_WatchAdd("*0x0B00,x","ADCRESULT0 Mirror"); - GEL_WatchAdd("*0x0B01,x","ADCRESULT1 Mirror"); - GEL_WatchAdd("*0x0B02,x","ADCRESULT2 Mirror"); - GEL_WatchAdd("*0x0B03,x","ADCRESULT3 Mirror"); - GEL_WatchAdd("*0x0B04,x","ADCRESULT4 Mirror"); - GEL_WatchAdd("*0x0B05,x","ADCRESULT5 Mirror"); - GEL_WatchAdd("*0x0B06,x","ADCRESULT6 Mirror"); - GEL_WatchAdd("*0x0B07,x","ADCRESULT7 Mirror"); -} -hotmenu ADCRESULT_Mirror_8_to_15() -{ - GEL_WatchAdd("*0x0B08,x","ADCRESULT8 Mirror"); - GEL_WatchAdd("*0x0B09,x","ADCRESULT9 Mirror"); - GEL_WatchAdd("*0x0B0A,x","ADCRESULT10 Mirror"); - GEL_WatchAdd("*0x0B0B,x","ADCRESULT11 Mirror"); - GEL_WatchAdd("*0x0B0C,x","ADCRESULT12 Mirror"); - GEL_WatchAdd("*0x0B0D,x","ADCRESULT13 Mirror"); - GEL_WatchAdd("*0x0B0E,x","ADCRESULT14 Mirror"); - GEL_WatchAdd("*0x0B0F,x","ADCRESULT15 Mirror"); -} - - -/********************************************************************/ -/* Clocking and Low-Power Registers */ -/********************************************************************/ -menuitem "Watch Clocking and Low-Power Registers"; - -hotmenu All_Clocking_and_Low_Power_Regs() -{ - GEL_WatchAdd("*0x7010,x","XCLK"); - GEL_WatchAdd("*0x7011,x","PLLSTS"); - GEL_WatchAdd("*0x701A,x","HISPCP"); - GEL_WatchAdd("*0x701B,x","LOSPCP"); - GEL_WatchAdd("*0x701C,x","PCLKCR0"); - GEL_WatchAdd("*0x701D,x","PCLKCR1"); - GEL_WatchAdd("*0x701E,x","LPMCR0"); - GEL_WatchAdd("*0x7020,x","PCLKCR3"); - GEL_WatchAdd("*0x7021,x","PLLCR"); -} - - -/********************************************************************/ -/* Code Security Module Registers */ -/********************************************************************/ -menuitem "Watch Code Security Module Registers"; - -hotmenu CSMSCR() -{ - GEL_WatchAdd("*0x0AEF,x","CSMSCR"); - GEL_WatchAdd("(*0x0AEF>>15)&1,d"," FORCESEC bit"); - GEL_WatchAdd("(*0x0AEF)&1,d"," SECURE bit"); -} -hotmenu PWL_Locations() -{ - GEL_WatchAdd("*0x33FFF8,x","PWL0"); - GEL_WatchAdd("*0x33FFF9,x","PWL1"); - GEL_WatchAdd("*0x33FFFA,x","PWL2"); - GEL_WatchAdd("*0x33FFFB,x","PWL3"); - GEL_WatchAdd("*0x33FFFC,x","PWL4"); - GEL_WatchAdd("*0x33FFFD,x","PWL5"); - GEL_WatchAdd("*0x33FFFE,x","PWL6"); - GEL_WatchAdd("*0x33FFFF,x","PWL7"); -} - - -/********************************************************************/ -/* CPU Timer Registers */ -/********************************************************************/ -menuitem "Watch CPU Timer Registers"; - -hotmenu All_CPU_Timer0_Regs() -{ - GEL_WatchAdd("*0x0C00,x","TIMER0TIM"); - GEL_WatchAdd("*0x0C01,x","TIMER0TIMH"); - GEL_WatchAdd("*0x0C02,x","TIMER0PRD"); - GEL_WatchAdd("*0x0C03,x","TIMER0PRDH"); - GEL_WatchAdd("*0x0C04,x","TIMER0TCR"); - GEL_WatchAdd("*0x0C06,x","TIMER0TPR"); - GEL_WatchAdd("*0x0C07,x","TIMER0TPRH"); -} -hotmenu All_CPU_Timer1_Regs() -{ - GEL_WatchAdd("*0x0C08,x","TIMER1TIM"); - GEL_WatchAdd("*0x0C09,x","TIMER1TIMH"); - GEL_WatchAdd("*0x0C0A,x","TIMER1PRD"); - GEL_WatchAdd("*0x0C0B,x","TIMER1PRDH"); - GEL_WatchAdd("*0x0C0C,x","TIMER1TCR"); - GEL_WatchAdd("*0x0C0E,x","TIMER1TPR"); - GEL_WatchAdd("*0x0C0F,x","TIMER1TPRH"); -} -hotmenu All_CPU_Timer2_Regs() -{ - GEL_WatchAdd("*0x0C10,x","TIMER2TIM"); - GEL_WatchAdd("*0x0C11,x","TIMER2TIMH"); - GEL_WatchAdd("*0x0C12,x","TIMER2PRD"); - GEL_WatchAdd("*0x0C13,x","TIMER2PRDH"); - GEL_WatchAdd("*0x0C14,x","TIMER2TCR"); - GEL_WatchAdd("*0x0C16,x","TIMER2TPR"); - GEL_WatchAdd("*0x0C17,x","TIMER2TPRH"); -} - - -/********************************************************************/ -/* Device Emulation Registers */ -/********************************************************************/ -menuitem "Watch Device Emulation Registers"; - -hotmenu All_Emulation_Regs() -{ - GEL_WatchAdd("*(long *)0x0880,x","DEVICECNF"); - GEL_WatchAdd("*0x0882,x","CLASSID"); - GEL_WatchAdd("*0x0883,x","REVID"); - GEL_WatchAdd("*0x0884,x","PROTSTART"); - GEL_WatchAdd("*0x0885,x","PROTRANGE"); - GEL_WatchAdd("*0x380090,x","PARTID"); -} -/********************************************************************/ -/* DMA Registers */ -/********************************************************************/ -menuitem "Watch DMA Registers"; - -hotmenu All_DMA_Regs() -{ - GEL_WatchAdd("*0x1000,x","DMACTRL"); - GEL_WatchAdd("*0x1001,x","DEBUGCTRL"); - GEL_WatchAdd("*0x1002,x","REVISION"); - GEL_WatchAdd("*0x1004,x","PRIORITYCTRL1"); - GEL_WatchAdd("*0x1006,x","PRIORITYSTAT"); - - GEL_WatchAdd("*0x1020,x","DMA Ch1 MODE"); - GEL_WatchAdd("*0x1021,x","DMA Ch1 CONTROL"); - GEL_WatchAdd("*0x1022,x","DMA Ch1 BURST_SIZE"); - GEL_WatchAdd("*0x1023,x","DMA Ch1 BURST_COUNT"); - GEL_WatchAdd("*0x1024,x","DMA Ch1 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1025,x","DMA Ch1 DST_BURST_STEP"); - GEL_WatchAdd("*0x1026,x","DMA Ch1 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1027,x","DMA Ch1 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1028,x","DMA Ch1 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1029,x","DMA Ch1 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x102A,x","DMA Ch1 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x102B,x","DMA Ch1 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x102C,x","DMA Ch1 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x102D,x","DMA Ch1 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x102E,x","DMA Ch1 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x102F,x","DMA Ch1 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1030,x","DMA Ch1 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1032,x","DMA Ch1 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1034,x","DMA Ch1 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1036,x","DMA Ch1 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1038,x","DMA Ch1 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x103A,x","DMA Ch1 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x103C,x","DMA Ch1 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x103E,x","DMA Ch1 DST_ADDR_ACTIVE"); - - GEL_WatchAdd("*0x1040,x","DMA Ch2 MODE"); - GEL_WatchAdd("*0x1041,x","DMA Ch2 CONTROL"); - GEL_WatchAdd("*0x1042,x","DMA Ch2 BURST_SIZE"); - GEL_WatchAdd("*0x1043,x","DMA Ch2 BURST_COUNT"); - GEL_WatchAdd("*0x1044,x","DMA Ch2 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1045,x","DMA Ch2 DST_BURST_STEP"); - GEL_WatchAdd("*0x1046,x","DMA Ch2 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1047,x","DMA Ch2 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1048,x","DMA Ch2 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1049,x","DMA Ch2 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x104A,x","DMA Ch2 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x104B,x","DMA Ch2 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x104C,x","DMA Ch2 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x104D,x","DMA Ch2 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x104E,x","DMA Ch2 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x104F,x","DMA Ch2 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1050,x","DMA Ch2 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1052,x","DMA Ch2 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1054,x","DMA Ch2 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1056,x","DMA Ch2 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1058,x","DMA Ch2 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x105A,x","DMA Ch2 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x105C,x","DMA Ch2 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x105E,x","DMA Ch2 DST_ADDR_ACTIVE"); - - GEL_WatchAdd("*0x1060,x","DMA Ch3 MODE"); - GEL_WatchAdd("*0x1061,x","DMA Ch3 CONTROL"); - GEL_WatchAdd("*0x1062,x","DMA Ch3 BURST_SIZE"); - GEL_WatchAdd("*0x1063,x","DMA Ch3 BURST_COUNT"); - GEL_WatchAdd("*0x1064,x","DMA Ch3 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1065,x","DMA Ch3 DST_BURST_STEP"); - GEL_WatchAdd("*0x1066,x","DMA Ch3 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1067,x","DMA Ch3 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1068,x","DMA Ch3 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1069,x","DMA Ch3 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x106A,x","DMA Ch3 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x106B,x","DMA Ch3 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x106C,x","DMA Ch3 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x106D,x","DMA Ch3 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x106E,x","DMA Ch3 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x106F,x","DMA Ch3 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1070,x","DMA Ch3 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1072,x","DMA Ch3 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1074,x","DMA Ch3 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1076,x","DMA Ch3 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1078,x","DMA Ch3 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x107A,x","DMA Ch3 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x107C,x","DMA Ch3 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x107E,x","DMA Ch3 DST_ADDR_ACTIVE"); - - GEL_WatchAdd("*0x1080,x","DMA Ch4 MODE"); - GEL_WatchAdd("*0x1081,x","DMA Ch4 CONTROL"); - GEL_WatchAdd("*0x1082,x","DMA Ch4 BURST_SIZE"); - GEL_WatchAdd("*0x1083,x","DMA Ch4 BURST_COUNT"); - GEL_WatchAdd("*0x1084,x","DMA Ch4 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1085,x","DMA Ch4 DST_BURST_STEP"); - GEL_WatchAdd("*0x1086,x","DMA Ch4 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1087,x","DMA Ch4 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1088,x","DMA Ch4 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1089,x","DMA Ch4 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x108A,x","DMA Ch4 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x108B,x","DMA Ch4 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x108C,x","DMA Ch4 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x108D,x","DMA Ch4 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x108E,x","DMA Ch4 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x108F,x","DMA Ch4 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1090,x","DMA Ch4 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1092,x","DMA Ch4 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1094,x","DMA Ch4 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1096,x","DMA Ch4 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1098,x","DMA Ch4 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x109A,x","DMA Ch4 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x109C,x","DMA Ch4 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x109E,x","DMA Ch4 DST_ADDR_ACTIVE"); - - GEL_WatchAdd("*0x10A0,x","DMA Ch5 MODE"); - GEL_WatchAdd("*0x10A1,x","DMA Ch5 CONTROL"); - GEL_WatchAdd("*0x10A2,x","DMA Ch5 BURST_SIZE"); - GEL_WatchAdd("*0x10A3,x","DMA Ch5 BURST_COUNT"); - GEL_WatchAdd("*0x10A4,x","DMA Ch5 SRC_BURST_STEP"); - GEL_WatchAdd("*0x10A5,x","DMA Ch5 DST_BURST_STEP"); - GEL_WatchAdd("*0x10A6,x","DMA Ch5 TRANSFER_SIZE"); - GEL_WatchAdd("*0x10A7,x","DMA Ch5 TRANSFER_COUNT"); - GEL_WatchAdd("*0x10A8,x","DMA Ch5 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x10A9,x","DMA Ch5 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x10AA,x","DMA Ch5 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x10AB,x","DMA Ch5 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x10AC,x","DMA Ch5 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x10AD,x","DMA Ch5 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x10AE,x","DMA Ch5 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x10AF,x","DMA Ch5 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x10B0,x","DMA Ch5 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10B2,x","DMA Ch5 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10B4,x","DMA Ch5 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10B6,x","DMA Ch5 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10B8,x","DMA Ch5 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10BA,x","DMA Ch5 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10BC,x","DMA Ch5 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10BE,x","DMA Ch5 DST_ADDR_ACTIVE"); - - GEL_WatchAdd("*0x10C0,x","DMA Ch6 MODE"); - GEL_WatchAdd("*0x10C1,x","DMA Ch6 CONTROL"); - GEL_WatchAdd("*0x10C2,x","DMA Ch6 BURST_SIZE"); - GEL_WatchAdd("*0x10C3,x","DMA Ch6 BURST_COUNT"); - GEL_WatchAdd("*0x10C4,x","DMA Ch6 SRC_BURST_STEP"); - GEL_WatchAdd("*0x10C5,x","DMA Ch6 DST_BURST_STEP"); - GEL_WatchAdd("*0x10C6,x","DMA Ch6 TRANSFER_SIZE"); - GEL_WatchAdd("*0x10C7,x","DMA Ch6 TRANSFER_COUNT"); - GEL_WatchAdd("*0x10C8,x","DMA Ch6 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x10C9,x","DMA Ch6 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x10CA,x","DMA Ch6 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x10CB,x","DMA Ch6 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x10CC,x","DMA Ch6 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x10CD,x","DMA Ch6 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x10CE,x","DMA Ch6 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x10CF,x","DMA Ch6 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x10D0,x","DMA Ch6 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10D2,x","DMA Ch6 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10D4,x","DMA Ch6 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10D6,x","DMA Ch6 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10D8,x","DMA Ch6 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10DA,x","DMA Ch6 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10DC,x","DMA Ch6 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10DE,x","DMA Ch6 DST_ADDR_ACTIVE"); - - -} -hotmenu DMA_Channel_1_regs() -{ - GEL_WatchAdd("*0x1020,x","DMA Ch1 MODE"); - GEL_WatchAdd("*0x1021,x","DMA Ch1 CONTROL"); - GEL_WatchAdd("*0x1022,x","DMA Ch1 BURST_SIZE"); - GEL_WatchAdd("*0x1023,x","DMA Ch1 BURST_COUNT"); - GEL_WatchAdd("*0x1024,x","DMA Ch1 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1025,x","DMA Ch1 DST_BURST_STEP"); - GEL_WatchAdd("*0x1026,x","DMA Ch1 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1027,x","DMA Ch1 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1028,x","DMA Ch1 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1029,x","DMA Ch1 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x102A,x","DMA Ch1 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x102B,x","DMA Ch1 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x102C,x","DMA Ch1 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x102D,x","DMA Ch1 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x102E,x","DMA Ch1 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x102F,x","DMA Ch1 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1030,x","DMA Ch1 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1032,x","DMA Ch1 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1034,x","DMA Ch1 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1036,x","DMA Ch1 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1038,x","DMA Ch1 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x103A,x","DMA Ch1 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x103C,x","DMA Ch1 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x103E,x","DMA Ch1 DST_ADDR_ACTIVE"); -} - -hotmenu DMA_Channel_2_regs() -{ - GEL_WatchAdd("*0x1040,x","DMA Ch2 MODE"); - GEL_WatchAdd("*0x1041,x","DMA Ch2 CONTROL"); - GEL_WatchAdd("*0x1042,x","DMA Ch2 BURST_SIZE"); - GEL_WatchAdd("*0x1043,x","DMA Ch2 BURST_COUNT"); - GEL_WatchAdd("*0x1044,x","DMA Ch2 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1045,x","DMA Ch2 DST_BURST_STEP"); - GEL_WatchAdd("*0x1046,x","DMA Ch2 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1047,x","DMA Ch2 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1048,x","DMA Ch2 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1049,x","DMA Ch2 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x104A,x","DMA Ch2 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x104B,x","DMA Ch2 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x104C,x","DMA Ch2 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x104D,x","DMA Ch2 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x104E,x","DMA Ch2 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x104F,x","DMA Ch2 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1050,x","DMA Ch2 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1052,x","DMA Ch2 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1054,x","DMA Ch2 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1056,x","DMA Ch2 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1058,x","DMA Ch2 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x105A,x","DMA Ch2 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x105C,x","DMA Ch2 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x105E,x","DMA Ch2 DST_ADDR_ACTIVE"); -} -hotmenu DMA_Channel_3_regs() -{ - GEL_WatchAdd("*0x1060,x","DMA Ch3 MODE"); - GEL_WatchAdd("*0x1061,x","DMA Ch3 CONTROL"); - GEL_WatchAdd("*0x1062,x","DMA Ch3 BURST_SIZE"); - GEL_WatchAdd("*0x1063,x","DMA Ch3 BURST_COUNT"); - GEL_WatchAdd("*0x1064,x","DMA Ch3 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1065,x","DMA Ch3 DST_BURST_STEP"); - GEL_WatchAdd("*0x1066,x","DMA Ch3 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1067,x","DMA Ch3 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1068,x","DMA Ch3 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1069,x","DMA Ch3 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x106A,x","DMA Ch3 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x106B,x","DMA Ch3 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x106C,x","DMA Ch3 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x106D,x","DMA Ch3 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x106E,x","DMA Ch3 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x106F,x","DMA Ch3 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1070,x","DMA Ch3 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1072,x","DMA Ch3 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1074,x","DMA Ch3 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1076,x","DMA Ch3 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1078,x","DMA Ch3 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x107A,x","DMA Ch3 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x107C,x","DMA Ch3 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x107E,x","DMA Ch3 DST_ADDR_ACTIVE"); -} -hotmenu DMA_Channel_4_regs() -{ - GEL_WatchAdd("*0x1080,x","DMA Ch4 MODE"); - GEL_WatchAdd("*0x1081,x","DMA Ch4 CONTROL"); - GEL_WatchAdd("*0x1082,x","DMA Ch4 BURST_SIZE"); - GEL_WatchAdd("*0x1083,x","DMA Ch4 BURST_COUNT"); - GEL_WatchAdd("*0x1084,x","DMA Ch4 SRC_BURST_STEP"); - GEL_WatchAdd("*0x1085,x","DMA Ch4 DST_BURST_STEP"); - GEL_WatchAdd("*0x1086,x","DMA Ch4 TRANSFER_SIZE"); - GEL_WatchAdd("*0x1087,x","DMA Ch4 TRANSFER_COUNT"); - GEL_WatchAdd("*0x1088,x","DMA Ch4 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x1089,x","DMA Ch4 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x108A,x","DMA Ch4 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x108B,x","DMA Ch4 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x108C,x","DMA Ch4 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x108D,x","DMA Ch4 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x108E,x","DMA Ch4 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x108F,x","DMA Ch4 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x1090,x","DMA Ch4 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1092,x","DMA Ch4 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x1094,x","DMA Ch4 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1096,x","DMA Ch4 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x1098,x","DMA Ch4 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x109A,x","DMA Ch4 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x109C,x","DMA Ch4 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x109E,x","DMA Ch4 DST_ADDR_ACTIVE"); -} -hotmenu DMA_Channel_5_regs() -{ - GEL_WatchAdd("*0x10A0,x","DMA Ch5 MODE"); - GEL_WatchAdd("*0x10A1,x","DMA Ch5 CONTROL"); - GEL_WatchAdd("*0x10A2,x","DMA Ch5 BURST_SIZE"); - GEL_WatchAdd("*0x10A3,x","DMA Ch5 BURST_COUNT"); - GEL_WatchAdd("*0x10A4,x","DMA Ch5 SRC_BURST_STEP"); - GEL_WatchAdd("*0x10A5,x","DMA Ch5 DST_BURST_STEP"); - GEL_WatchAdd("*0x10A6,x","DMA Ch5 TRANSFER_SIZE"); - GEL_WatchAdd("*0x10A7,x","DMA Ch5 TRANSFER_COUNT"); - GEL_WatchAdd("*0x10A8,x","DMA Ch5 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x10A9,x","DMA Ch5 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x10AA,x","DMA Ch5 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x10AB,x","DMA Ch5 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x10AC,x","DMA Ch5 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x10AD,x","DMA Ch5 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x10AE,x","DMA Ch5 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x10AF,x","DMA Ch5 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x10B0,x","DMA Ch5 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10B2,x","DMA Ch5 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10B4,x","DMA Ch5 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10B6,x","DMA Ch5 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10B8,x","DMA Ch5 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10BA,x","DMA Ch5 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10BC,x","DMA Ch5 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10BE,x","DMA Ch5 DST_ADDR_ACTIVE"); -} -hotmenu DMA_Channel_6_regs() -{ - GEL_WatchAdd("*0x10C0,x","DMA Ch6 MODE"); - GEL_WatchAdd("*0x10C1,x","DMA Ch6 CONTROL"); - GEL_WatchAdd("*0x10C2,x","DMA Ch6 BURST_SIZE"); - GEL_WatchAdd("*0x10C3,x","DMA Ch6 BURST_COUNT"); - GEL_WatchAdd("*0x10C4,x","DMA Ch6 SRC_BURST_STEP"); - GEL_WatchAdd("*0x10C5,x","DMA Ch6 DST_BURST_STEP"); - GEL_WatchAdd("*0x10C6,x","DMA Ch6 TRANSFER_SIZE"); - GEL_WatchAdd("*0x10C7,x","DMA Ch6 TRANSFER_COUNT"); - GEL_WatchAdd("*0x10C8,x","DMA Ch6 SRC_TRANSFER_STEP"); - GEL_WatchAdd("*0x10C9,x","DMA Ch6 DST_TRANSFER_STEP"); - GEL_WatchAdd("*0x10CA,x","DMA Ch6 SRC_WRAP_SIZE"); - GEL_WatchAdd("*0x10CB,x","DMA Ch6 SRC_WRAP_COUNT"); - GEL_WatchAdd("*0x10CC,x","DMA Ch6 SRC_WRAP_STEP"); - GEL_WatchAdd("*0x10CD,x","DMA Ch6 DST_WRAP_SIZE"); - GEL_WatchAdd("*0x10CE,x","DMA Ch6 DST_WRAP_COUNT"); - GEL_WatchAdd("*0x10CF,x","DMA Ch6 DST_WRAP_STEP"); - GEL_WatchAdd("*(long *)0x10D0,x","DMA Ch6 SRC_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10D2,x","DMA Ch6 SRC_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10D4,x","DMA Ch6 SRC_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10D6,x","DMA Ch6 SRC_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10D8,x","DMA Ch6 DST_BEG_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10DA,x","DMA Ch6 DST_ADDR_SHDW"); - GEL_WatchAdd("*(long *)0x10DC,x","DMA Ch6 DST_BEG_ADDR_ACTIVE"); - GEL_WatchAdd("*(long *)0x10DE,x","DMA Ch6 DST_ADDR_ACTIVE"); -} - -/********************************************************************/ -/* eCAN Registers */ -/********************************************************************/ -menuitem "Watch eCAN Registers"; - -hotmenu eCAN_A_Global_Regs() -{ - GEL_WatchAdd("*(long *)0x6000,x","eCANA CANME"); - GEL_WatchAdd("*(long *)0x6002,x","eCANA CANMD"); - GEL_WatchAdd("*(long *)0x6004,x","eCANA CANTRS"); - GEL_WatchAdd("*(long *)0x6006,x","eCANA CANTRR"); - GEL_WatchAdd("*(long *)0x6008,x","eCANA CANTA"); - GEL_WatchAdd("*(long *)0x600A,x","eCANA CANAA"); - GEL_WatchAdd("*(long *)0x600C,x","eCANA CANRMP"); - GEL_WatchAdd("*(long *)0x600E,x","eCANA CANRML"); - GEL_WatchAdd("*(long *)0x6010,x","eCANA CANRFP"); - GEL_WatchAdd("*(long *)0x6014,x","eCANA CANMC"); - GEL_WatchAdd("*(long *)0x6016,x","eCANA CANBTC"); - GEL_WatchAdd("*(long *)0x6018,x","eCANA CANES"); - GEL_WatchAdd("*(long *)0x601A,x","eCANA CANTEC"); - GEL_WatchAdd("*(long *)0x601C,x","eCANA CANREC"); - GEL_WatchAdd("*(long *)0x601E,x","eCANA CANGIF0"); - GEL_WatchAdd("*(long *)0x6020,x","eCANA CANGIM"); - GEL_WatchAdd("*(long *)0x6022,x","eCANA CANGIF1"); - GEL_WatchAdd("*(long *)0x6024,x","eCANA CANMIM"); - GEL_WatchAdd("*(long *)0x6026,x","eCANA CANMIL"); - GEL_WatchAdd("*(long *)0x6028,x","eCANA CANOPC"); - GEL_WatchAdd("*(long *)0x602A,x","eCANA CANTIOC"); - GEL_WatchAdd("*(long *)0x602C,x","eCANA CANRIOC"); - GEL_WatchAdd("*(long *)0x602E,x","eCANA CANLNT"); - GEL_WatchAdd("*(long *)0x6030,x","eCANA CANTOC"); - GEL_WatchAdd("*(long *)0x6032,x","eCANA CANTOS"); -} -hotmenu eCAN_A_Mailbox_0_to_1_Regs() -{ - GEL_WatchAdd("*(long *)0x6040,x","eCANA LAM0"); - GEL_WatchAdd("*(long *)0x6080,x","eCANA MOTS0"); - GEL_WatchAdd("*(long *)0x60C0,x","eCANA MOTO0"); - GEL_WatchAdd("*(long *)0x6100,x","eCANA MID0"); - GEL_WatchAdd("*(long *)0x6102,x","eCANA MCF0"); - GEL_WatchAdd("*(long *)0x6104,x","eCANA MDL0"); - GEL_WatchAdd("*(long *)0x6106,x","eCANA MDH0"); - - GEL_WatchAdd("*(long *)0x6042,x","eCANA LAM1"); - GEL_WatchAdd("*(long *)0x6082,x","eCANA MOTS1"); - GEL_WatchAdd("*(long *)0x60C2,x","eCANA MOTO1"); - GEL_WatchAdd("*(long *)0x6108,x","eCANA MID1"); - GEL_WatchAdd("*(long *)0x610A,x","eCANA MCF1"); - GEL_WatchAdd("*(long *)0x610C,x","eCANA MDL1"); - GEL_WatchAdd("*(long *)0x610E,x","eCANA MDH1"); -} -hotmenu eCAN_A_Mailbox_2_to_3_Regs() -{ - GEL_WatchAdd("*(long *)0x6044,x","eCANA LAM2"); - GEL_WatchAdd("*(long *)0x6084,x","eCANA MOTS2"); - GEL_WatchAdd("*(long *)0x60C4,x","eCANA MOTO2"); - GEL_WatchAdd("*(long *)0x6110,x","eCANA MID2"); - GEL_WatchAdd("*(long *)0x6112,x","eCANA MCF2"); - GEL_WatchAdd("*(long *)0x6114,x","eCANA MDL2"); - GEL_WatchAdd("*(long *)0x6116,x","eCANA MDH2"); - - GEL_WatchAdd("*(long *)0x6046,x","eCANA LAM3"); - GEL_WatchAdd("*(long *)0x6086,x","eCANA MOTS3"); - GEL_WatchAdd("*(long *)0x60C6,x","eCANA MOTO3"); - GEL_WatchAdd("*(long *)0x6118,x","eCANA MID3"); - GEL_WatchAdd("*(long *)0x611A,x","eCANA MCF3"); - GEL_WatchAdd("*(long *)0x611C,x","eCANA MDL3"); - GEL_WatchAdd("*(long *)0x611E,x","eCANA MDH3"); -} -hotmenu eCAN_A_Mailbox_4_to_5_Regs() -{ - GEL_WatchAdd("*(long *)0x6048,x","eCANA LAM4"); - GEL_WatchAdd("*(long *)0x6088,x","eCANA MOTS4"); - GEL_WatchAdd("*(long *)0x60C8,x","eCANA MOTO4"); - GEL_WatchAdd("*(long *)0x6120,x","eCANA MID4"); - GEL_WatchAdd("*(long *)0x6122,x","eCANA MCF4"); - GEL_WatchAdd("*(long *)0x6124,x","eCANA MDL4"); - GEL_WatchAdd("*(long *)0x6126,x","eCANA MDH4"); - - GEL_WatchAdd("*(long *)0x604A,x","eCANA LAM5"); - GEL_WatchAdd("*(long *)0x608A,x","eCANA MOTS5"); - GEL_WatchAdd("*(long *)0x60CA,x","eCANA MOTO5"); - GEL_WatchAdd("*(long *)0x6128,x","eCANA MID5"); - GEL_WatchAdd("*(long *)0x612A,x","eCANA MCF5"); - GEL_WatchAdd("*(long *)0x612C,x","eCANA MDL5"); - GEL_WatchAdd("*(long *)0x612E,x","eCANA MDH5"); -} -hotmenu eCAN_A_Mailbox_6_to_7_Regs() -{ - GEL_WatchAdd("*(long *)0x604C,x","eCANA LAM6"); - GEL_WatchAdd("*(long *)0x608C,x","eCANA MOTS6"); - GEL_WatchAdd("*(long *)0x60CC,x","eCANA MOTO6"); - GEL_WatchAdd("*(long *)0x6130,x","eCANA MID6"); - GEL_WatchAdd("*(long *)0x6132,x","eCANA MCF6"); - GEL_WatchAdd("*(long *)0x6134,x","eCANA MDL6"); - GEL_WatchAdd("*(long *)0x6136,x","eCANA MDH6"); - - GEL_WatchAdd("*(long *)0x604E,x","eCANA LAM7"); - GEL_WatchAdd("*(long *)0x608E,x","eCANA MOTS7"); - GEL_WatchAdd("*(long *)0x60CE,x","eCANA MOTO7"); - GEL_WatchAdd("*(long *)0x6138,x","eCANA MID7"); - GEL_WatchAdd("*(long *)0x613A,x","eCANA MCF7"); - GEL_WatchAdd("*(long *)0x613C,x","eCANA MDL7"); - GEL_WatchAdd("*(long *)0x613E,x","eCANA MDH7"); -} -hotmenu eCAN_A_Mailbox_8_to_9_Regs() -{ - GEL_WatchAdd("*(long *)0x6050,x","eCANA LAM8"); - GEL_WatchAdd("*(long *)0x6090,x","eCANA MOTS8"); - GEL_WatchAdd("*(long *)0x60D0,x","eCANA MOTO8"); - GEL_WatchAdd("*(long *)0x6140,x","eCANA MID8"); - GEL_WatchAdd("*(long *)0x6142,x","eCANA MCF8"); - GEL_WatchAdd("*(long *)0x6144,x","eCANA MDL8"); - GEL_WatchAdd("*(long *)0x6146,x","eCANA MDH8"); - - GEL_WatchAdd("*(long *)0x6052,x","eCANA LAM9"); - GEL_WatchAdd("*(long *)0x6092,x","eCANA MOTS9"); - GEL_WatchAdd("*(long *)0x60D2,x","eCANA MOTO9"); - GEL_WatchAdd("*(long *)0x6148,x","eCANA MID9"); - GEL_WatchAdd("*(long *)0x614A,x","eCANA MCF9"); - GEL_WatchAdd("*(long *)0x614C,x","eCANA MDL9"); - GEL_WatchAdd("*(long *)0x614E,x","eCANA MDH9"); -} -hotmenu eCAN_A_Mailbox_10_to_11_Regs() -{ - GEL_WatchAdd("*(long *)0x6054,x","eCANA LAM10"); - GEL_WatchAdd("*(long *)0x6094,x","eCANA MOTS10"); - GEL_WatchAdd("*(long *)0x60D4,x","eCANA MOTO10"); - GEL_WatchAdd("*(long *)0x6150,x","eCANA MID10"); - GEL_WatchAdd("*(long *)0x6152,x","eCANA MCF10"); - GEL_WatchAdd("*(long *)0x6154,x","eCANA MDL10"); - GEL_WatchAdd("*(long *)0x6156,x","eCANA MDH10"); - - GEL_WatchAdd("*(long *)0x6056,x","eCANA LAM11"); - GEL_WatchAdd("*(long *)0x6096,x","eCANA MOTS11"); - GEL_WatchAdd("*(long *)0x60D6,x","eCANA MOTO11"); - GEL_WatchAdd("*(long *)0x6158,x","eCANA MID11"); - GEL_WatchAdd("*(long *)0x615A,x","eCANA MCF11"); - GEL_WatchAdd("*(long *)0x615C,x","eCANA MDL11"); - GEL_WatchAdd("*(long *)0x615E,x","eCANA MDH11"); -} -hotmenu eCAN_A_Mailbox_12_to_13_Regs() -{ - GEL_WatchAdd("*(long *)0x6058,x","eCANA LAM12"); - GEL_WatchAdd("*(long *)0x6098,x","eCANA MOTS12"); - GEL_WatchAdd("*(long *)0x60D8,x","eCANA MOTO12"); - GEL_WatchAdd("*(long *)0x6160,x","eCANA MID12"); - GEL_WatchAdd("*(long *)0x6162,x","eCANA MCF12"); - GEL_WatchAdd("*(long *)0x6164,x","eCANA MDL12"); - GEL_WatchAdd("*(long *)0x6166,x","eCANA MDH12"); - - GEL_WatchAdd("*(long *)0x605A,x","eCANA LAM13"); - GEL_WatchAdd("*(long *)0x609A,x","eCANA MOTS13"); - GEL_WatchAdd("*(long *)0x60DA,x","eCANA MOTO13"); - GEL_WatchAdd("*(long *)0x6168,x","eCANA MID13"); - GEL_WatchAdd("*(long *)0x616A,x","eCANA MCF13"); - GEL_WatchAdd("*(long *)0x616C,x","eCANA MDL13"); - GEL_WatchAdd("*(long *)0x616E,x","eCANA MDH13"); -} -hotmenu eCAN_A_Mailbox_14_to_15_Regs() -{ - GEL_WatchAdd("*(long *)0x605C,x","eCANA LAM14"); - GEL_WatchAdd("*(long *)0x609C,x","eCANA MOTS14"); - GEL_WatchAdd("*(long *)0x60DC,x","eCANA MOTO14"); - GEL_WatchAdd("*(long *)0x6170,x","eCANA MID14"); - GEL_WatchAdd("*(long *)0x6172,x","eCANA MCF14"); - GEL_WatchAdd("*(long *)0x6174,x","eCANA MDL14"); - GEL_WatchAdd("*(long *)0x6176,x","eCANA MDH14"); - - GEL_WatchAdd("*(long *)0x605E,x","eCANA LAM15"); - GEL_WatchAdd("*(long *)0x609E,x","eCANA MOTS15"); - GEL_WatchAdd("*(long *)0x60DE,x","eCANA MOTO15"); - GEL_WatchAdd("*(long *)0x6178,x","eCANA MID15"); - GEL_WatchAdd("*(long *)0x617A,x","eCANA MCF15"); - GEL_WatchAdd("*(long *)0x617C,x","eCANA MDL15"); - GEL_WatchAdd("*(long *)0x617E,x","eCANA MDH15"); -} -hotmenu eCAN_A_Mailbox_16_to_17_Regs() -{ - GEL_WatchAdd("*(long *)0x6060,x","eCANA LAM16"); - GEL_WatchAdd("*(long *)0x60A0,x","eCANA MOTS16"); - GEL_WatchAdd("*(long *)0x60E0,x","eCANA MOTO16"); - GEL_WatchAdd("*(long *)0x6180,x","eCANA MID16"); - GEL_WatchAdd("*(long *)0x6182,x","eCANA MCF16"); - GEL_WatchAdd("*(long *)0x6184,x","eCANA MDL16"); - GEL_WatchAdd("*(long *)0x6186,x","eCANA MDH16"); - - GEL_WatchAdd("*(long *)0x6062,x","eCANA LAM17"); - GEL_WatchAdd("*(long *)0x60A2,x","eCANA MOTS17"); - GEL_WatchAdd("*(long *)0x60E2,x","eCANA MOTO17"); - GEL_WatchAdd("*(long *)0x6188,x","eCANA MID17"); - GEL_WatchAdd("*(long *)0x618A,x","eCANA MCF17"); - GEL_WatchAdd("*(long *)0x618C,x","eCANA MDL17"); - GEL_WatchAdd("*(long *)0x618E,x","eCANA MDH17"); -} -hotmenu eCAN_A_Mailbox_18_to_19_Regs() -{ - GEL_WatchAdd("*(long *)0x6064,x","eCANA LAM18"); - GEL_WatchAdd("*(long *)0x60A4,x","eCANA MOTS18"); - GEL_WatchAdd("*(long *)0x60E4,x","eCANA MOTO18"); - GEL_WatchAdd("*(long *)0x6190,x","eCANA MID18"); - GEL_WatchAdd("*(long *)0x6192,x","eCANA MCF18"); - GEL_WatchAdd("*(long *)0x6194,x","eCANA MDL18"); - GEL_WatchAdd("*(long *)0x6196,x","eCANA MDH18"); - - GEL_WatchAdd("*(long *)0x6066,x","eCANA LAM19"); - GEL_WatchAdd("*(long *)0x60A6,x","eCANA MOTS19"); - GEL_WatchAdd("*(long *)0x60E6,x","eCANA MOTO19"); - GEL_WatchAdd("*(long *)0x6198,x","eCANA MID19"); - GEL_WatchAdd("*(long *)0x619A,x","eCANA MCF19"); - GEL_WatchAdd("*(long *)0x619C,x","eCANA MDL19"); - GEL_WatchAdd("*(long *)0x619E,x","eCANA MDH19"); -} -hotmenu eCAN_A_Mailbox_20_to_21_Regs() -{ - GEL_WatchAdd("*(long *)0x6068,x","eCANA LAM20"); - GEL_WatchAdd("*(long *)0x60A8,x","eCANA MOTS20"); - GEL_WatchAdd("*(long *)0x60E8,x","eCANA MOTO20"); - GEL_WatchAdd("*(long *)0x61A0,x","eCANA MID20"); - GEL_WatchAdd("*(long *)0x61A2,x","eCANA MCF20"); - GEL_WatchAdd("*(long *)0x61A4,x","eCANA MDL20"); - GEL_WatchAdd("*(long *)0x61A6,x","eCANA MDH20"); - - GEL_WatchAdd("*(long *)0x606A,x","eCANA LAM21"); - GEL_WatchAdd("*(long *)0x60AA,x","eCANA MOTS21"); - GEL_WatchAdd("*(long *)0x60EA,x","eCANA MOTO21"); - GEL_WatchAdd("*(long *)0x61A8,x","eCANA MID21"); - GEL_WatchAdd("*(long *)0x61AA,x","eCANA MCF21"); - GEL_WatchAdd("*(long *)0x61AC,x","eCANA MDL21"); - GEL_WatchAdd("*(long *)0x61AE,x","eCANA MDH21"); -} -hotmenu eCAN_A_Mailbox_22_to_23_Regs() -{ - GEL_WatchAdd("*(long *)0x606C,x","eCANA LAM22"); - GEL_WatchAdd("*(long *)0x60AC,x","eCANA MOTS22"); - GEL_WatchAdd("*(long *)0x60EC,x","eCANA MOTO22"); - GEL_WatchAdd("*(long *)0x61B0,x","eCANA MID22"); - GEL_WatchAdd("*(long *)0x61B2,x","eCANA MCF22"); - GEL_WatchAdd("*(long *)0x61B4,x","eCANA MDL22"); - GEL_WatchAdd("*(long *)0x61B6,x","eCANA MDH22"); - - GEL_WatchAdd("*(long *)0x606E,x","eCANA LAM23"); - GEL_WatchAdd("*(long *)0x60AE,x","eCANA MOTS23"); - GEL_WatchAdd("*(long *)0x60EE,x","eCANA MOTO23"); - GEL_WatchAdd("*(long *)0x61B8,x","eCANA MID23"); - GEL_WatchAdd("*(long *)0x61BA,x","eCANA MCF23"); - GEL_WatchAdd("*(long *)0x61BC,x","eCANA MDL23"); - GEL_WatchAdd("*(long *)0x61BE,x","eCANA MDH23"); -} -hotmenu eCAN_A_Mailbox_24_to_25_Regs() -{ - GEL_WatchAdd("*(long *)0x6070,x","eCANA LAM24"); - GEL_WatchAdd("*(long *)0x60B0,x","eCANA MOTS24"); - GEL_WatchAdd("*(long *)0x60F0,x","eCANA MOTO24"); - GEL_WatchAdd("*(long *)0x61C0,x","eCANA MID24"); - GEL_WatchAdd("*(long *)0x61C2,x","eCANA MCF24"); - GEL_WatchAdd("*(long *)0x61C4,x","eCANA MDL24"); - GEL_WatchAdd("*(long *)0x61C6,x","eCANA MDH24"); - - GEL_WatchAdd("*(long *)0x6072,x","eCANA LAM25"); - GEL_WatchAdd("*(long *)0x60B2,x","eCANA MOTS25"); - GEL_WatchAdd("*(long *)0x60F2,x","eCANA MOTO25"); - GEL_WatchAdd("*(long *)0x61C8,x","eCANA MID25"); - GEL_WatchAdd("*(long *)0x61CA,x","eCANA MCF25"); - GEL_WatchAdd("*(long *)0x61CC,x","eCANA MDL25"); - GEL_WatchAdd("*(long *)0x61CE,x","eCANA MDH25"); -} -hotmenu eCAN_A_Mailbox_26_to_27_Regs() -{ - GEL_WatchAdd("*(long *)0x6074,x","eCANA LAM26"); - GEL_WatchAdd("*(long *)0x60B4,x","eCANA MOTS26"); - GEL_WatchAdd("*(long *)0x60F4,x","eCANA MOTO26"); - GEL_WatchAdd("*(long *)0x61D0,x","eCANA MID26"); - GEL_WatchAdd("*(long *)0x61D2,x","eCANA MCF26"); - GEL_WatchAdd("*(long *)0x61D4,x","eCANA MDL26"); - GEL_WatchAdd("*(long *)0x61D6,x","eCANA MDH26"); - - GEL_WatchAdd("*(long *)0x6076,x","eCANA LAM27"); - GEL_WatchAdd("*(long *)0x60B6,x","eCANA MOTS27"); - GEL_WatchAdd("*(long *)0x60F6,x","eCANA MOTO27"); - GEL_WatchAdd("*(long *)0x61D8,x","eCANA MID27"); - GEL_WatchAdd("*(long *)0x61DA,x","eCANA MCF27"); - GEL_WatchAdd("*(long *)0x61DC,x","eCANA MDL27"); - GEL_WatchAdd("*(long *)0x61DE,x","eCANA MDH27"); -} -hotmenu eCAN_A_Mailbox_28_to_29_Regs() -{ - GEL_WatchAdd("*(long *)0x6078,x","eCANA LAM28"); - GEL_WatchAdd("*(long *)0x60B8,x","eCANA MOTS28"); - GEL_WatchAdd("*(long *)0x60F8,x","eCANA MOTO28"); - GEL_WatchAdd("*(long *)0x61E0,x","eCANA MID28"); - GEL_WatchAdd("*(long *)0x61E2,x","eCANA MCF28"); - GEL_WatchAdd("*(long *)0x61E4,x","eCANA MDL28"); - GEL_WatchAdd("*(long *)0x61E6,x","eCANA MDH28"); - - GEL_WatchAdd("*(long *)0x607A,x","eCANA LAM29"); - GEL_WatchAdd("*(long *)0x60BA,x","eCANA MOTS29"); - GEL_WatchAdd("*(long *)0x60FA,x","eCANA MOTO29"); - GEL_WatchAdd("*(long *)0x61E8,x","eCANA MID29"); - GEL_WatchAdd("*(long *)0x61EA,x","eCANA MCF29"); - GEL_WatchAdd("*(long *)0x61EC,x","eCANA MDL29"); - GEL_WatchAdd("*(long *)0x61EE,x","eCANA MDH29"); -} -hotmenu eCAN_A_Mailbox_30_to_31_Regs() -{ - GEL_WatchAdd("*(long *)0x607C,x","eCANA LAM30"); - GEL_WatchAdd("*(long *)0x60BC,x","eCANA MOTS30"); - GEL_WatchAdd("*(long *)0x60FC,x","eCANA MOTO30"); - GEL_WatchAdd("*(long *)0x61F0,x","eCANA MID30"); - GEL_WatchAdd("*(long *)0x61F2,x","eCANA MCF30"); - GEL_WatchAdd("*(long *)0x61F4,x","eCANA MDL30"); - GEL_WatchAdd("*(long *)0x61F6,x","eCANA MDH30"); - - GEL_WatchAdd("*(long *)0x607E,x","eCANA LAM31"); - GEL_WatchAdd("*(long *)0x60BE,x","eCANA MOTS31"); - GEL_WatchAdd("*(long *)0x60FE,x","eCANA MOTO31"); - GEL_WatchAdd("*(long *)0x61F8,x","eCANA MID31"); - GEL_WatchAdd("*(long *)0x61FA,x","eCANA MCF31"); - GEL_WatchAdd("*(long *)0x61FC,x","eCANA MDL31"); - GEL_WatchAdd("*(long *)0x61FE,x","eCANA MDH31"); -} -hotmenu eCAN_B_Global_Regs() -{ - GEL_WatchAdd("*(long *)0x6200,x","eCANB CANME"); - GEL_WatchAdd("*(long *)0x6202,x","eCANB CANMD"); - GEL_WatchAdd("*(long *)0x6204,x","eCANB CANTRS"); - GEL_WatchAdd("*(long *)0x6206,x","eCANB CANTRR"); - GEL_WatchAdd("*(long *)0x6208,x","eCANB CANTA"); - GEL_WatchAdd("*(long *)0x620A,x","eCANB CANAA"); - GEL_WatchAdd("*(long *)0x620C,x","eCANB CANRMP"); - GEL_WatchAdd("*(long *)0x620E,x","eCANB CANRML"); - GEL_WatchAdd("*(long *)0x6210,x","eCANB CANRFP"); - GEL_WatchAdd("*(long *)0x6214,x","eCANB CANMC"); - GEL_WatchAdd("*(long *)0x6216,x","eCANB CANBTC"); - GEL_WatchAdd("*(long *)0x6218,x","eCANB CANES"); - GEL_WatchAdd("*(long *)0x621A,x","eCANB CANTEC"); - GEL_WatchAdd("*(long *)0x621C,x","eCANB CANREC"); - GEL_WatchAdd("*(long *)0x621E,x","eCANB CANGIF0"); - GEL_WatchAdd("*(long *)0x6220,x","eCANB CANGIM"); - GEL_WatchAdd("*(long *)0x6222,x","eCANB CANGIF1"); - GEL_WatchAdd("*(long *)0x6224,x","eCANB CANMIM"); - GEL_WatchAdd("*(long *)0x6226,x","eCANB CANMIL"); - GEL_WatchAdd("*(long *)0x6228,x","eCANB CANOPC"); - GEL_WatchAdd("*(long *)0x622A,x","eCANB CANTIOC"); - GEL_WatchAdd("*(long *)0x622C,x","eCANB CANRIOC"); - GEL_WatchAdd("*(long *)0x622E,x","eCANB CANLNT"); - GEL_WatchAdd("*(long *)0x6230,x","eCANB CANTOC"); - GEL_WatchAdd("*(long *)0x6232,x","eCANB CANTOS"); -} -hotmenu eCAN_B_Mailbox_0_to_1_Regs() -{ - GEL_WatchAdd("*(long *)0x6240,x","eCANB LAM0"); - GEL_WatchAdd("*(long *)0x6280,x","eCANB MOTS0"); - GEL_WatchAdd("*(long *)0x62C0,x","eCANB MOTO0"); - GEL_WatchAdd("*(long *)0x6300,x","eCANB MID0"); - GEL_WatchAdd("*(long *)0x6302,x","eCANB MCF0"); - GEL_WatchAdd("*(long *)0x6304,x","eCANB MDL0"); - GEL_WatchAdd("*(long *)0x6306,x","eCANB MDH0"); - - GEL_WatchAdd("*(long *)0x6242,x","eCANB LAM1"); - GEL_WatchAdd("*(long *)0x6282,x","eCANB MOTS1"); - GEL_WatchAdd("*(long *)0x62C2,x","eCANB MOTO1"); - GEL_WatchAdd("*(long *)0x6308,x","eCANB MID1"); - GEL_WatchAdd("*(long *)0x630A,x","eCANB MCF1"); - GEL_WatchAdd("*(long *)0x630C,x","eCANB MDL1"); - GEL_WatchAdd("*(long *)0x630E,x","eCANB MDH1"); -} -hotmenu eCAN_B_Mailbox_2_to_3_Regs() -{ - GEL_WatchAdd("*(long *)0x6244,x","eCANB LAM2"); - GEL_WatchAdd("*(long *)0x6284,x","eCANB MOTS2"); - GEL_WatchAdd("*(long *)0x62C4,x","eCANB MOTO2"); - GEL_WatchAdd("*(long *)0x6310,x","eCANB MID2"); - GEL_WatchAdd("*(long *)0x6312,x","eCANB MCF2"); - GEL_WatchAdd("*(long *)0x6314,x","eCANB MDL2"); - GEL_WatchAdd("*(long *)0x6316,x","eCANB MDH2"); - - GEL_WatchAdd("*(long *)0x6246,x","eCANB LAM3"); - GEL_WatchAdd("*(long *)0x6286,x","eCANB MOTS3"); - GEL_WatchAdd("*(long *)0x62C6,x","eCANB MOTO3"); - GEL_WatchAdd("*(long *)0x6318,x","eCANB MID3"); - GEL_WatchAdd("*(long *)0x631A,x","eCANB MCF3"); - GEL_WatchAdd("*(long *)0x631C,x","eCANB MDL3"); - GEL_WatchAdd("*(long *)0x631E,x","eCANB MDH3"); -} -hotmenu eCAN_B_Mailbox_4_to_5_Regs() -{ - GEL_WatchAdd("*(long *)0x6248,x","eCANB LAM4"); - GEL_WatchAdd("*(long *)0x6288,x","eCANB MOTS4"); - GEL_WatchAdd("*(long *)0x62C8,x","eCANB MOTO4"); - GEL_WatchAdd("*(long *)0x6320,x","eCANB MID4"); - GEL_WatchAdd("*(long *)0x6322,x","eCANB MCF4"); - GEL_WatchAdd("*(long *)0x6324,x","eCANB MDL4"); - GEL_WatchAdd("*(long *)0x6326,x","eCANB MDH4"); - - GEL_WatchAdd("*(long *)0x624A,x","eCANB LAM5"); - GEL_WatchAdd("*(long *)0x628A,x","eCANB MOTS5"); - GEL_WatchAdd("*(long *)0x62CA,x","eCANB MOTO5"); - GEL_WatchAdd("*(long *)0x6328,x","eCANB MID5"); - GEL_WatchAdd("*(long *)0x632A,x","eCANB MCF5"); - GEL_WatchAdd("*(long *)0x632C,x","eCANB MDL5"); - GEL_WatchAdd("*(long *)0x632E,x","eCANB MDH5"); -} -hotmenu eCAN_B_Mailbox_6_to_7_Regs() -{ - GEL_WatchAdd("*(long *)0x624C,x","eCANB LAM6"); - GEL_WatchAdd("*(long *)0x628C,x","eCANB MOTS6"); - GEL_WatchAdd("*(long *)0x62CC,x","eCANB MOTO6"); - GEL_WatchAdd("*(long *)0x6330,x","eCANB MID6"); - GEL_WatchAdd("*(long *)0x6332,x","eCANB MCF6"); - GEL_WatchAdd("*(long *)0x6334,x","eCANB MDL6"); - GEL_WatchAdd("*(long *)0x6336,x","eCANB MDH6"); - - GEL_WatchAdd("*(long *)0x624E,x","eCANB LAM7"); - GEL_WatchAdd("*(long *)0x628E,x","eCANB MOTS7"); - GEL_WatchAdd("*(long *)0x62CE,x","eCANB MOTO7"); - GEL_WatchAdd("*(long *)0x6338,x","eCANB MID7"); - GEL_WatchAdd("*(long *)0x633A,x","eCANB MCF7"); - GEL_WatchAdd("*(long *)0x633C,x","eCANB MDL7"); - GEL_WatchAdd("*(long *)0x633E,x","eCANB MDH7"); -} -hotmenu eCAN_B_Mailbox_8_to_9_Regs() -{ - GEL_WatchAdd("*(long *)0x6250,x","eCANB LAM8"); - GEL_WatchAdd("*(long *)0x6290,x","eCANB MOTS8"); - GEL_WatchAdd("*(long *)0x62D0,x","eCANB MOTO8"); - GEL_WatchAdd("*(long *)0x6340,x","eCANB MID8"); - GEL_WatchAdd("*(long *)0x6342,x","eCANB MCF8"); - GEL_WatchAdd("*(long *)0x6344,x","eCANB MDL8"); - GEL_WatchAdd("*(long *)0x6346,x","eCANB MDH8"); - - GEL_WatchAdd("*(long *)0x6252,x","eCANB LAM9"); - GEL_WatchAdd("*(long *)0x6292,x","eCANB MOTS9"); - GEL_WatchAdd("*(long *)0x62D2,x","eCANB MOTO9"); - GEL_WatchAdd("*(long *)0x6348,x","eCANB MID9"); - GEL_WatchAdd("*(long *)0x634A,x","eCANB MCF9"); - GEL_WatchAdd("*(long *)0x634C,x","eCANB MDL9"); - GEL_WatchAdd("*(long *)0x634E,x","eCANB MDH9"); -} -hotmenu eCAN_B_Mailbox_10_to_11_Regs() -{ - GEL_WatchAdd("*(long *)0x6254,x","eCANB LAM10"); - GEL_WatchAdd("*(long *)0x6294,x","eCANB MOTS10"); - GEL_WatchAdd("*(long *)0x62D4,x","eCANB MOTO10"); - GEL_WatchAdd("*(long *)0x6350,x","eCANB MID10"); - GEL_WatchAdd("*(long *)0x6352,x","eCANB MCF10"); - GEL_WatchAdd("*(long *)0x6354,x","eCANB MDL10"); - GEL_WatchAdd("*(long *)0x6356,x","eCANB MDH10"); - - GEL_WatchAdd("*(long *)0x6256,x","eCANB LAM11"); - GEL_WatchAdd("*(long *)0x6296,x","eCANB MOTS11"); - GEL_WatchAdd("*(long *)0x62D6,x","eCANB MOTO11"); - GEL_WatchAdd("*(long *)0x6358,x","eCANB MID11"); - GEL_WatchAdd("*(long *)0x635A,x","eCANB MCF11"); - GEL_WatchAdd("*(long *)0x635C,x","eCANB MDL11"); - GEL_WatchAdd("*(long *)0x635E,x","eCANB MDH11"); -} -hotmenu eCAN_B_Mailbox_12_to_13_Regs() -{ - GEL_WatchAdd("*(long *)0x6258,x","eCANB LAM12"); - GEL_WatchAdd("*(long *)0x6298,x","eCANB MOTS12"); - GEL_WatchAdd("*(long *)0x62D8,x","eCANB MOTO12"); - GEL_WatchAdd("*(long *)0x6360,x","eCANB MID12"); - GEL_WatchAdd("*(long *)0x6362,x","eCANB MCF12"); - GEL_WatchAdd("*(long *)0x6364,x","eCANB MDL12"); - GEL_WatchAdd("*(long *)0x6366,x","eCANB MDH12"); - - GEL_WatchAdd("*(long *)0x625A,x","eCANB LAM13"); - GEL_WatchAdd("*(long *)0x629A,x","eCANB MOTS13"); - GEL_WatchAdd("*(long *)0x62DA,x","eCANB MOTO13"); - GEL_WatchAdd("*(long *)0x6368,x","eCANB MID13"); - GEL_WatchAdd("*(long *)0x636A,x","eCANB MCF13"); - GEL_WatchAdd("*(long *)0x636C,x","eCANB MDL13"); - GEL_WatchAdd("*(long *)0x636E,x","eCANB MDH13"); -} -hotmenu eCAN_B_Mailbox_14_to_15_Regs() -{ - GEL_WatchAdd("*(long *)0x625C,x","eCANB LAM14"); - GEL_WatchAdd("*(long *)0x629C,x","eCANB MOTS14"); - GEL_WatchAdd("*(long *)0x62DC,x","eCANB MOTO14"); - GEL_WatchAdd("*(long *)0x6370,x","eCANB MID14"); - GEL_WatchAdd("*(long *)0x6372,x","eCANB MCF14"); - GEL_WatchAdd("*(long *)0x6374,x","eCANB MDL14"); - GEL_WatchAdd("*(long *)0x6376,x","eCANB MDH14"); - - GEL_WatchAdd("*(long *)0x625E,x","eCANB LAM15"); - GEL_WatchAdd("*(long *)0x629E,x","eCANB MOTS15"); - GEL_WatchAdd("*(long *)0x62DE,x","eCANB MOTO15"); - GEL_WatchAdd("*(long *)0x6378,x","eCANB MID15"); - GEL_WatchAdd("*(long *)0x637A,x","eCANB MCF15"); - GEL_WatchAdd("*(long *)0x637C,x","eCANB MDL15"); - GEL_WatchAdd("*(long *)0x637E,x","eCANB MDH15"); -} -hotmenu eCAN_B_Mailbox_16_to_17_Regs() -{ - GEL_WatchAdd("*(long *)0x6260,x","eCANB LAM16"); - GEL_WatchAdd("*(long *)0x62A0,x","eCANB MOTS16"); - GEL_WatchAdd("*(long *)0x62E0,x","eCANB MOTO16"); - GEL_WatchAdd("*(long *)0x6380,x","eCANB MID16"); - GEL_WatchAdd("*(long *)0x6382,x","eCANB MCF16"); - GEL_WatchAdd("*(long *)0x6384,x","eCANB MDL16"); - GEL_WatchAdd("*(long *)0x6386,x","eCANB MDH16"); - - GEL_WatchAdd("*(long *)0x6262,x","eCANB LAM17"); - GEL_WatchAdd("*(long *)0x62A2,x","eCANB MOTS17"); - GEL_WatchAdd("*(long *)0x62E2,x","eCANB MOTO17"); - GEL_WatchAdd("*(long *)0x6388,x","eCANB MID17"); - GEL_WatchAdd("*(long *)0x638A,x","eCANB MCF17"); - GEL_WatchAdd("*(long *)0x638C,x","eCANB MDL17"); - GEL_WatchAdd("*(long *)0x638E,x","eCANB MDH17"); -} -hotmenu eCAN_B_Mailbox_18_to_19_Regs() -{ - GEL_WatchAdd("*(long *)0x6264,x","eCANB LAM18"); - GEL_WatchAdd("*(long *)0x62A4,x","eCANB MOTS18"); - GEL_WatchAdd("*(long *)0x62E4,x","eCANB MOTO18"); - GEL_WatchAdd("*(long *)0x6390,x","eCANB MID18"); - GEL_WatchAdd("*(long *)0x6392,x","eCANB MCF18"); - GEL_WatchAdd("*(long *)0x6394,x","eCANB MDL18"); - GEL_WatchAdd("*(long *)0x6396,x","eCANB MDH18"); - - GEL_WatchAdd("*(long *)0x6266,x","eCANB LAM19"); - GEL_WatchAdd("*(long *)0x62A6,x","eCANB MOTS19"); - GEL_WatchAdd("*(long *)0x62E6,x","eCANB MOTO19"); - GEL_WatchAdd("*(long *)0x6398,x","eCANB MID19"); - GEL_WatchAdd("*(long *)0x639A,x","eCANB MCF19"); - GEL_WatchAdd("*(long *)0x639C,x","eCANB MDL19"); - GEL_WatchAdd("*(long *)0x639E,x","eCANB MDH19"); -} -hotmenu eCAN_B_Mailbox_20_to_21_Regs() -{ - GEL_WatchAdd("*(long *)0x6268,x","eCANB LAM20"); - GEL_WatchAdd("*(long *)0x62A8,x","eCANB MOTS20"); - GEL_WatchAdd("*(long *)0x62E8,x","eCANB MOTO20"); - GEL_WatchAdd("*(long *)0x63A0,x","eCANB MID20"); - GEL_WatchAdd("*(long *)0x63A2,x","eCANB MCF20"); - GEL_WatchAdd("*(long *)0x63A4,x","eCANB MDL20"); - GEL_WatchAdd("*(long *)0x63A6,x","eCANB MDH20"); - - GEL_WatchAdd("*(long *)0x626A,x","eCANB LAM21"); - GEL_WatchAdd("*(long *)0x62AA,x","eCANB MOTS21"); - GEL_WatchAdd("*(long *)0x62EA,x","eCANB MOTO21"); - GEL_WatchAdd("*(long *)0x63A8,x","eCANB MID21"); - GEL_WatchAdd("*(long *)0x63AA,x","eCANB MCF21"); - GEL_WatchAdd("*(long *)0x63AC,x","eCANB MDL21"); - GEL_WatchAdd("*(long *)0x63AE,x","eCANB MDH21"); -} -hotmenu eCAN_B_Mailbox_22_to_23_Regs() -{ - GEL_WatchAdd("*(long *)0x626C,x","eCANB LAM22"); - GEL_WatchAdd("*(long *)0x62AC,x","eCANB MOTS22"); - GEL_WatchAdd("*(long *)0x62EC,x","eCANB MOTO22"); - GEL_WatchAdd("*(long *)0x63B0,x","eCANB MID22"); - GEL_WatchAdd("*(long *)0x63B2,x","eCANB MCF22"); - GEL_WatchAdd("*(long *)0x63B4,x","eCANB MDL22"); - GEL_WatchAdd("*(long *)0x63B6,x","eCANB MDH22"); - - GEL_WatchAdd("*(long *)0x626E,x","eCANB LAM23"); - GEL_WatchAdd("*(long *)0x62AE,x","eCANB MOTS23"); - GEL_WatchAdd("*(long *)0x62EE,x","eCANB MOTO23"); - GEL_WatchAdd("*(long *)0x63B8,x","eCANB MID23"); - GEL_WatchAdd("*(long *)0x63BA,x","eCANB MCF23"); - GEL_WatchAdd("*(long *)0x63BC,x","eCANB MDL23"); - GEL_WatchAdd("*(long *)0x63BE,x","eCANB MDH23"); -} -hotmenu eCAN_B_Mailbox_24_to_25_Regs() -{ - GEL_WatchAdd("*(long *)0x6270,x","eCANB LAM24"); - GEL_WatchAdd("*(long *)0x62B0,x","eCANB MOTS24"); - GEL_WatchAdd("*(long *)0x62F0,x","eCANB MOTO24"); - GEL_WatchAdd("*(long *)0x63C0,x","eCANB MID24"); - GEL_WatchAdd("*(long *)0x63C2,x","eCANB MCF24"); - GEL_WatchAdd("*(long *)0x63C4,x","eCANB MDL24"); - GEL_WatchAdd("*(long *)0x63C6,x","eCANB MDH24"); - - GEL_WatchAdd("*(long *)0x6272,x","eCANB LAM25"); - GEL_WatchAdd("*(long *)0x62B2,x","eCANB MOTS25"); - GEL_WatchAdd("*(long *)0x62F2,x","eCANB MOTO25"); - GEL_WatchAdd("*(long *)0x63C8,x","eCANB MID25"); - GEL_WatchAdd("*(long *)0x63CA,x","eCANB MCF25"); - GEL_WatchAdd("*(long *)0x63CC,x","eCANB MDL25"); - GEL_WatchAdd("*(long *)0x63CE,x","eCANB MDH25"); -} -hotmenu eCAN_B_Mailbox_26_to_27_Regs() -{ - GEL_WatchAdd("*(long *)0x6274,x","eCANB LAM26"); - GEL_WatchAdd("*(long *)0x62B4,x","eCANB MOTS26"); - GEL_WatchAdd("*(long *)0x62F4,x","eCANB MOTO26"); - GEL_WatchAdd("*(long *)0x63D0,x","eCANB MID26"); - GEL_WatchAdd("*(long *)0x63D2,x","eCANB MCF26"); - GEL_WatchAdd("*(long *)0x63D4,x","eCANB MDL26"); - GEL_WatchAdd("*(long *)0x63D6,x","eCANB MDH26"); - - GEL_WatchAdd("*(long *)0x6276,x","eCANB LAM27"); - GEL_WatchAdd("*(long *)0x62B6,x","eCANB MOTS27"); - GEL_WatchAdd("*(long *)0x62F6,x","eCANB MOTO27"); - GEL_WatchAdd("*(long *)0x63D8,x","eCANB MID27"); - GEL_WatchAdd("*(long *)0x63DA,x","eCANB MCF27"); - GEL_WatchAdd("*(long *)0x63DC,x","eCANB MDL27"); - GEL_WatchAdd("*(long *)0x63DE,x","eCANB MDH27"); -} -hotmenu eCAN_B_Mailbox_28_to_29_Regs() -{ - GEL_WatchAdd("*(long *)0x6278,x","eCANB LAM28"); - GEL_WatchAdd("*(long *)0x62B8,x","eCANB MOTS28"); - GEL_WatchAdd("*(long *)0x62F8,x","eCANB MOTO28"); - GEL_WatchAdd("*(long *)0x63E0,x","eCANB MID28"); - GEL_WatchAdd("*(long *)0x63E2,x","eCANB MCF28"); - GEL_WatchAdd("*(long *)0x63E4,x","eCANB MDL28"); - GEL_WatchAdd("*(long *)0x63E6,x","eCANB MDH28"); - - GEL_WatchAdd("*(long *)0x627A,x","eCANB LAM29"); - GEL_WatchAdd("*(long *)0x62BA,x","eCANB MOTS29"); - GEL_WatchAdd("*(long *)0x62FA,x","eCANB MOTO29"); - GEL_WatchAdd("*(long *)0x63E8,x","eCANB MID29"); - GEL_WatchAdd("*(long *)0x63EA,x","eCANB MCF29"); - GEL_WatchAdd("*(long *)0x63EC,x","eCANB MDL29"); - GEL_WatchAdd("*(long *)0x63EE,x","eCANB MDH29"); -} -hotmenu eCAN_B_Mailbox_30_to_31_Regs() -{ - GEL_WatchAdd("*(long *)0x627C,x","eCANB LAM30"); - GEL_WatchAdd("*(long *)0x62BC,x","eCANB MOTS30"); - GEL_WatchAdd("*(long *)0x62FC,x","eCANB MOTO30"); - GEL_WatchAdd("*(long *)0x63F0,x","eCANB MID30"); - GEL_WatchAdd("*(long *)0x63F2,x","eCANB MCF30"); - GEL_WatchAdd("*(long *)0x63F4,x","eCANB MDL30"); - GEL_WatchAdd("*(long *)0x63F6,x","eCANB MDH30"); - - GEL_WatchAdd("*(long *)0x627E,x","eCANB LAM31"); - GEL_WatchAdd("*(long *)0x62BE,x","eCANB MOTS31"); - GEL_WatchAdd("*(long *)0x62FE,x","eCANB MOTO31"); - GEL_WatchAdd("*(long *)0x63F8,x","eCANB MID31"); - GEL_WatchAdd("*(long *)0x63FA,x","eCANB MCF31"); - GEL_WatchAdd("*(long *)0x63FC,x","eCANB MDL31"); - GEL_WatchAdd("*(long *)0x63FE,x","eCANB MDH31"); -} - - -/********************************************************************/ -/* Enhanced Capture Registers */ -/********************************************************************/ -menuitem "Watch eCAP Registers"; - -hotmenu eCAP1_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6A00,x","eCAP1 TSCNT"); - GEL_WatchAdd("*(long *)0x6A02,x","eCAP1 CNTPHS"); - GEL_WatchAdd("*(long *)0x6A04,x","eCAP1 CAP1"); - GEL_WatchAdd("*(long *)0x6A06,x","eCAP1 CAP2"); - GEL_WatchAdd("*(long *)0x6A08,x","eCAP1 CAP3"); - GEL_WatchAdd("*(long *)0x6A0A,x","eCAP1 CAP4"); - GEL_WatchAdd("*0x6A14,x","eCAP1 ECCTL1"); - GEL_WatchAdd("*0x6A15,x","eCAP1 ECCTL2"); - GEL_WatchAdd("*0x6A16,x","eCAP1 ECEINT"); - GEL_WatchAdd("*0x6A17,x","eCAP1 ECFLG"); - GEL_WatchAdd("*0x6A18,x","eCAP1 ECCLR"); - GEL_WatchAdd("*0x6A19,x","eCAP1 ECFRC"); -} -hotmenu eCAP2_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6A20,x","eCAP2 TSCNT"); - GEL_WatchAdd("*(long *)0x6A22,x","eCAP2 CNTPHS"); - GEL_WatchAdd("*(long *)0x6A24,x","eCAP2 CAP1"); - GEL_WatchAdd("*(long *)0x6A26,x","eCAP2 CAP2"); - GEL_WatchAdd("*(long *)0x6A28,x","eCAP2 CAP3"); - GEL_WatchAdd("*(long *)0x6A2A,x","eCAP2 CAP4"); - GEL_WatchAdd("*0x6A34,x","eCAP2 ECCTL1"); - GEL_WatchAdd("*0x6A35,x","eCAP2 ECCTL2"); - GEL_WatchAdd("*0x6A36,x","eCAP2 ECEINT"); - GEL_WatchAdd("*0x6A37,x","eCAP2 ECFLG"); - GEL_WatchAdd("*0x6A38,x","eCAP2 ECCLR"); - GEL_WatchAdd("*0x6A39,x","eCAP2 ECFRC"); -} -hotmenu eCAP3_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6A40,x","eCAP3 TSCNT"); - GEL_WatchAdd("*(long *)0x6A42,x","eCAP3 CNTPHS"); - GEL_WatchAdd("*(long *)0x6A44,x","eCAP3 CAP1"); - GEL_WatchAdd("*(long *)0x6A46,x","eCAP3 CAP2"); - GEL_WatchAdd("*(long *)0x6A48,x","eCAP3 CAP3"); - GEL_WatchAdd("*(long *)0x6A4A,x","eCAP3 CAP4"); - GEL_WatchAdd("*0x6A54,x","eCAP3 ECCTL1"); - GEL_WatchAdd("*0x6A55,x","eCAP3 ECCTL2"); - GEL_WatchAdd("*0x6A56,x","eCAP3 ECEINT"); - GEL_WatchAdd("*0x6A57,x","eCAP3 ECFLG"); - GEL_WatchAdd("*0x6A58,x","eCAP3 ECCLR"); - GEL_WatchAdd("*0x6A59,x","eCAP3 ECFRC"); -} -hotmenu eCAP4_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6A60,x","eCAP4 TSCNT"); - GEL_WatchAdd("*(long *)0x6A62,x","eCAP4 CNTPHS"); - GEL_WatchAdd("*(long *)0x6A64,x","eCAP4 CAP1"); - GEL_WatchAdd("*(long *)0x6A66,x","eCAP4 CAP2"); - GEL_WatchAdd("*(long *)0x6A68,x","eCAP4 CAP3"); - GEL_WatchAdd("*(long *)0x6A6A,x","eCAP4 CAP4"); - GEL_WatchAdd("*0x6A74,x","eCAP4 ECCTL1"); - GEL_WatchAdd("*0x6A75,x","eCAP4 ECCTL2"); - GEL_WatchAdd("*0x6A76,x","eCAP4 ECEINT"); - GEL_WatchAdd("*0x6A77,x","eCAP4 ECFLG"); - GEL_WatchAdd("*0x6A78,x","eCAP4 ECCLR"); - GEL_WatchAdd("*0x6A79,x","eCAP4 ECFRC"); -} -hotmenu eCAP5_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6A80,x","eCAP5 TSCNT"); - GEL_WatchAdd("*(long *)0x6A82,x","eCAP5 CNTPHS"); - GEL_WatchAdd("*(long *)0x6A84,x","eCAP5 CAP1"); - GEL_WatchAdd("*(long *)0x6A86,x","eCAP5 CAP2"); - GEL_WatchAdd("*(long *)0x6A88,x","eCAP5 CAP3"); - GEL_WatchAdd("*(long *)0x6A8A,x","eCAP5 CAP4"); - GEL_WatchAdd("*0x6A94,x","eCAP5 ECCTL1"); - GEL_WatchAdd("*0x6A95,x","eCAP5 ECCTL2"); - GEL_WatchAdd("*0x6A96,x","eCAP5 ECEINT"); - GEL_WatchAdd("*0x6A97,x","eCAP5 ECFLG"); - GEL_WatchAdd("*0x6A98,x","eCAP5 ECCLR"); - GEL_WatchAdd("*0x6A99,x","eCAP5 ECFRC"); -} -hotmenu eCAP6_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6AA0,x","eCAP6 TSCNT"); - GEL_WatchAdd("*(long *)0x6AA2,x","eCAP6 CNTPHS"); - GEL_WatchAdd("*(long *)0x6AA4,x","eCAP6 CAP1"); - GEL_WatchAdd("*(long *)0x6AA6,x","eCAP6 CAP2"); - GEL_WatchAdd("*(long *)0x6AA8,x","eCAP6 CAP3"); - GEL_WatchAdd("*(long *)0x6AAA,x","eCAP6 CAP4"); - GEL_WatchAdd("*0x6AB4,x","eCAP6 ECCTL1"); - GEL_WatchAdd("*0x6AB5,x","eCAP6 ECCTL2"); - GEL_WatchAdd("*0x6AB6,x","eCAP6 ECEINT"); - GEL_WatchAdd("*0x6AB7,x","eCAP6 ECFLG"); - GEL_WatchAdd("*0x6AB8,x","eCAP6 ECCLR"); - GEL_WatchAdd("*0x6AB9,x","eCAP6 ECFRC"); -} - - -/********************************************************************/ -/* Enhanced PWM Registers */ -/********************************************************************/ -menuitem "Watch ePWM Registers"; - -hotmenu ePWM1_All_Regs() -{ - GEL_WatchAdd("*0x6800,x","ePWM1 TBCTL"); - GEL_WatchAdd("*0x6801,x","ePWM1 TBSTS"); - GEL_WatchAdd("*0x6802,x","ePWM1 TBPHSHR"); - GEL_WatchAdd("*0x6803,x","ePWM1 TBPHS"); - GEL_WatchAdd("*0x6804,x","ePWM1 TBCTR"); - GEL_WatchAdd("*0x6805,x","ePWM1 TBPRD"); - GEL_WatchAdd("*0x6807,x","ePWM1 CMPCTL"); - GEL_WatchAdd("*0x6808,x","ePWM1 CMPAHR"); - GEL_WatchAdd("*0x6809,x","ePWM1 CMPA"); - GEL_WatchAdd("*0x680A,x","ePWM1 CMPB"); - GEL_WatchAdd("*0x680B,x","ePWM1 AQCTLA"); - GEL_WatchAdd("*0x680C,x","ePWM1 AQCTLB"); - GEL_WatchAdd("*0x680D,x","ePWM1 AQSFRC"); - GEL_WatchAdd("*0x680E,x","ePWM1 AQCSFRC"); - GEL_WatchAdd("*0x680F,x","ePWM1 DBCTL"); - GEL_WatchAdd("*0x6810,x","ePWM1 DBRED"); - GEL_WatchAdd("*0x6811,x","ePWM1 DBFED"); - GEL_WatchAdd("*0x6812,x","ePWM1 TZSEL"); - GEL_WatchAdd("*0x6813,x","ePWM1 TZDCSEL"); - GEL_WatchAdd("*0x6814,x","ePWM1 TZCTL"); - GEL_WatchAdd("*0x6815,x","ePWM1 TZEINT"); - GEL_WatchAdd("*0x6816,x","ePWM1 TZFLG"); - GEL_WatchAdd("*0x6817,x","ePWM1 TZCLR"); - GEL_WatchAdd("*0x6818,x","ePWM1 TZFRC"); - GEL_WatchAdd("*0x6819,x","ePWM1 ETSEL"); - GEL_WatchAdd("*0x681A,x","ePWM1 ETPS"); - GEL_WatchAdd("*0x681B,x","ePWM1 ETFLG"); - GEL_WatchAdd("*0x681C,x","ePWM1 ETCLR"); - GEL_WatchAdd("*0x681D,x","ePWM1 ETFRC"); - GEL_WatchAdd("*0x681E,x","ePWM1 PCCTL"); - GEL_WatchAdd("*0x6820,x","ePWM1 HRCNFG"); -} -hotmenu ePWM1_TB_Regs() -{ - GEL_WatchAdd("*0x6800,x","ePWM1 TBCTL"); - GEL_WatchAdd("*0x6801,x","ePWM1 TBSTS"); - GEL_WatchAdd("*0x6802,x","ePWM1 TBPHSHR"); - GEL_WatchAdd("*0x6803,x","ePWM1 TBPHS"); - GEL_WatchAdd("*0x6804,x","ePWM1 TBCTR"); - GEL_WatchAdd("*0x6805,x","ePWM1 TBPRD"); -} -hotmenu ePWM1_CMP_Regs() -{ - GEL_WatchAdd("*0x6807,x","ePWM1 CMPCTL"); - GEL_WatchAdd("*0x6808,x","ePWM1 CMPAHR"); - GEL_WatchAdd("*0x6809,x","ePWM1 CMPA"); - GEL_WatchAdd("*0x680A,x","ePWM1 CMPB"); -} -hotmenu ePWM1_AQ_Regs() -{ - GEL_WatchAdd("*0x680B,x","ePWM1 AQCTLA"); - GEL_WatchAdd("*0x680C,x","ePWM1 AQCTLB"); - GEL_WatchAdd("*0x680D,x","ePWM1 AQSFRC"); - GEL_WatchAdd("*0x680E,x","ePWM1 AQCSFRC"); -} -hotmenu ePWM1_DB_Regs() -{ - GEL_WatchAdd("*0x680F,x","ePWM1 DBCTL"); - GEL_WatchAdd("*0x6810,x","ePWM1 DBRED"); - GEL_WatchAdd("*0x6811,x","ePWM1 DBFED"); -} -hotmenu ePWM1_TZ_Regs() -{ - GEL_WatchAdd("*0x6812,x","ePWM1 TZSEL"); - GEL_WatchAdd("*0x6814,x","ePWM1 TZCTL"); - GEL_WatchAdd("*0x6815,x","ePWM1 TZEINT"); - GEL_WatchAdd("*0x6816,x","ePWM1 TZFLG"); - GEL_WatchAdd("*0x6817,x","ePWM1 TZCLR"); - GEL_WatchAdd("*0x6818,x","ePWM1 TZFRC"); -} -hotmenu ePWM1_ET_Regs() -{ - GEL_WatchAdd("*0x6819,x","ePWM1 ETSEL"); - GEL_WatchAdd("*0x681A,x","ePWM1 ETPS"); - GEL_WatchAdd("*0x681B,x","ePWM1 ETFLG"); - GEL_WatchAdd("*0x681C,x","ePWM1 ETCLR"); - GEL_WatchAdd("*0x681D,x","ePWM1 ETFRC"); -} -hotmenu ePWM2_All_Regs() -{ - GEL_WatchAdd("*0x6840,x","ePWM2 TBCTL"); - GEL_WatchAdd("*0x6841,x","ePWM2 TBSTS"); - GEL_WatchAdd("*0x6842,x","ePWM2 TBPHSHR"); - GEL_WatchAdd("*0x6843,x","ePWM2 TBPHS"); - GEL_WatchAdd("*0x6844,x","ePWM2 TBCTR"); - GEL_WatchAdd("*0x6845,x","ePWM2 TBPRD"); - GEL_WatchAdd("*0x6847,x","ePWM2 CMPCTL"); - GEL_WatchAdd("*0x6848,x","ePWM2 CMPAHR"); - GEL_WatchAdd("*0x6849,x","ePWM2 CMPA"); - GEL_WatchAdd("*0x684A,x","ePWM2 CMPB"); - GEL_WatchAdd("*0x684B,x","ePWM2 AQCTLA"); - GEL_WatchAdd("*0x684C,x","ePWM2 AQCTLB"); - GEL_WatchAdd("*0x684D,x","ePWM2 AQSFRC"); - GEL_WatchAdd("*0x684E,x","ePWM2 AQCSFRC"); - GEL_WatchAdd("*0x684F,x","ePWM2 DBCTL"); - GEL_WatchAdd("*0x6850,x","ePWM2 DBRED"); - GEL_WatchAdd("*0x6851,x","ePWM2 DBFED"); - GEL_WatchAdd("*0x6852,x","ePWM2 TZSEL"); - GEL_WatchAdd("*0x6853,x","ePWM2 TZDCSEL"); - GEL_WatchAdd("*0x6854,x","ePWM2 TZCTL"); - GEL_WatchAdd("*0x6855,x","ePWM2 TZEINT"); - GEL_WatchAdd("*0x6856,x","ePWM2 TZFLG"); - GEL_WatchAdd("*0x6857,x","ePWM2 TZCLR"); - GEL_WatchAdd("*0x6858,x","ePWM2 TZFRC"); - GEL_WatchAdd("*0x6859,x","ePWM2 ETSEL"); - GEL_WatchAdd("*0x685A,x","ePWM2 ETPS"); - GEL_WatchAdd("*0x685B,x","ePWM2 ETFLG"); - GEL_WatchAdd("*0x685C,x","ePWM2 ETCLR"); - GEL_WatchAdd("*0x685D,x","ePWM2 ETFRC"); - GEL_WatchAdd("*0x685E,x","ePWM2 PCCTL"); - GEL_WatchAdd("*0x6860,x","ePWM2 HRCNFG"); -} -hotmenu ePWM2_TB_Regs() -{ - GEL_WatchAdd("*0x6840,x","ePWM2 TBCTL"); - GEL_WatchAdd("*0x6841,x","ePWM2 TBSTS"); - GEL_WatchAdd("*0x6842,x","ePWM2 TBPHSHR"); - GEL_WatchAdd("*0x6843,x","ePWM2 TBPHS"); - GEL_WatchAdd("*0x6844,x","ePWM2 TBCTR"); - GEL_WatchAdd("*0x6845,x","ePWM2 TBPRD"); -} -hotmenu ePWM2_CMP_Regs() -{ - GEL_WatchAdd("*0x6847,x","ePWM2 CMPCTL"); - GEL_WatchAdd("*0x6848,x","ePWM2 CMPAHR"); - GEL_WatchAdd("*0x6849,x","ePWM2 CMPA"); - GEL_WatchAdd("*0x684A,x","ePWM2 CMPB"); -} -hotmenu ePWM2_AQ_Regs() -{ - GEL_WatchAdd("*0x684B,x","ePWM2 AQCTLA"); - GEL_WatchAdd("*0x684C,x","ePWM2 AQCTLB"); - GEL_WatchAdd("*0x684D,x","ePWM2 AQSFRC"); - GEL_WatchAdd("*0x684E,x","ePWM2 AQCSFRC"); -} -hotmenu ePWM2_DB_Regs() -{ - GEL_WatchAdd("*0x684F,x","ePWM2 DBCTL"); - GEL_WatchAdd("*0x6850,x","ePWM2 DBRED"); - GEL_WatchAdd("*0x6851,x","ePWM2 DBFED"); -} -hotmenu ePWM2_TZ_Regs() -{ - GEL_WatchAdd("*0x6852,x","ePWM2 TZSEL"); - GEL_WatchAdd("*0x6854,x","ePWM2 TZCTL"); - GEL_WatchAdd("*0x6855,x","ePWM2 TZEINT"); - GEL_WatchAdd("*0x6856,x","ePWM2 TZFLG"); - GEL_WatchAdd("*0x6857,x","ePWM2 TZCLR"); - GEL_WatchAdd("*0x6858,x","ePWM2 TZFRC"); -} -hotmenu ePWM2_ET_Regs() -{ - GEL_WatchAdd("*0x6859,x","ePWM2 ETSEL"); - GEL_WatchAdd("*0x685A,x","ePWM2 ETPS"); - GEL_WatchAdd("*0x685B,x","ePWM2 ETFLG"); - GEL_WatchAdd("*0x685C,x","ePWM2 ETCLR"); - GEL_WatchAdd("*0x685D,x","ePWM2 ETFRC"); -} -hotmenu ePWM3_All_Regs() -{ - GEL_WatchAdd("*0x6880,x","ePWM3 TBCTL"); - GEL_WatchAdd("*0x6881,x","ePWM3 TBSTS"); - GEL_WatchAdd("*0x6882,x","ePWM3 TBPHSHR"); - GEL_WatchAdd("*0x6883,x","ePWM3 TBPHS"); - GEL_WatchAdd("*0x6884,x","ePWM3 TBCTR"); - GEL_WatchAdd("*0x6885,x","ePWM3 TBPRD"); - GEL_WatchAdd("*0x6887,x","ePWM3 CMPCTL"); - GEL_WatchAdd("*0x6888,x","ePWM3 CMPAHR"); - GEL_WatchAdd("*0x6889,x","ePWM3 CMPA"); - GEL_WatchAdd("*0x688A,x","ePWM3 CMPB"); - GEL_WatchAdd("*0x688B,x","ePWM3 AQCTLA"); - GEL_WatchAdd("*0x688C,x","ePWM3 AQCTLB"); - GEL_WatchAdd("*0x688D,x","ePWM3 AQSFRC"); - GEL_WatchAdd("*0x688E,x","ePWM3 AQCSFRC"); - GEL_WatchAdd("*0x688F,x","ePWM3 DBCTL"); - GEL_WatchAdd("*0x6890,x","ePWM3 DBRED"); - GEL_WatchAdd("*0x6891,x","ePWM3 DBFED"); - GEL_WatchAdd("*0x6892,x","ePWM3 TZSEL"); - GEL_WatchAdd("*0x6893,x","ePWM3 TZDCSEL"); - GEL_WatchAdd("*0x6894,x","ePWM3 TZCTL"); - GEL_WatchAdd("*0x6895,x","ePWM3 TZEINT"); - GEL_WatchAdd("*0x6896,x","ePWM3 TZFLG"); - GEL_WatchAdd("*0x6897,x","ePWM3 TZCLR"); - GEL_WatchAdd("*0x6898,x","ePWM3 TZFRC"); - GEL_WatchAdd("*0x6899,x","ePWM3 ETSEL"); - GEL_WatchAdd("*0x689A,x","ePWM3 ETPS"); - GEL_WatchAdd("*0x689B,x","ePWM3 ETFLG"); - GEL_WatchAdd("*0x689C,x","ePWM3 ETCLR"); - GEL_WatchAdd("*0x689D,x","ePWM3 ETFRC"); - GEL_WatchAdd("*0x689E,x","ePWM3 PCCTL"); - GEL_WatchAdd("*0x68A0,x","ePWM3 HRCNFG"); -} -hotmenu ePWM3_TB_Regs() -{ - GEL_WatchAdd("*0x6880,x","ePWM3 TBCTL"); - GEL_WatchAdd("*0x6881,x","ePWM3 TBSTS"); - GEL_WatchAdd("*0x6882,x","ePWM3 TBPHSHR"); - GEL_WatchAdd("*0x6883,x","ePWM3 TBPHS"); - GEL_WatchAdd("*0x6884,x","ePWM3 TBCTR"); - GEL_WatchAdd("*0x6885,x","ePWM3 TBPRD"); -} -hotmenu ePWM3_CMP_Regs() -{ - GEL_WatchAdd("*0x6887,x","ePWM3 CMPCTL"); - GEL_WatchAdd("*0x6888,x","ePWM3 CMPAHR"); - GEL_WatchAdd("*0x6889,x","ePWM3 CMPA"); - GEL_WatchAdd("*0x688A,x","ePWM3 CMPB"); -} -hotmenu ePWM3_AQ_Regs() -{ - GEL_WatchAdd("*0x688B,x","ePWM3 AQCTLA"); - GEL_WatchAdd("*0x688C,x","ePWM3 AQCTLB"); - GEL_WatchAdd("*0x688D,x","ePWM3 AQSFRC"); - GEL_WatchAdd("*0x688E,x","ePWM3 AQCSFRC"); -} -hotmenu ePWM3_DB_Regs() -{ - GEL_WatchAdd("*0x688F,x","ePWM3 DBCTL"); - GEL_WatchAdd("*0x6890,x","ePWM3 DBRED"); - GEL_WatchAdd("*0x6891,x","ePWM3 DBFED"); -} -hotmenu ePWM3_TZ_Regs() -{ - GEL_WatchAdd("*0x6892,x","ePWM3 TZSEL"); - GEL_WatchAdd("*0x6894,x","ePWM3 TZCTL"); - GEL_WatchAdd("*0x6895,x","ePWM3 TZEINT"); - GEL_WatchAdd("*0x6896,x","ePWM3 TZFLG"); - GEL_WatchAdd("*0x6897,x","ePWM3 TZCLR"); - GEL_WatchAdd("*0x6898,x","ePWM3 TZFRC"); -} -hotmenu ePWM3_ET_Regs() -{ - GEL_WatchAdd("*0x6899,x","ePWM3 ETSEL"); - GEL_WatchAdd("*0x689A,x","ePWM3 ETPS"); - GEL_WatchAdd("*0x689B,x","ePWM3 ETFLG"); - GEL_WatchAdd("*0x689C,x","ePWM3 ETCLR"); - GEL_WatchAdd("*0x689D,x","ePWM3 ETFRC"); -} -hotmenu ePWM4_All_Regs() -{ - GEL_WatchAdd("*0x68C0,x","ePWM4 TBCTL"); - GEL_WatchAdd("*0x68C1,x","ePWM4 TBSTS"); - GEL_WatchAdd("*0x68C2,x","ePWM4 TBPHSHR"); - GEL_WatchAdd("*0x68C3,x","ePWM4 TBPHS"); - GEL_WatchAdd("*0x68C4,x","ePWM4 TBCTR"); - GEL_WatchAdd("*0x68C5,x","ePWM4 TBPRD"); - GEL_WatchAdd("*0x68C7,x","ePWM4 CMPCTL"); - GEL_WatchAdd("*0x68C8,x","ePWM4 CMPAHR"); - GEL_WatchAdd("*0x68C9,x","ePWM4 CMPA"); - GEL_WatchAdd("*0x68CA,x","ePWM4 CMPB"); - GEL_WatchAdd("*0x68CB,x","ePWM4 AQCTLA"); - GEL_WatchAdd("*0x68CC,x","ePWM4 AQCTLB"); - GEL_WatchAdd("*0x68CD,x","ePWM4 AQSFRC"); - GEL_WatchAdd("*0x68CE,x","ePWM4 AQCSFRC"); - GEL_WatchAdd("*0x68CF,x","ePWM4 DBCTL"); - GEL_WatchAdd("*0x68D0,x","ePWM4 DBRED"); - GEL_WatchAdd("*0x68D1,x","ePWM4 DBFED"); - GEL_WatchAdd("*0x68D2,x","ePWM4 TZSEL"); - GEL_WatchAdd("*0x68D3,x","ePWM4 TZDCSEL"); - GEL_WatchAdd("*0x68D4,x","ePWM4 TZCTL"); - GEL_WatchAdd("*0x68D5,x","ePWM4 TZEINT"); - GEL_WatchAdd("*0x68D6,x","ePWM4 TZFLG"); - GEL_WatchAdd("*0x68D7,x","ePWM4 TZCLR"); - GEL_WatchAdd("*0x68D8,x","ePWM4 TZFRC"); - GEL_WatchAdd("*0x68D9,x","ePWM4 ETSEL"); - GEL_WatchAdd("*0x68DA,x","ePWM4 ETPS"); - GEL_WatchAdd("*0x68DB,x","ePWM4 ETFLG"); - GEL_WatchAdd("*0x68DC,x","ePWM4 ETCLR"); - GEL_WatchAdd("*0x68DD,x","ePWM4 ETFRC"); - GEL_WatchAdd("*0x68DE,x","ePWM4 PCCTL"); - GEL_WatchAdd("*0x68E0,x","ePWM4 HRCNFG"); -} -hotmenu ePWM4_TB_Regs() -{ - GEL_WatchAdd("*0x68C0,x","ePWM4 TBCTL"); - GEL_WatchAdd("*0x68C1,x","ePWM4 TBSTS"); - GEL_WatchAdd("*0x68C2,x","ePWM4 TBPHSHR"); - GEL_WatchAdd("*0x68C3,x","ePWM4 TBPHS"); - GEL_WatchAdd("*0x68C4,x","ePWM4 TBCTR"); - GEL_WatchAdd("*0x68C5,x","ePWM4 TBPRD"); -} -hotmenu ePWM4_CMP_Regs() -{ - GEL_WatchAdd("*0x68C7,x","ePWM4 CMPCTL"); - GEL_WatchAdd("*0x68C8,x","ePWM4 CMPAHR"); - GEL_WatchAdd("*0x68C9,x","ePWM4 CMPA"); - GEL_WatchAdd("*0x68CA,x","ePWM4 CMPB"); -} -hotmenu ePWM4_AQ_Regs() -{ - GEL_WatchAdd("*0x68CB,x","ePWM4 AQCTLA"); - GEL_WatchAdd("*0x68CC,x","ePWM4 AQCTLB"); - GEL_WatchAdd("*0x68CD,x","ePWM4 AQSFRC"); - GEL_WatchAdd("*0x68CE,x","ePWM4 AQCSFRC"); -} -hotmenu ePWM4_DB_Regs() -{ - GEL_WatchAdd("*0x68CF,x","ePWM4 DBCTL"); - GEL_WatchAdd("*0x68D0,x","ePWM4 DBRED"); - GEL_WatchAdd("*0x68D1,x","ePWM4 DBFED"); -} -hotmenu ePWM4_TZ_Regs() -{ - GEL_WatchAdd("*0x68D2,x","ePWM4 TZSEL"); - GEL_WatchAdd("*0x68D4,x","ePWM4 TZCTL"); - GEL_WatchAdd("*0x68D5,x","ePWM4 TZEINT"); - GEL_WatchAdd("*0x68D6,x","ePWM4 TZFLG"); - GEL_WatchAdd("*0x68D7,x","ePWM4 TZCLR"); - GEL_WatchAdd("*0x68D8,x","ePWM4 TZFRC"); -} -hotmenu ePWM4_ET_Regs() -{ - GEL_WatchAdd("*0x68D9,x","ePWM4 ETSEL"); - GEL_WatchAdd("*0x68DA,x","ePWM4 ETPS"); - GEL_WatchAdd("*0x68DB,x","ePWM4 ETFLG"); - GEL_WatchAdd("*0x68DC,x","ePWM4 ETCLR"); - GEL_WatchAdd("*0x68DD,x","ePWM4 ETFRC"); -} -hotmenu ePWM5_All_Regs() -{ - GEL_WatchAdd("*0x6900,x","ePWM5 TBCTL"); - GEL_WatchAdd("*0x6901,x","ePWM5 TBSTS"); - GEL_WatchAdd("*0x6902,x","ePWM5 TBPHSHR"); - GEL_WatchAdd("*0x6903,x","ePWM5 TBPHS"); - GEL_WatchAdd("*0x6904,x","ePWM5 TBCTR"); - GEL_WatchAdd("*0x6905,x","ePWM5 TBPRD"); - GEL_WatchAdd("*0x6907,x","ePWM5 CMPCTL"); - GEL_WatchAdd("*0x6908,x","ePWM5 CMPAHR"); - GEL_WatchAdd("*0x6909,x","ePWM5 CMPA"); - GEL_WatchAdd("*0x690A,x","ePWM5 CMPB"); - GEL_WatchAdd("*0x690B,x","ePWM5 AQCTLA"); - GEL_WatchAdd("*0x690C,x","ePWM5 AQCTLB"); - GEL_WatchAdd("*0x690D,x","ePWM5 AQSFRC"); - GEL_WatchAdd("*0x690E,x","ePWM5 AQCSFRC"); - GEL_WatchAdd("*0x690F,x","ePWM5 DBCTL"); - GEL_WatchAdd("*0x6910,x","ePWM5 DBRED"); - GEL_WatchAdd("*0x6911,x","ePWM5 DBFED"); - GEL_WatchAdd("*0x6912,x","ePWM5 TZSEL"); - GEL_WatchAdd("*0x6913,x","ePWM5 TZDCSEL"); - GEL_WatchAdd("*0x6914,x","ePWM5 TZCTL"); - GEL_WatchAdd("*0x6915,x","ePWM5 TZEINT"); - GEL_WatchAdd("*0x6916,x","ePWM5 TZFLG"); - GEL_WatchAdd("*0x6917,x","ePWM5 TZCLR"); - GEL_WatchAdd("*0x6918,x","ePWM5 TZFRC"); - GEL_WatchAdd("*0x6919,x","ePWM5 ETSEL"); - GEL_WatchAdd("*0x691A,x","ePWM5 ETPS"); - GEL_WatchAdd("*0x691B,x","ePWM5 ETFLG"); - GEL_WatchAdd("*0x691C,x","ePWM5 ETCLR"); - GEL_WatchAdd("*0x691D,x","ePWM5 ETFRC"); - GEL_WatchAdd("*0x691E,x","ePWM5 PCCTL"); - GEL_WatchAdd("*0x6920,x","ePWM5 HRCNFG"); -} -hotmenu ePWM5_TB_Regs() -{ - GEL_WatchAdd("*0x6900,x","ePWM5 TBCTL"); - GEL_WatchAdd("*0x6901,x","ePWM5 TBSTS"); - GEL_WatchAdd("*0x6902,x","ePWM5 TBPHSHR"); - GEL_WatchAdd("*0x6903,x","ePWM5 TBPHS"); - GEL_WatchAdd("*0x6904,x","ePWM5 TBCTR"); - GEL_WatchAdd("*0x6905,x","ePWM5 TBPRD"); -} -hotmenu ePWM5_CMP_Regs() -{ - GEL_WatchAdd("*0x6907,x","ePWM5 CMPCTL"); - GEL_WatchAdd("*0x6908,x","ePWM5 CMPAHR"); - GEL_WatchAdd("*0x6909,x","ePWM5 CMPA"); - GEL_WatchAdd("*0x690A,x","ePWM5 CMPB"); -} -hotmenu ePWM5_AQ_Regs() -{ - GEL_WatchAdd("*0x690B,x","ePWM5 AQCTLA"); - GEL_WatchAdd("*0x690C,x","ePWM5 AQCTLB"); - GEL_WatchAdd("*0x690D,x","ePWM5 AQSFRC"); - GEL_WatchAdd("*0x690E,x","ePWM5 AQCSFRC"); -} -hotmenu ePWM5_DB_Regs() -{ - GEL_WatchAdd("*0x690F,x","ePWM5 DBCTL"); - GEL_WatchAdd("*0x6910,x","ePWM5 DBRED"); - GEL_WatchAdd("*0x6911,x","ePWM5 DBFED"); -} -hotmenu ePWM5_TZ_Regs() -{ - GEL_WatchAdd("*0x6912,x","ePWM5 TZSEL"); - GEL_WatchAdd("*0x6914,x","ePWM5 TZCTL"); - GEL_WatchAdd("*0x6915,x","ePWM5 TZEINT"); - GEL_WatchAdd("*0x6916,x","ePWM5 TZFLG"); - GEL_WatchAdd("*0x6917,x","ePWM5 TZCLR"); - GEL_WatchAdd("*0x6918,x","ePWM5 TZFRC"); -} -hotmenu ePWM5_ET_Regs() -{ - GEL_WatchAdd("*0x6919,x","ePWM5 ETSEL"); - GEL_WatchAdd("*0x691A,x","ePWM5 ETPS"); - GEL_WatchAdd("*0x691B,x","ePWM5 ETFLG"); - GEL_WatchAdd("*0x691C,x","ePWM5 ETCLR"); - GEL_WatchAdd("*0x691D,x","ePWM5 ETFRC"); -} -hotmenu ePWM6_All_Regs() -{ - GEL_WatchAdd("*0x6940,x","ePWM6 TBCTL"); - GEL_WatchAdd("*0x6941,x","ePWM6 TBSTS"); - GEL_WatchAdd("*0x6942,x","ePWM6 TBPHSHR"); - GEL_WatchAdd("*0x6943,x","ePWM6 TBPHS"); - GEL_WatchAdd("*0x6944,x","ePWM6 TBCTR"); - GEL_WatchAdd("*0x6945,x","ePWM6 TBPRD"); - GEL_WatchAdd("*0x6947,x","ePWM6 CMPCTL"); - GEL_WatchAdd("*0x6948,x","ePWM6 CMPAHR"); - GEL_WatchAdd("*0x6949,x","ePWM6 CMPA"); - GEL_WatchAdd("*0x694A,x","ePWM6 CMPB"); - GEL_WatchAdd("*0x694B,x","ePWM6 AQCTLA"); - GEL_WatchAdd("*0x694C,x","ePWM6 AQCTLB"); - GEL_WatchAdd("*0x694D,x","ePWM6 AQSFRC"); - GEL_WatchAdd("*0x694E,x","ePWM6 AQCSFRC"); - GEL_WatchAdd("*0x694F,x","ePWM6 DBCTL"); - GEL_WatchAdd("*0x6950,x","ePWM6 DBRED"); - GEL_WatchAdd("*0x6951,x","ePWM6 DBFED"); - GEL_WatchAdd("*0x6952,x","ePWM6 TZSEL"); - GEL_WatchAdd("*0x6953,x","ePWM6 TZDCSEL"); - GEL_WatchAdd("*0x6954,x","ePWM6 TZCTL"); - GEL_WatchAdd("*0x6955,x","ePWM6 TZEINT"); - GEL_WatchAdd("*0x6956,x","ePWM6 TZFLG"); - GEL_WatchAdd("*0x6957,x","ePWM6 TZCLR"); - GEL_WatchAdd("*0x6958,x","ePWM6 TZFRC"); - GEL_WatchAdd("*0x6959,x","ePWM6 ETSEL"); - GEL_WatchAdd("*0x695A,x","ePWM6 ETPS"); - GEL_WatchAdd("*0x695B,x","ePWM6 ETFLG"); - GEL_WatchAdd("*0x695C,x","ePWM6 ETCLR"); - GEL_WatchAdd("*0x695D,x","ePWM6 ETFRC"); - GEL_WatchAdd("*0x695E,x","ePWM6 PCCTL"); - GEL_WatchAdd("*0x6960,x","ePWM6 HRCNFG"); - -} -hotmenu ePWM6_TB_Regs() -{ - GEL_WatchAdd("*0x6940,x","ePWM6 TBCTL"); - GEL_WatchAdd("*0x6941,x","ePWM6 TBSTS"); - GEL_WatchAdd("*0x6942,x","ePWM6 TBPHSHR"); - GEL_WatchAdd("*0x6943,x","ePWM6 TBPHS"); - GEL_WatchAdd("*0x6944,x","ePWM6 TBCTR"); - GEL_WatchAdd("*0x6945,x","ePWM6 TBPRD"); -} -hotmenu ePWM6_CMP_Regs() -{ - GEL_WatchAdd("*0x6947,x","ePWM6 CMPCTL"); - GEL_WatchAdd("*0x6948,x","ePWM6 CMPAHR"); - GEL_WatchAdd("*0x6949,x","ePWM6 CMPA"); - GEL_WatchAdd("*0x694A,x","ePWM6 CMPB"); -} -hotmenu ePWM6_AQ_Regs() -{ - GEL_WatchAdd("*0x694B,x","ePWM6 AQCTLA"); - GEL_WatchAdd("*0x694C,x","ePWM6 AQCTLB"); - GEL_WatchAdd("*0x694D,x","ePWM6 AQSFRC"); - GEL_WatchAdd("*0x694E,x","ePWM6 AQCSFRC"); -} -hotmenu ePWM6_DB_Regs() -{ - GEL_WatchAdd("*0x694F,x","ePWM6 DBCTL"); - GEL_WatchAdd("*0x6950,x","ePWM6 DBRED"); - GEL_WatchAdd("*0x6951,x","ePWM6 DBFED"); -} -hotmenu ePWM6_TZ_Regs() -{ - GEL_WatchAdd("*0x6952,x","ePWM6 TZSEL"); - GEL_WatchAdd("*0x6954,x","ePWM6 TZCTL"); - GEL_WatchAdd("*0x6955,x","ePWM6 TZEINT"); - GEL_WatchAdd("*0x6956,x","ePWM6 TZFLG"); - GEL_WatchAdd("*0x6957,x","ePWM6 TZCLR"); - GEL_WatchAdd("*0x6958,x","ePWM6 TZFRC"); -} -hotmenu ePWM6_ET_Regs() -{ - GEL_WatchAdd("*0x6959,x","ePWM6 ETSEL"); - GEL_WatchAdd("*0x695A,x","ePWM6 ETPS"); - GEL_WatchAdd("*0x695B,x","ePWM6 ETFLG"); - GEL_WatchAdd("*0x695C,x","ePWM6 ETCLR"); - GEL_WatchAdd("*0x695D,x","ePWM6 ETFRC"); -} - - -/********************************************************************/ -/* Enhanced EQEP Registers */ -/********************************************************************/ -menuitem "Watch eQEP" - -hotmenu eQEP1_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6B00,x","eQEP1 QPOSCNT"); - GEL_WatchAdd("*(long *)0x6B02,x","eQEP1 QPOSINIT"); - GEL_WatchAdd("*(long *)0x6B04,x","eQEP1 QPOSMAX"); - GEL_WatchAdd("*(long *)0x6B06,x","eQEP1 QPOSCMP"); - GEL_WatchAdd("*(long *)0x6B08,x","eQEP1 QPOSILAT"); - GEL_WatchAdd("*(long *)0x6B0A,x","eQEP1 QPOSSLAT"); - GEL_WatchAdd("*(long *)0x6B0C,x","eQEP1 QPOSLAT"); - GEL_WatchAdd("*(long *)0x6B0E,x","eQEP1 QUTMR"); - GEL_WatchAdd("*(long *)0x6B10,x","eQEP1 QUPRD"); - GEL_WatchAdd("*0x6B12,x","eQEP1 QWDTMR"); - GEL_WatchAdd("*0x6B13,x","eQEP1 QWDPRD"); - GEL_WatchAdd("*0x6B14,x","eQEP1 QDECCTL"); - GEL_WatchAdd("*0x6B15,x","eQEP1 QEPCTL"); - GEL_WatchAdd("*0x6B16,x","eQEP1 QCAPCTL"); - GEL_WatchAdd("*0x6B17,x","eQEP1 QPOSCTL"); - GEL_WatchAdd("*0x6B18,x","eQEP1 QEINT"); - GEL_WatchAdd("*0x6B19,x","eQEP1 QFLG"); - GEL_WatchAdd("*0x6B1A,x","eQEP1 QCLR"); - GEL_WatchAdd("*0x6B1B,x","eQEP1 QFRC"); - GEL_WatchAdd("*0x6B1C,x","eQEP1 QEPSTS"); - GEL_WatchAdd("*0x6B1D,x","eQEP1 QCTMR"); - GEL_WatchAdd("*0x6B1E,x","eQEP1 QCPRD"); - GEL_WatchAdd("*0x6B1F,x","eQEP1 QCTMRLAT"); - GEL_WatchAdd("*0x6B20,x","eQEP1 QCPRDLAT"); -} -hotmenu eQEP2_All_Regs() -{ - GEL_WatchAdd("*(long *)0x6B40,x","eQEP2 QPOSCNT"); - GEL_WatchAdd("*(long *)0x6B42,x","eQEP2 QPOSINIT"); - GEL_WatchAdd("*(long *)0x6B44,x","eQEP2 QPOSMAX"); - GEL_WatchAdd("*(long *)0x6B46,x","eQEP2 QPOSCMP"); - GEL_WatchAdd("*(long *)0x6B48,x","eQEP2 QPOSILAT"); - GEL_WatchAdd("*(long *)0x6B4A,x","eQEP2 QPOSSLAT"); - GEL_WatchAdd("*(long *)0x6B4C,x","eQEP2 QPOSLAT"); - GEL_WatchAdd("(long *)*0x6B4E,x","eQEP2 QUTMR"); - GEL_WatchAdd("*(long *)0x6B50,x","eQEP2 QUPRD"); - GEL_WatchAdd("*0x6B52,x","eQEP2 QWDTMR"); - GEL_WatchAdd("*0x6B53,x","eQEP2 QWDPRD"); - GEL_WatchAdd("*0x6B54,x","eQEP2 QDECCTL"); - GEL_WatchAdd("*0x6B55,x","eQEP2 QEPCTL"); - GEL_WatchAdd("*0x6B56,x","eQEP2 QCAPCTL"); - GEL_WatchAdd("*0x6B57,x","eQEP2 QPOSCTL"); - GEL_WatchAdd("*0x6B58,x","eQEP2 QEINT"); - GEL_WatchAdd("*0x6B59,x","eQEP2 QFLG"); - GEL_WatchAdd("*0x6B5A,x","eQEP2 QCLR"); - GEL_WatchAdd("*0x6B5B,x","eQEP2 QFRC"); - GEL_WatchAdd("*0x6B5C,x","eQEP2 QEPSTS"); - GEL_WatchAdd("*0x6B5D,x","eQEP2 QCTMR"); - GEL_WatchAdd("*0x6B5E,x","eQEP2 QCPRD"); - GEL_WatchAdd("*0x6B5F,x","eQEP2 QCTMRLAT"); - GEL_WatchAdd("*0x6B60,x","eQEP2 QCPRDLAT"); -} - - -/********************************************************************/ -/* External Interface Registers */ -/********************************************************************/ -menuitem "Watch External Interface Registers"; - -hotmenu All_External_Interface_Regs() -{ - GEL_WatchAdd("*(long *)0x0B20,x","XTIMING0"); - GEL_WatchAdd("*(long *)0x0B2C,x","XTIMING6"); - GEL_WatchAdd("*(long *)0x0B2E,x","XTIMING7"); - GEL_WatchAdd("*(long *)0x0B34,x","XINTCNF2"); - GEL_WatchAdd("*0x0B38,x","XBANK"); - GEL_WatchAdd("*0x0B3A,x","XREVISION"); - GEL_WatchAdd("*0x0B3D,x","XRESET"); -} - -/********************************************************************/ -/* External Interrupt Registers */ -/********************************************************************/ -menuitem "Watch External Interrupt Registers"; - -hotmenu All_XINT_Regs() -{ - GEL_WatchAdd("*0x7070,x","XINT1CR"); - GEL_WatchAdd("*0x7071,x","XINT2CR"); - GEL_WatchAdd("*0x7072,x","XINT3CR"); - GEL_WatchAdd("*0x7073,x","XINT4CR"); - GEL_WatchAdd("*0x7074,x","XINT5CR"); - GEL_WatchAdd("*0x7075,x","XINT6CR"); - GEL_WatchAdd("*0x7076,x","XINT7CR"); - GEL_WatchAdd("*0x7077,x","XNMICR"); - GEL_WatchAdd("*0x7078,x","XINT1CTR"); - GEL_WatchAdd("*0x7079,x","XINT2CTR"); - GEL_WatchAdd("*0x707F,x","XNMICTR"); -} -hotmenu XINT_Control_Regs() -{ - GEL_WatchAdd("*0x7070,x","XINT1CR"); - GEL_WatchAdd("*0x7071,x","XINT2CR"); - GEL_WatchAdd("*0x7072,x","XINT3CR"); - GEL_WatchAdd("*0x7073,x","XINT4CR"); - GEL_WatchAdd("*0x7074,x","XINT5CR"); - GEL_WatchAdd("*0x7075,x","XINT6CR"); - GEL_WatchAdd("*0x7076,x","XINT7CR"); - GEL_WatchAdd("*0x7077,x","XNMICR"); -} -hotmenu XINT_Counter_Regs() -{ - GEL_WatchAdd("*0x7078,x","XINT1CTR"); - GEL_WatchAdd("*0x7079,x","XINT2CTR"); - GEL_WatchAdd("*0x707F,x","XNMICTR"); -} - - -/********************************************************************/ -/* FPU Registers */ -/********************************************************************/ -menuitem "Watch FPU Registers" - -hotmenu All_FPU_Single_Precision_Regs() -{ - GEL_WatchAdd("RB"); - GEL_WatchAdd("STF"); - GEL_WatchAdd("R0H"); - GEL_WatchAdd("R1H"); - GEL_WatchAdd("R2H"); - GEL_WatchAdd("R3H"); - GEL_WatchAdd("R4H"); - GEL_WatchAdd("R5H"); - GEL_WatchAdd("R6H"); - GEL_WatchAdd("R7H"); -} - - -/********************************************************************/ -/* GPIO Registers */ -/********************************************************************/ -menuitem "Watch GPIO Registers"; - -hotmenu All_GPIO_CONTROL_Regs() -{ - GEL_WatchAdd("*(long *)0x6F80,x","GPACTRL"); - GEL_WatchAdd("*(long *)0x6F82,x","GPAQSEL1"); - GEL_WatchAdd("*(long *)0x6F84,x","GPAQSEL2"); - GEL_WatchAdd("*(long *)0x6F86,x","GPAMUX1"); - GEL_WatchAdd("*(long *)0x6F88,x","GPAMUX2"); - GEL_WatchAdd("*(long *)0x6F8A,x","GPADIR"); - GEL_WatchAdd("*(long *)0x6F8C,x","GPAPUD"); - - GEL_WatchAdd("*(long *)0x6F90,x","GPBCTRL"); - GEL_WatchAdd("*(long *)0x6F92,x","GPBQSEL1"); - GEL_WatchAdd("*(long *)0x6F94,x","GPBQSEL2"); - GEL_WatchAdd("*(long *)0x6F96,x","GPBMUX1"); - GEL_WatchAdd("*(long *)0x6F98,x","GPBMUX2"); - GEL_WatchAdd("*(long *)0x6F9A,x","GPBDIR"); - GEL_WatchAdd("*(long *)0x6F9C,x","GPBPUD"); - - GEL_WatchAdd("*(long *)0x6FA6,x","GPCMUX1"); - GEL_WatchAdd("*(long *)0x6FA8,x","GPCMUX2"); - GEL_WatchAdd("*(long *)0x6FAA,x","GPCDIR"); - GEL_WatchAdd("*(long *)0x6FAC,x","GPCPUD"); -} -hotmenu All_GPIO_DATA_Regs() -{ - GEL_WatchAdd("*(long *)0x6FC0,x","GPADAT"); - GEL_WatchAdd("*(long *)0x6FC2,x","GPASET"); - GEL_WatchAdd("*(long *)0x6FC4,x","GPACLEAR"); - GEL_WatchAdd("*(long *)0x6FC6,x","GPATOGGLE"); - - GEL_WatchAdd("*(long *)0x6FC8,x","GPBDAT"); - GEL_WatchAdd("*(long *)0x6FCA,x","GPBSET"); - GEL_WatchAdd("*(long *)0x6FCC,x","GPBCLEAR"); - GEL_WatchAdd("*(long *)0x6FCE,x","GPBTOGGLE"); - - GEL_WatchAdd("*(long *)0x6FD0,x","GPCDAT"); - GEL_WatchAdd("*(long *)0x6FD2,x","GPCSET"); - GEL_WatchAdd("*(long *)0x6FD4,x","GPCCLEAR"); - GEL_WatchAdd("*(long *)0x6FD6,x","GPCTOGGLE"); -} -hotmenu All_GPIO_INTERRUPT_Regs() -{ - GEL_WatchAdd("*0x6FE0,x","GPIOXINT1SEL"); - GEL_WatchAdd("*0x6FE1,x","GPIOXINT2SEL"); - GEL_WatchAdd("*0x6FE2,x","GPIOXNMISEL"); - GEL_WatchAdd("*0x6FE3,x","GPIOXINT3SEL"); - GEL_WatchAdd("*0x6FE4,x","GPIOXINT4SEL"); - GEL_WatchAdd("*0x6FE5,x","GPIOXINT5SEL"); - GEL_WatchAdd("*0x6FE6,x","GPIOXINT6SEL"); - GEL_WatchAdd("*0x6FE7,x","GPIOXINT7SEL"); - GEL_WatchAdd("*(long *)0x6FE8,x","GPIOLPMSEL"); -} -hotmenu All_GPA_Registers() -{ - GEL_WatchAdd("*(long *)0x6F80,x","GPACTRL"); - GEL_WatchAdd("*(long *)0x6F82,x","GPAQSEL1"); - GEL_WatchAdd("*(long *)0x6F84,x","GPAQSEL2"); - GEL_WatchAdd("*(long *)0x6F86,x","GPAMUX1"); - GEL_WatchAdd("*(long *)0x6F88,x","GPAMUX2"); - GEL_WatchAdd("*(long *)0x6F8A,x","GPADIR"); - GEL_WatchAdd("*(long *)0x6F8C,x","GPAPUD"); - - GEL_WatchAdd("*(long *)0x6FC0,x","GPADAT"); - GEL_WatchAdd("*(long *)0x6FC2,x","GPASET"); - GEL_WatchAdd("*(long *)0x6FC4,x","GPACLEAR"); - GEL_WatchAdd("*(long *)0x6FC6,x","GPATOGGLE"); -} -hotmenu All_GPB_Registers() -{ - GEL_WatchAdd("*(long *)0x6F90,x","GPBCTRL"); - GEL_WatchAdd("*(long *)0x6F92,x","GPBQSEL1"); - GEL_WatchAdd("*(long *)0x6F94,x","GPBQSEL2"); - GEL_WatchAdd("*(long *)0x6F96,x","GPBMUX1"); - GEL_WatchAdd("*(long *)0x6F98,x","GPBMUX2"); - GEL_WatchAdd("*(long *)0x6F9A,x","GPBDIR"); - GEL_WatchAdd("*(long *)0x6F9C,x","GPBPUD"); - - GEL_WatchAdd("*(long *)0x6FC8,x","GPBDAT"); - GEL_WatchAdd("*(long *)0x6FCA,x","GPBSET"); - GEL_WatchAdd("*(long *)0x6FCC,x","GPBCLEAR"); - GEL_WatchAdd("*(long *)0x6FCE,x","GPBTOGGLE"); -} -hotmenu All_GPC_Registers() -{ - GEL_WatchAdd("*(long *)0x6FA6,x","GPCMUX1"); - GEL_WatchAdd("*(long *)0x6FA8,x","GPCMUX2"); - GEL_WatchAdd("*(long *)0x6FAA,x","GPCDIR"); - GEL_WatchAdd("*(long *)0x6FAC,x","GPCPUD"); - - GEL_WatchAdd("*(long *)0x6FC8,x","GPBDAT"); - GEL_WatchAdd("*(long *)0x6FCA,x","GPBSET"); - GEL_WatchAdd("*(long *)0x6FCC,x","GPBCLEAR"); - GEL_WatchAdd("*(long *)0x6FCE,x","GPBTOGGLE"); - - GEL_WatchAdd("*(long *)0x6FD0,x","GPCDAT"); - GEL_WatchAdd("*(long *)0x6FD2,x","GPCSET"); - GEL_WatchAdd("*(long *)0x6FD4,x","GPCCLEAR"); - GEL_WatchAdd("*(long *)0x6FD6,x","GPCTOGGLE"); -} - - -/********************************************************************/ -/* Multichannel Serial Port Registers */ -/********************************************************************/ -menuitem "Watch McBSP Registers"; - -hotmenu All_McBSP_A_Regs() -{ - GEL_WatchAdd("*0x5000,x","McBSPA DRR2"); - GEL_WatchAdd("*0x5001,x","McBSPA DRR1"); - GEL_WatchAdd("*0x5002,x","McBSPA DXR2"); - GEL_WatchAdd("*0x5003,x","McBSPA DXR1"); - GEL_WatchAdd("*0x5004,x","McBSPA SPCR2"); - GEL_WatchAdd("*0x5005,x","McBSPA SPCR1"); - GEL_WatchAdd("*0x5006,x","McBSPA RCR2"); - GEL_WatchAdd("*0x5007,x","McBSPA RCR1"); - GEL_WatchAdd("*0x5008,x","McBSPA XCR2"); - GEL_WatchAdd("*0x5009,x","McBSPA XCR1"); - GEL_WatchAdd("*0x500A,x","McBSPA SRGR2"); - GEL_WatchAdd("*0x500B,x","McBSPA SRGR1"); - GEL_WatchAdd("*0x500C,x","McBSPA MCR2"); - GEL_WatchAdd("*0x500D,x","McBSPA MCR1"); - GEL_WatchAdd("*0x500E,x","McBSPA RCERA"); - GEL_WatchAdd("*0x500F,x","McBSPA RCERB"); - GEL_WatchAdd("*0x5010,x","McBSPA XCERA"); - GEL_WatchAdd("*0x5011,x","McBSPA XCERB"); - GEL_WatchAdd("*0x5012,x","McBSPA PCR1"); - GEL_WatchAdd("*0x5013,x","McBSPA RCERC"); - GEL_WatchAdd("*0x5014,x","McBSPA RCERD"); - GEL_WatchAdd("*0x5015,x","McBSPA XCERC"); - GEL_WatchAdd("*0x5016,x","McBSPA XCERD"); - GEL_WatchAdd("*0x5017,x","McBSPA RCERE"); - GEL_WatchAdd("*0x5018,x","McBSPA RCERF"); - GEL_WatchAdd("*0x5019,x","McBSPA XCERE"); - GEL_WatchAdd("*0x501A,x","McBSPA XCERF"); - GEL_WatchAdd("*0x501B,x","McBSPA RCERG"); - GEL_WatchAdd("*0x501C,x","McBSPA RCERH"); - GEL_WatchAdd("*0x501D,x","McBSPA XCERG"); - GEL_WatchAdd("*0x501E,x","McBSPA XCERH"); - GEL_WatchAdd("*0x5023,x","McBSPA MFFINT"); - GEL_WatchAdd("*0x503F,x","McBSPA Revision"); -} - -hotmenu All_McBSP_B_Regs() -{ - GEL_WatchAdd("*0x5040,x","McBSPB DRR2"); - GEL_WatchAdd("*0x5041,x","McBSPB DRR1"); - GEL_WatchAdd("*0x5042,x","McBSPB DXR2"); - GEL_WatchAdd("*0x5043,x","McBSPB DXR1"); - GEL_WatchAdd("*0x5044,x","McBSPB SPCR2"); - GEL_WatchAdd("*0x5045,x","McBSPB SPCR1"); - GEL_WatchAdd("*0x5046,x","McBSPB RCR2"); - GEL_WatchAdd("*0x5047,x","McBSPB RCR1"); - GEL_WatchAdd("*0x5048,x","McBSPB XCR2"); - GEL_WatchAdd("*0x5049,x","McBSPB XCR1"); - GEL_WatchAdd("*0x504A,x","McBSPB SRGR2"); - GEL_WatchAdd("*0x504B,x","McBSPB SRGR1"); - GEL_WatchAdd("*0x504C,x","McBSPB MCR2"); - GEL_WatchAdd("*0x504D,x","McBSPB MCR1"); - GEL_WatchAdd("*0x504E,x","McBSPB RCERA"); - GEL_WatchAdd("*0x504F,x","McBSPB RCERB"); - GEL_WatchAdd("*0x5050,x","McBSPB XCERA"); - GEL_WatchAdd("*0x5051,x","McBSPB XCERB"); - GEL_WatchAdd("*0x5052,x","McBSPB PCR1"); - GEL_WatchAdd("*0x5053,x","McBSPB RCERC"); - GEL_WatchAdd("*0x5054,x","McBSPB RCERD"); - GEL_WatchAdd("*0x5055,x","McBSPB XCERC"); - GEL_WatchAdd("*0x5056,x","McBSPB XCERD"); - GEL_WatchAdd("*0x5057,x","McBSPB RCERE"); - GEL_WatchAdd("*0x5058,x","McBSPB RCERF"); - GEL_WatchAdd("*0x5059,x","McBSPB XCERE"); - GEL_WatchAdd("*0x505A,x","McBSPB XCERF"); - GEL_WatchAdd("*0x505B,x","McBSPB RCERG"); - GEL_WatchAdd("*0x505C,x","McBSPB RCERH"); - GEL_WatchAdd("*0x505D,x","McBSPB XCERG"); - GEL_WatchAdd("*0x505E,x","McBSPB XCERH"); - GEL_WatchAdd("*0x5063,x","McBSPB MFFINT"); - GEL_WatchAdd("*0x506F,x","McBSPB Revision"); -} - - - -/********************************************************************/ -/* I2C Registers */ -/********************************************************************/ -menuitem "Watch I2C Registers"; - -hotmenu All_I2C_Regs() -{ - GEL_WatchAdd("*0x7900,x","I2COAR"); - GEL_WatchAdd("*0x7901,x","I2CIER"); - GEL_WatchAdd("*0x7902,x","I2CSTR"); - GEL_WatchAdd("*0x7903,x","I2CCLKL"); - GEL_WatchAdd("*0x7904,x","I2CCLKH"); - GEL_WatchAdd("*0x7905,x","I2CCNT"); - GEL_WatchAdd("*0x7906,x","I2CDRR"); - GEL_WatchAdd("*0x7907,x","I2CSAR"); - GEL_WatchAdd("*0x7908,x","I2CDXR"); - GEL_WatchAdd("*0x7909,x","I2CMDR"); - GEL_WatchAdd("*0x790A,x","I2CISRC"); - GEL_WatchAdd("*0x790C,x","I2CPSC"); - GEL_WatchAdd("*0x7920,x","I2CFFTX"); - GEL_WatchAdd("*0x7921,x","I2CFFRX"); -} - - -/********************************************************************/ -/* Peripheral Interrupt Expansion Registers */ -/********************************************************************/ -menuitem "Watch Peripheral Interrupt Expansion Registers"; - -hotmenu All_PIE_Regs() -{ - GEL_WatchAdd("*0x0CE0,x","PIECTRL"); - GEL_WatchAdd("*0x0CE1,x","PIEACK"); - GEL_WatchAdd("*0x0CE2,x","PIEIER1"); - GEL_WatchAdd("*0x0CE3,x","PIEIFR1"); - GEL_WatchAdd("*0x0CE4,x","PIEIER2"); - GEL_WatchAdd("*0x0CE5,x","PIEIFR2"); - GEL_WatchAdd("*0x0CE6,x","PIEIER3"); - GEL_WatchAdd("*0x0CE7,x","PIEIFR3"); - GEL_WatchAdd("*0x0CE8,x","PIEIER4"); - GEL_WatchAdd("*0x0CE9,x","PIEIFR4"); - GEL_WatchAdd("*0x0CEA,x","PIEIER5"); - GEL_WatchAdd("*0x0CEB,x","PIEIFR5"); - GEL_WatchAdd("*0x0CEC,x","PIEIER6"); - GEL_WatchAdd("*0x0CED,x","PIEIFR6"); - GEL_WatchAdd("*0x0CEE,x","PIEIER7"); - GEL_WatchAdd("*0x0CEF,x","PIEIFR7"); - GEL_WatchAdd("*0x0CF0,x","PIEIER8"); - GEL_WatchAdd("*0x0CF1,x","PIEIFR8"); - GEL_WatchAdd("*0x0CF2,x","PIEIER9"); - GEL_WatchAdd("*0x0CF3,x","PIEIFR9"); - GEL_WatchAdd("*0x0CF4,x","PIEIER10"); - GEL_WatchAdd("*0x0CF5,x","PIEIFR10"); - GEL_WatchAdd("*0x0CF6,x","PIEIER11"); - GEL_WatchAdd("*0x0CF7,x","PIEIFR11"); - GEL_WatchAdd("*0x0CF8,x","PIEIER12"); - GEL_WatchAdd("*0x0CF9,x","PIEIFR12"); -} -hotmenu PIECTRL() -{ - GEL_WatchAdd("*0x0CE0,x","PIECTRL"); -} -hotmenu PIEACK() -{ - GEL_WatchAdd("*0x0CE1,x","PIEACK"); -} -hotmenu PIEIER1_and_PIEIFR1() -{ - GEL_WatchAdd("*0x0CE2,x","PIEIER1"); - GEL_WatchAdd("*0x0CE3,x","PIEIFR1"); -} -hotmenu PIEIER2_and_PIEIFR2() -{ - GEL_WatchAdd("*0x0CE4,x","PIEIER2"); - GEL_WatchAdd("*0x0CE5,x","PIEIFR2"); -} -hotmenu PIEIER3_and_PIEIFR3() -{ - GEL_WatchAdd("*0x0CE6,x","PIEIER3"); - GEL_WatchAdd("*0x0CE7,x","PIEIFR3"); -} -hotmenu PIEIER4_and_PIEIFR4() -{ - GEL_WatchAdd("*0x0CE8,x","PIEIER4"); - GEL_WatchAdd("*0x0CE9,x","PIEIFR4"); -} -hotmenu PIEIER5_and_PIEIFR5() -{ - GEL_WatchAdd("*0x0CEA,x","PIEIER5"); - GEL_WatchAdd("*0x0CEB,x","PIEIFR5"); -} -hotmenu PIEIER6_and_PIEIFR6() -{ - GEL_WatchAdd("*0x0CEC,x","PIEIER6"); - GEL_WatchAdd("*0x0CED,x","PIEIFR6"); -} -hotmenu PIEIER7_and_PIEIFR7() -{ - GEL_WatchAdd("*0x0CEE,x","PIEIER7"); - GEL_WatchAdd("*0x0CEF,x","PIEIFR7"); -} -hotmenu PIEIER8_and_PIEIFR8() -{ - GEL_WatchAdd("*0x0CF0,x","PIEIER8"); - GEL_WatchAdd("*0x0CF1,x","PIEIFR8"); -} -hotmenu PIEIER9_and_PIEIFR9() -{ - GEL_WatchAdd("*0x0CF2,x","PIEIER9"); - GEL_WatchAdd("*0x0CF3,x","PIEIFR9"); -} -hotmenu PIEIFR10_and_PIEIFR10() -{ - GEL_WatchAdd("*0x0CF4,x","PIEIER10"); - GEL_WatchAdd("*0x0CF5,x","PIEIFR10"); -} -hotmenu PIEIER11_and_PIEIFR11() -{ - GEL_WatchAdd("*0x0CF6,x","PIEIER11"); - GEL_WatchAdd("*0x0CF7,x","PIEIFR11"); -} -hotmenu PIEIER12_and_PIEIFR12() -{ - GEL_WatchAdd("*0x0CF8,x","PIEIER12"); - GEL_WatchAdd("*0x0CF9,x","PIEIFR12"); -} - - -/********************************************************************/ -/* Serial Communication Interface Registers */ -/********************************************************************/ -menuitem "Watch SCI Registers"; - -hotmenu SCI_A_All_Regs() -{ - GEL_WatchAdd("*0x7050,x","SCICCRA"); - GEL_WatchAdd("*0x7051,x","SCICTL1A"); - GEL_WatchAdd("*0x7052,x","SCIHBAUDA"); - GEL_WatchAdd("*0x7053,x","SCILBAUDA"); - GEL_WatchAdd("*0x7054,x","SCICTL2A"); - GEL_WatchAdd("*0x7055,x","SCIRXSTA"); - GEL_WatchAdd("*0x7056,x","SCIRXEMUA"); - GEL_WatchAdd("*0x7057,x","SCIRXBUFA"); - GEL_WatchAdd("*0x7059,x","SCITXBUFA"); - GEL_WatchAdd("*0x705A,x","SCIFFTXA"); - GEL_WatchAdd("*0x705B,x","SCIFFRXA"); - GEL_WatchAdd("*0x705C,x","SCIFFCTA"); - GEL_WatchAdd("*0x705F,x","SCIPRIA"); -} -hotmenu SCI_A_FIFO_Registers() -{ - GEL_WatchAdd("*0x705A,x","SCIFFTXA"); - GEL_WatchAdd("*0x705B,x","SCIFFRXA"); - GEL_WatchAdd("*0x705C,x","SCIFFCTA"); -} -hotmenu SCI_B_All_Regs() -{ - GEL_WatchAdd("*0x7750,x","SCICCRB"); - GEL_WatchAdd("*0x7751,x","SCICTL1B"); - GEL_WatchAdd("*0x7752,x","SCIHBAUDB"); - GEL_WatchAdd("*0x7753,x","SCILBAUDB"); - GEL_WatchAdd("*0x7754,x","SCICTL2B"); - GEL_WatchAdd("*0x7755,x","SCIRXSTB"); - GEL_WatchAdd("*0x7756,x","SCIRXEMUB"); - GEL_WatchAdd("*0x7757,x","SCIRXBUFB"); - GEL_WatchAdd("*0x7759,x","SCITXBUFB"); - GEL_WatchAdd("*0x775A,x","SCIFFTXB"); - GEL_WatchAdd("*0x775B,x","SCIFFRXB"); - GEL_WatchAdd("*0x775C,x","SCIFFCTB"); - GEL_WatchAdd("*0x775F,x","SCIPRIB"); -} -hotmenu SCI_B_FIFO_Registers() -{ - GEL_WatchAdd("*0x775A,x","SCIFFTXB"); - GEL_WatchAdd("*0x775B,x","SCIFFRXB"); - GEL_WatchAdd("*0x775C,x","SCIFFCTB"); -} -hotmenu SCI_C_All_Regs() -{ - GEL_WatchAdd("*0x7770,x","SCICCRC"); - GEL_WatchAdd("*0x7771,x","SCICTL1C"); - GEL_WatchAdd("*0x7772,x","SCIHBAUDC"); - GEL_WatchAdd("*0x7773,x","SCILBAUDC"); - GEL_WatchAdd("*0x7774,x","SCICTL2C"); - GEL_WatchAdd("*0x7775,x","SCIRXSTC"); - GEL_WatchAdd("*0x7776,x","SCIRXEMUC"); - GEL_WatchAdd("*0x7777,x","SCIRXBUFC"); - GEL_WatchAdd("*0x7779,x","SCITXBUFC"); - GEL_WatchAdd("*0x777A,x","SCIFFTXC"); - GEL_WatchAdd("*0x777B,x","SCIFFRXC"); - GEL_WatchAdd("*0x777C,x","SCIFFCTC"); - GEL_WatchAdd("*0x777F,x","SCIPRIC"); -} -hotmenu SCI_C_FIFO_Registers() -{ - GEL_WatchAdd("*0x777A,x","SCIFFTXC"); - GEL_WatchAdd("*0x777B,x","SCIFFRXC"); - GEL_WatchAdd("*0x777C,x","SCIFFCTC"); -} - - -/********************************************************************/ -/* Serial Peripheral Interface Registers */ -/********************************************************************/ -menuitem "Watch SPI Registers"; - -hotmenu SPI_A_All_Regs() -{ - GEL_WatchAdd("*0x7040,x","SPIA SPICCR"); - GEL_WatchAdd("*0x7041,x","SPIA SPICTL"); - GEL_WatchAdd("*0x7042,x","SPIA SPIST"); - GEL_WatchAdd("*0x7044,x","SPIA SPIBRR"); - GEL_WatchAdd("*0x7046,x","SPIA SPIEMU"); - GEL_WatchAdd("*0x7047,x","SPIA SPIRXBUF"); - GEL_WatchAdd("*0x7048,x","SPIA SPITXBUF"); - GEL_WatchAdd("*0x7049,x","SPIA SPIDAT"); - GEL_WatchAdd("*0x704A,x","SPIA SPIFFTX"); - GEL_WatchAdd("*0x704B,x","SPIA SPIFFRX"); - GEL_WatchAdd("*0x704C,x","SPIA SPIFFCT"); - GEL_WatchAdd("*0x704F,x","SPIA SPIPRI"); -} -hotmenu SPI_A_FIFO_Registers() -{ - GEL_WatchAdd("*0x704A,x","SPIA SPIFFTX"); - GEL_WatchAdd("*0x704B,x","SPIA SPIFFRX"); - GEL_WatchAdd("*0x704C,x","SPIA SPIFFCT"); -} - - -/********************************************************************/ -/* Watchdog Timer Registers */ -/********************************************************************/ -menuitem "Watch Watchdog Timer Registers"; - -hotmenu All_Watchdog_Regs() -{ - GEL_WatchAdd("*0x7023,x","WDCNTR"); - GEL_WatchAdd("*0x7025,x","WDKEY"); - GEL_WatchAdd("*0x7029,x","WDCR"); - GEL_WatchAdd("*0x7022,x","SCSR"); -} - -/********************************************************************/ -/*** End of file ***/ diff --git a/Source/External/v120/DSP2833x_common/include/IQmathLib.h b/Source/External/v120/DSP2833x_common/include/IQmathLib.h deleted file mode 100644 index b62ddf8..0000000 --- a/Source/External/v120/DSP2833x_common/include/IQmathLib.h +++ /dev/null @@ -1,4493 +0,0 @@ -// TI File $Revision: /main/2 $ -// Checkin $Date: July 10, 2008 10:59:52 $ -//########################################################################### -// -// FILE: IQmathLib.h -// -// TITLE: IQ Math library functions definitions. -// -//########################################################################### -// -// Ver | dd-mmm-yyyy | Who | Description of changes -// =====|=============|=======|============================================== -// 1.3 | 19 Nov 2001 | A. T. | Original Release. -// -----|-------------|-------|---------------------------------------------- -// 1.4 | 17 May 2002 | A. T. | Added new functions and support for -// | | | intrinsics IQmpy, IQxmpy, IQsat. -// -----|-------------|-------|---------------------------------------------- -// 1.4a| 12 Jun 2002 | A. T. | Fixed problem with _IQ() operation on -// | | | variables. -// -----|-------------|-------|---------------------------------------------- -// 1.4b| 18 Jun 2002 | A. T. | Fixed bug with _IQtoIQN() and _IQNtoIQ() -// | | | operations. -// -----|-------------|-------|---------------------------------------------- -// 1.4d| 30 Mar 2003 | DA/SD | 1. Added macro parameters in parentheses -// | | | in number of places where it matters -// | | | 2. Added macro definition to include header -// | | | file multiple times in the program. -// -----|-------------|-------|---------------------------------------------- -// 1.4e| 17 Jun 2004 | AT/DA | Added IQexp function. -// | | | Added IQasin & IQacos functions (thanks DA). -// -----|-------------|-------|---------------------------------------------- -// 1.4f| 10 Mar 2005 | AT | Fixed Bug In IQexp function. -// -----|-------------|-------|---------------------------------------------- -// 1.5 | 30 Jan 2008 | LH | 1. Changed the definion of the _IQatan2PU(A,B) -// | | | macro for FLOAT_MATH so that a call to -// | | | divide will not occur. -// | | | 2. If MATH_TYPE == FLOAT_MATH, then include the -// | | | following standard headers: math.h -// | | | stdlib.h. -// | | | 3. Added missing #defines for the non-global -// | | | _IQatanN() function -// | | | 4. Adding missing definitions for absolute -// | | | value when MATH_TYPE == FLOAT_MATH -// | | | 5. Included limits.h and changed the definition -// | | | of MAX_IQ_NEG to LONG_MIN and MAX_IQ_POS -// | | | to LONG_MAX -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -// -// User needs to configure "MATH_TYPE" and "GLOBAL_Q" values: -// -//--------------------------------------------------------------------------- -// Select math type, IQ_MATH or FLOAT_MATH: -// - -#ifndef __IQMATHLIB_H_INCLUDED__ -#define __IQMATHLIB_H_INCLUDED__ - - -#define FLOAT_MATH 1 -#define IQ_MATH 0 - -#ifndef MATH_TYPE -#define MATH_TYPE IQ_MATH -#endif - -//--------------------------------------------------------------------------- -// Select global Q value and scaling. The Q value is limited to the -// following range for all functions: -// -// 30 <= GLOBAL_Q <= 1 -// -#ifndef GLOBAL_Q -#define GLOBAL_Q 24 -#endif - -//--------------------------------------------------------------------------- -// If using FLOAT_MATH, include standard headers to avoid conversion issues -// -#if MATH_TYPE == FLOAT_MATH -#include -#include -#endif -#include - -//--------------------------------------------------------------------------- -// Various Usefull Constant Definitions: -// -#define QG GLOBAL_Q -#define Q30 30 -#define Q29 29 -#define Q28 28 -#define Q27 27 -#define Q26 26 -#define Q25 25 -#define Q24 24 -#define Q23 23 -#define Q22 22 -#define Q21 21 -#define Q20 20 -#define Q19 19 -#define Q18 18 -#define Q17 17 -#define Q16 16 -#define Q15 15 -#define Q14 14 -#define Q13 13 -#define Q12 12 -#define Q11 11 -#define Q10 10 -#define Q9 9 -#define Q8 8 -#define Q7 7 -#define Q6 6 -#define Q5 5 -#define Q4 4 -#define Q3 3 -#define Q2 2 -#define Q1 1 - -#define MAX_IQ_POS LONG_MAX -#define MAX_IQ_NEG LONG_MIN -#define MIN_IQ_POS 1 -#define MIN_IQ_NEG -1 - -//########################################################################### -#if MATH_TYPE == IQ_MATH -//########################################################################### -// If IQ_MATH is used, the following IQmath library function definitions -// are used: -//=========================================================================== -typedef long _iq; -typedef long _iq30; -typedef long _iq29; -typedef long _iq28; -typedef long _iq27; -typedef long _iq26; -typedef long _iq25; -typedef long _iq24; -typedef long _iq23; -typedef long _iq22; -typedef long _iq21; -typedef long _iq20; -typedef long _iq19; -typedef long _iq18; -typedef long _iq17; -typedef long _iq16; -typedef long _iq15; -typedef long _iq14; -typedef long _iq13; -typedef long _iq12; -typedef long _iq11; -typedef long _iq10; -typedef long _iq9; -typedef long _iq8; -typedef long _iq7; -typedef long _iq6; -typedef long _iq5; -typedef long _iq4; -typedef long _iq3; -typedef long _iq2; -typedef long _iq1; -//--------------------------------------------------------------------------- -#define _IQ30(A) (long) ((A) * 1073741824.0L) -#define _IQ29(A) (long) ((A) * 536870912.0L) -#define _IQ28(A) (long) ((A) * 268435456.0L) -#define _IQ27(A) (long) ((A) * 134217728.0L) -#define _IQ26(A) (long) ((A) * 67108864.0L) -#define _IQ25(A) (long) ((A) * 33554432.0L) -#define _IQ24(A) (long) ((A) * 16777216.0L) -#define _IQ23(A) (long) ((A) * 8388608.0L) -#define _IQ22(A) (long) ((A) * 4194304.0L) -#define _IQ21(A) (long) ((A) * 2097152.0L) -#define _IQ20(A) (long) ((A) * 1048576.0L) -#define _IQ19(A) (long) ((A) * 524288.0L) -#define _IQ18(A) (long) ((A) * 262144.0L) -#define _IQ17(A) (long) ((A) * 131072.0L) -#define _IQ16(A) (long) ((A) * 65536.0L) -#define _IQ15(A) (long) ((A) * 32768.0L) -#define _IQ14(A) (long) ((A) * 16384.0L) -#define _IQ13(A) (long) ((A) * 8192.0L) -#define _IQ12(A) (long) ((A) * 4096.0L) -#define _IQ11(A) (long) ((A) * 2048.0L) -#define _IQ10(A) (long) ((A) * 1024.0L) -#define _IQ9(A) (long) ((A) * 512.0L) -#define _IQ8(A) (long) ((A) * 256.0L) -#define _IQ7(A) (long) ((A) * 128.0L) -#define _IQ6(A) (long) ((A) * 64.0L) -#define _IQ5(A) (long) ((A) * 32.0L) -#define _IQ4(A) (long) ((A) * 16.0L) -#define _IQ3(A) (long) ((A) * 8.0L) -#define _IQ2(A) (long) ((A) * 4.0L) -#define _IQ1(A) (long) ((A) * 2.0L) - -#if GLOBAL_Q == 30 -#define _IQ(A) _IQ30(A) -#endif -#if GLOBAL_Q == 29 -#define _IQ(A) _IQ29(A) -#endif -#if GLOBAL_Q == 28 -#define _IQ(A) _IQ28(A) -#endif -#if GLOBAL_Q == 27 -#define _IQ(A) _IQ27(A) -#endif -#if GLOBAL_Q == 26 -#define _IQ(A) _IQ26(A) -#endif -#if GLOBAL_Q == 25 -#define _IQ(A) _IQ25(A) -#endif -#if GLOBAL_Q == 24 -#define _IQ(A) _IQ24(A) -#endif -#if GLOBAL_Q == 23 -#define _IQ(A) _IQ23(A) -#endif -#if GLOBAL_Q == 22 -#define _IQ(A) _IQ22(A) -#endif -#if GLOBAL_Q == 21 -#define _IQ(A) _IQ21(A) -#endif -#if GLOBAL_Q == 20 -#define _IQ(A) _IQ20(A) -#endif -#if GLOBAL_Q == 19 -#define _IQ(A) _IQ19(A) -#endif -#if GLOBAL_Q == 18 -#define _IQ(A) _IQ18(A) -#endif -#if GLOBAL_Q == 17 -#define _IQ(A) _IQ17(A) -#endif -#if GLOBAL_Q == 16 -#define _IQ(A) _IQ16(A) -#endif -#if GLOBAL_Q == 15 -#define _IQ(A) _IQ15(A) -#endif -#if GLOBAL_Q == 14 -#define _IQ(A) _IQ14(A) -#endif -#if GLOBAL_Q == 13 -#define _IQ(A) _IQ13(A) -#endif -#if GLOBAL_Q == 12 -#define _IQ(A) _IQ12(A) -#endif -#if GLOBAL_Q == 11 -#define _IQ(A) _IQ11(A) -#endif -#if GLOBAL_Q == 10 -#define _IQ(A) _IQ10(A) -#endif -#if GLOBAL_Q == 9 -#define _IQ(A) _IQ9(A) -#endif -#if GLOBAL_Q == 8 -#define _IQ(A) _IQ8(A) -#endif -#if GLOBAL_Q == 7 -#define _IQ(A) _IQ7(A) -#endif -#if GLOBAL_Q == 6 -#define _IQ(A) _IQ6(A) -#endif -#if GLOBAL_Q == 5 -#define _IQ(A) _IQ5(A) -#endif -#if GLOBAL_Q == 4 -#define _IQ(A) _IQ4(A) -#endif -#if GLOBAL_Q == 3 -#define _IQ(A) _IQ3(A) -#endif -#if GLOBAL_Q == 2 -#define _IQ(A) _IQ2(A) -#endif -#if GLOBAL_Q == 1 -#define _IQ(A) _IQ1(A) -#endif -//--------------------------------------------------------------------------- -extern float _IQ30toF(long A); -extern float _IQ29toF(long A); -extern float _IQ28toF(long A); -extern float _IQ27toF(long A); -extern float _IQ26toF(long A); -extern float _IQ25toF(long A); -extern float _IQ24toF(long A); -extern float _IQ23toF(long A); -extern float _IQ22toF(long A); -extern float _IQ21toF(long A); -extern float _IQ20toF(long A); -extern float _IQ19toF(long A); -extern float _IQ18toF(long A); -extern float _IQ17toF(long A); -extern float _IQ16toF(long A); -extern float _IQ15toF(long A); -extern float _IQ14toF(long A); -extern float _IQ13toF(long A); -extern float _IQ12toF(long A); -extern float _IQ11toF(long A); -extern float _IQ10toF(long A); -extern float _IQ9toF(long A); -extern float _IQ8toF(long A); -extern float _IQ7toF(long A); -extern float _IQ6toF(long A); -extern float _IQ5toF(long A); -extern float _IQ4toF(long A); -extern float _IQ3toF(long A); -extern float _IQ2toF(long A); -extern float _IQ1toF(long A); - -#if GLOBAL_Q == 30 -#define _IQtoF(A) _IQ30toF(A) -#endif -#if GLOBAL_Q == 29 -#define _IQtoF(A) _IQ29toF(A) -#endif -#if GLOBAL_Q == 28 -#define _IQtoF(A) _IQ28toF(A) -#endif -#if GLOBAL_Q == 27 -#define _IQtoF(A) _IQ27toF(A) -#endif -#if GLOBAL_Q == 26 -#define _IQtoF(A) _IQ26toF(A) -#endif -#if GLOBAL_Q == 25 -#define _IQtoF(A) _IQ25toF(A) -#endif -#if GLOBAL_Q == 24 -#define _IQtoF(A) _IQ24toF(A) -#endif -#if GLOBAL_Q == 23 -#define _IQtoF(A) _IQ23toF(A) -#endif -#if GLOBAL_Q == 22 -#define _IQtoF(A) _IQ22toF(A) -#endif -#if GLOBAL_Q == 21 -#define _IQtoF(A) _IQ21toF(A) -#endif -#if GLOBAL_Q == 20 -#define _IQtoF(A) _IQ20toF(A) -#endif -#if GLOBAL_Q == 19 -#define _IQtoF(A) _IQ19toF(A) -#endif -#if GLOBAL_Q == 18 -#define _IQtoF(A) _IQ18toF(A) -#endif -#if GLOBAL_Q == 17 -#define _IQtoF(A) _IQ17toF(A) -#endif -#if GLOBAL_Q == 16 -#define _IQtoF(A) _IQ16toF(A) -#endif -#if GLOBAL_Q == 15 -#define _IQtoF(A) _IQ15toF(A) -#endif -#if GLOBAL_Q == 14 -#define _IQtoF(A) _IQ14toF(A) -#endif -#if GLOBAL_Q == 13 -#define _IQtoF(A) _IQ13toF(A) -#endif -#if GLOBAL_Q == 12 -#define _IQtoF(A) _IQ12toF(A) -#endif -#if GLOBAL_Q == 11 -#define _IQtoF(A) _IQ11toF(A) -#endif -#if GLOBAL_Q == 10 -#define _IQtoF(A) _IQ10toF(A) -#endif -#if GLOBAL_Q == 9 -#define _IQtoF(A) _IQ9toF(A) -#endif -#if GLOBAL_Q == 8 -#define _IQtoF(A) _IQ8toF(A) -#endif -#if GLOBAL_Q == 7 -#define _IQtoF(A) _IQ7toF(A) -#endif -#if GLOBAL_Q == 6 -#define _IQtoF(A) _IQ6toF(A) -#endif -#if GLOBAL_Q == 5 -#define _IQtoF(A) _IQ5toF(A) -#endif -#if GLOBAL_Q == 4 -#define _IQtoF(A) _IQ4toF(A) -#endif -#if GLOBAL_Q == 3 -#define _IQtoF(A) _IQ3toF(A) -#endif -#if GLOBAL_Q == 2 -#define _IQtoF(A) _IQ2toF(A) -#endif -#if GLOBAL_Q == 1 -#define _IQtoF(A) _IQ1toF(A) -#endif -//--------------------------------------------------------------------------- -#define _IQsat(A, Pos, Neg) __IQsat(A, Pos, Neg) -//--------------------------------------------------------------------------- -#define _IQtoIQ30(A) ((long) (A) << (30 - GLOBAL_Q)) -#define _IQ30toIQ(A) ((long) (A) >> (30 - GLOBAL_Q)) - -#if (GLOBAL_Q >= 29) -#define _IQtoIQ29(A) ((long) (A) >> (GLOBAL_Q - 29)) -#define _IQ29toIQ(A) ((long) (A) << (GLOBAL_Q - 29)) -#else -#define _IQtoIQ29(A) ((long) (A) << (29 - GLOBAL_Q)) -#define _IQ29toIQ(A) ((long) (A) >> (29 - GLOBAL_Q)) -#endif - -#if (GLOBAL_Q >= 28) -#define _IQtoIQ28(A) ((long) (A) >> (GLOBAL_Q - 28)) -#define _IQ28toIQ(A) ((long) (A) << (GLOBAL_Q - 28)) -#else -#define _IQtoIQ28(A) ((long) (A) << (28 - GLOBAL_Q)) -#define _IQ28toIQ(A) ((long) (A) >> (28 - GLOBAL_Q)) -#endif - -#if (GLOBAL_Q >= 27) -#define _IQtoIQ27(A) ((long) (A) >> (GLOBAL_Q - 27)) -#define _IQ27toIQ(A) ((long) (A) << (GLOBAL_Q - 27)) -#else -#define _IQtoIQ27(A) ((long) (A) << (27 - GLOBAL_Q)) -#define _IQ27toIQ(A) ((long) (A) >> (27 - GLOBAL_Q)) -#endif - -#if (GLOBAL_Q >= 26) -#define _IQtoIQ26(A) ((long) (A) >> (GLOBAL_Q - 26)) -#define _IQ26toIQ(A) ((long) (A) << (GLOBAL_Q - 26)) -#else -#define _IQtoIQ26(A) ((long) (A) << (26 - GLOBAL_Q)) -#define _IQ26toIQ(A) ((long) (A) >> (26 - GLOBAL_Q)) -#endif - -#if (GLOBAL_Q >= 25) -#define _IQtoIQ25(A) ((long) (A) >> (GLOBAL_Q - 25)) -#define _IQ25toIQ(A) ((long) (A) << (GLOBAL_Q - 25)) -#else -#define _IQtoIQ25(A) ((long) (A) << (25 - GLOBAL_Q)) -#define _IQ25toIQ(A) ((long) (A) >> (25 - GLOBAL_Q)) -#endif - -#if (GLOBAL_Q >= 24) -#define _IQtoIQ24(A) ((long) (A) >> (GLOBAL_Q - 24)) -#define _IQ24toIQ(A) ((long) (A) << (GLOBAL_Q - 24)) -#else -#define _IQtoIQ24(A) ((long) (A) << (24 - GLOBAL_Q)) -#define _IQ24toIQ(A) ((long) (A) >> (24 - GLOBAL_Q)) -#endif - -#if (GLOBAL_Q >= 23) -#define _IQtoIQ23(A) ((long) (A) >> (GLOBAL_Q - 23)) -#define _IQ23toIQ(A) ((long) (A) << (GLOBAL_Q - 23)) -#else -#define _IQtoIQ23(A) ((long) (A) << (23 - GLOBAL_Q)) -#define _IQ23toIQ(A) ((long) (A) >> (23 - GLOBAL_Q)) -#endif - -#if (GLOBAL_Q >= 22) -#define _IQtoIQ22(A) ((long) (A) >> (GLOBAL_Q - 22)) -#define _IQ22toIQ(A) ((long) (A) << (GLOBAL_Q - 22)) -#else -#define _IQtoIQ22(A) ((long) (A) << (22 - GLOBAL_Q)) -#define _IQ22toIQ(A) ((long) (A) >> (22 - GLOBAL_Q)) -#endif - -#if (GLOBAL_Q >= 21) -#define _IQtoIQ21(A) ((long) (A) >> (GLOBAL_Q - 21)) -#define _IQ21toIQ(A) ((long) (A) << (GLOBAL_Q - 21)) -#else -#define _IQtoIQ21(A) ((long) (A) << (21 - GLOBAL_Q)) -#define _IQ21toIQ(A) ((long) (A) >> (21 - GLOBAL_Q)) -#endif - -#if (GLOBAL_Q >= 20) -#define _IQtoIQ20(A) ((long) (A) >> (GLOBAL_Q - 20)) -#define _IQ20toIQ(A) ((long) (A) << (GLOBAL_Q - 20)) -#else -#define _IQtoIQ20(A) ((long) (A) << (20 - GLOBAL_Q)) -#define _IQ20toIQ(A) ((long) (A) >> (20 - GLOBAL_Q)) -#endif - -#if (GLOBAL_Q >= 19) -#define _IQtoIQ19(A) ((long) (A) >> (GLOBAL_Q - 19)) -#define _IQ19toIQ(A) ((long) (A) << (GLOBAL_Q - 19)) -#else -#define _IQtoIQ19(A) ((long) (A) << (19 - GLOBAL_Q)) -#define _IQ19toIQ(A) ((long) (A) >> (19 - GLOBAL_Q)) -#endif - -#if (GLOBAL_Q >= 18) -#define _IQtoIQ18(A) ((long) (A) >> (GLOBAL_Q - 18)) -#define _IQ18toIQ(A) ((long) (A) << (GLOBAL_Q - 18)) -#else -#define _IQtoIQ18(A) ((long) (A) << (18 - GLOBAL_Q)) -#define _IQ18toIQ(A) ((long) (A) >> (18 - GLOBAL_Q)) -#endif - -#if (GLOBAL_Q >= 17) -#define _IQtoIQ17(A) ((long) (A) >> (GLOBAL_Q - 17)) -#define _IQ17toIQ(A) ((long) (A) << (GLOBAL_Q - 17)) -#else -#define _IQtoIQ17(A) ((long) (A) << (17 - GLOBAL_Q)) -#define _IQ17toIQ(A) ((long) (A) >> (17 - GLOBAL_Q)) -#endif - -#if (GLOBAL_Q >= 16) -#define _IQtoIQ16(A) ((long) (A) >> (GLOBAL_Q - 16)) -#define _IQ16toIQ(A) ((long) (A) << (GLOBAL_Q - 16)) -#else -#define _IQtoIQ16(A) ((long) (A) << (16 - GLOBAL_Q)) -#define _IQ16toIQ(A) ((long) (A) >> (16 - GLOBAL_Q)) -#endif - -#if (GLOBAL_Q >= 15) -#define _IQtoIQ15(A) ((long) (A) >> (GLOBAL_Q - 15)) -#define _IQ15toIQ(A) ((long) (A) << (GLOBAL_Q - 15)) -#define _IQtoQ15(A) ((long) (A) >> (GLOBAL_Q - 15)) -#define _Q15toIQ(A) ((long) (A) << (GLOBAL_Q - 15)) -#else -#define _IQtoIQ15(A) ((long) (A) << (15 - GLOBAL_Q)) -#define _IQ15toIQ(A) ((long) (A) >> (15 - GLOBAL_Q)) -#define _IQtoQ15(A) ((long) (A) << (15 - GLOBAL_Q)) -#define _Q15toIQ(A) ((long) (A) >> (15 - GLOBAL_Q)) -#endif - -#if (GLOBAL_Q >= 14) -#define _IQtoIQ14(A) ((long) (A) >> (GLOBAL_Q - 14)) -#define _IQ14toIQ(A) ((long) (A) << (GLOBAL_Q - 14)) -#define _IQtoQ14(A) ((long) (A) >> (GLOBAL_Q - 14)) -#define _Q14toIQ(A) ((long) (A) << (GLOBAL_Q - 14)) -#else -#define _IQtoIQ14(A) ((long) (A) << (14 - GLOBAL_Q)) -#define _IQ14toIQ(A) ((long) (A) >> (14 - GLOBAL_Q)) -#define _IQtoQ14(A) ((long) (A) << (14 - GLOBAL_Q)) -#define _Q14toIQ(A) ((long) (A) >> (14 - GLOBAL_Q)) -#endif - -#if (GLOBAL_Q >= 13) -#define _IQtoIQ13(A) ((long) (A) >> (GLOBAL_Q - 13)) -#define _IQ13toIQ(A) ((long) (A) << (GLOBAL_Q - 13)) -#define _IQtoQ13(A) ((long) (A) >> (GLOBAL_Q - 13)) -#define _Q13toIQ(A) ((long) (A) << (GLOBAL_Q - 13)) -#else -#define _IQtoIQ13(A) ((long) (A) << (13 - GLOBAL_Q)) -#define _IQ13toIQ(A) ((long) (A) >> (13 - GLOBAL_Q)) -#define _IQtoQ13(A) ((long) (A) << (13 - GLOBAL_Q)) -#define _Q13toIQ(A) ((long) (A) >> (13 - GLOBAL_Q)) -#endif - -#if (GLOBAL_Q >= 12) -#define _IQtoIQ12(A) ((long) (A) >> (GLOBAL_Q - 12)) -#define _IQ12toIQ(A) ((long) (A) << (GLOBAL_Q - 12)) -#define _IQtoQ12(A) ((long) (A) >> (GLOBAL_Q - 12)) -#define _Q12toIQ(A) ((long) (A) << (GLOBAL_Q - 12)) -#else -#define _IQtoIQ12(A) ((long) (A) << (12 - GLOBAL_Q)) -#define _IQ12toIQ(A) ((long) (A) >> (12 - GLOBAL_Q)) -#define _IQtoQ12(A) ((long) (A) << (12 - GLOBAL_Q)) -#define _Q12toIQ(A) ((long) (A) >> (12 - GLOBAL_Q)) -#endif - -#if (GLOBAL_Q >= 11) -#define _IQtoIQ11(A) ((long) (A) >> (GLOBAL_Q - 11)) -#define _IQ11toIQ(A) ((long) (A) << (GLOBAL_Q - 11)) -#define _IQtoQ11(A) ((long) (A) >> (GLOBAL_Q - 11)) -#define _Q11toIQ(A) ((long) (A) << (GLOBAL_Q - 11)) -#else -#define _IQtoIQ11(A) ((long) (A) << (11 - GLOBAL_Q)) -#define _IQ11toIQ(A) ((long) (A) >> (11 - GLOBAL_Q)) -#define _IQtoQ11(A) ((long) (A) << (11 - GLOBAL_Q)) -#define _Q11toIQ(A) ((long) (A) >> (11 - GLOBAL_Q)) -#endif - -#if (GLOBAL_Q >= 10) -#define _IQtoIQ10(A) ((long) (A) >> (GLOBAL_Q - 10)) -#define _IQ10toIQ(A) ((long) (A) << (GLOBAL_Q - 10)) -#define _IQtoQ10(A) ((long) (A) >> (GLOBAL_Q - 10)) -#define _Q10toIQ(A) ((long) (A) << (GLOBAL_Q - 10)) -#else -#define _IQtoIQ10(A) ((long) (A) << (10 - GLOBAL_Q)) -#define _IQ10toIQ(A) ((long) (A) >> (10 - GLOBAL_Q)) -#define _IQtoQ10(A) ((long) (A) << (10 - GLOBAL_Q)) -#define _Q10toIQ(A) ((long) (A) >> (10 - GLOBAL_Q)) -#endif - -#if (GLOBAL_Q >= 9) -#define _IQtoIQ9(A) ((long) (A) >> (GLOBAL_Q - 9)) -#define _IQ9toIQ(A) ((long) (A) << (GLOBAL_Q - 9)) -#define _IQtoQ9(A) ((long) (A) >> (GLOBAL_Q - 9)) -#define _Q9toIQ(A) ((long) (A) << (GLOBAL_Q - 9)) -#else -#define _IQtoIQ9(A) ((long) (A) << (9 - GLOBAL_Q)) -#define _IQ9toIQ(A) ((long) (A) >> (9 - GLOBAL_Q)) -#define _IQtoQ9(A) ((long) (A) << (9 - GLOBAL_Q)) -#define _Q9toIQ(A) ((long) (A) >> (9 - GLOBAL_Q)) -#endif - -#if (GLOBAL_Q >= 8) -#define _IQtoIQ8(A) ((long) (A) >> (GLOBAL_Q - 8)) -#define _IQ8toIQ(A) ((long) (A) << (GLOBAL_Q - 8)) -#define _IQtoQ8(A) ((long) (A) >> (GLOBAL_Q - 8)) -#define _Q8toIQ(A) ((long) (A) << (GLOBAL_Q - 8)) -#else -#define _IQtoIQ8(A) ((long) (A) << (8 - GLOBAL_Q)) -#define _IQ8toIQ(A) ((long) (A) >> (8 - GLOBAL_Q)) -#define _IQtoQ8(A) ((long) (A) << (8 - GLOBAL_Q)) -#define _Q8toIQ(A) ((long) (A) >> (8 - GLOBAL_Q)) -#endif - -#if (GLOBAL_Q >= 7) -#define _IQtoIQ7(A) ((long) (A) >> (GLOBAL_Q - 7)) -#define _IQ7toIQ(A) ((long) (A) << (GLOBAL_Q - 7)) -#define _IQtoQ7(A) ((long) (A) >> (GLOBAL_Q - 7)) -#define _Q7toIQ(A) ((long) (A) << (GLOBAL_Q - 7)) -#else -#define _IQtoIQ7(A) ((long) (A) << (7 - GLOBAL_Q)) -#define _IQ7toIQ(A) ((long) (A) >> (7 - GLOBAL_Q)) -#define _IQtoQ7(A) ((long) (A) << (7 - GLOBAL_Q)) -#define _Q7toIQ(A) ((long) (A) >> (7 - GLOBAL_Q)) -#endif - -#if (GLOBAL_Q >= 6) -#define _IQtoIQ6(A) ((long) (A) >> (GLOBAL_Q - 6)) -#define _IQ6toIQ(A) ((long) (A) << (GLOBAL_Q - 6)) -#define _IQtoQ6(A) ((long) (A) >> (GLOBAL_Q - 6)) -#define _Q6toIQ(A) ((long) (A) << (GLOBAL_Q - 6)) -#else -#define _IQtoIQ6(A) ((long) (A) << (6 - GLOBAL_Q)) -#define _IQ6toIQ(A) ((long) (A) >> (6 - GLOBAL_Q)) -#define _IQtoQ6(A) ((long) (A) << (6 - GLOBAL_Q)) -#define _Q6toIQ(A) ((long) (A) >> (6 - GLOBAL_Q)) -#endif - -#if (GLOBAL_Q >= 5) -#define _IQtoIQ5(A) ((long) (A) >> (GLOBAL_Q - 5)) -#define _IQ5toIQ(A) ((long) (A) << (GLOBAL_Q - 5)) -#define _IQtoQ5(A) ((long) (A) >> (GLOBAL_Q - 5)) -#define _Q5toIQ(A) ((long) (A) << (GLOBAL_Q - 5)) -#else -#define _IQtoIQ5(A) ((long) (A) << (5 - GLOBAL_Q)) -#define _IQ5toIQ(A) ((long) (A) >> (5 - GLOBAL_Q)) -#define _IQtoQ5(A) ((long) (A) << (5 - GLOBAL_Q)) -#define _Q5toIQ(A) ((long) (A) >> (5 - GLOBAL_Q)) -#endif - -#if (GLOBAL_Q >= 4) -#define _IQtoIQ4(A) ((long) (A) >> (GLOBAL_Q - 4)) -#define _IQ4toIQ(A) ((long) (A) << (GLOBAL_Q - 4)) -#define _IQtoQ4(A) ((long) (A) >> (GLOBAL_Q - 4)) -#define _Q4toIQ(A) ((long) (A) << (GLOBAL_Q - 4)) -#else -#define _IQtoIQ4(A) ((long) (A) << (4 - GLOBAL_Q)) -#define _IQ4toIQ(A) ((long) (A) >> (4 - GLOBAL_Q)) -#define _IQtoQ4(A) ((long) (A) << (4 - GLOBAL_Q)) -#define _Q4toIQ(A) ((long) (A) >> (4 - GLOBAL_Q)) -#endif - -#if (GLOBAL_Q >= 3) -#define _IQtoIQ3(A) ((long) (A) >> (GLOBAL_Q - 3)) -#define _IQ3toIQ(A) ((long) (A) << (GLOBAL_Q - 3)) -#define _IQtoQ3(A) ((long) (A) >> (GLOBAL_Q - 3)) -#define _Q3toIQ(A) ((long) (A) << (GLOBAL_Q - 3)) -#else -#define _IQtoIQ3(A) ((long) (A) << (3 - GLOBAL_Q)) -#define _IQ3toIQ(A) ((long) (A) >> (3 - GLOBAL_Q)) -#define _IQtoQ3(A) ((long) (A) << (3 - GLOBAL_Q)) -#define _Q3toIQ(A) ((long) (A) >> (3 - GLOBAL_Q)) -#endif - -#if (GLOBAL_Q >= 2) -#define _IQtoIQ2(A) ((long) (A) >> (GLOBAL_Q - 2)) -#define _IQ2toIQ(A) ((long) (A) << (GLOBAL_Q - 2)) -#define _IQtoQ2(A) ((long) (A) >> (GLOBAL_Q - 2)) -#define _Q2toIQ(A) ((long) (A) << (GLOBAL_Q - 2)) -#else -#define _IQtoIQ2(A) ((long) (A) << (2 - GLOBAL_Q)) -#define _IQ2toIQ(A) ((long) (A) >> (2 - GLOBAL_Q)) -#define _IQtoQ2(A) ((long) (A) << (2 - GLOBAL_Q)) -#define _Q2toIQ(A) ((long) (A) >> (2 - GLOBAL_Q)) -#endif - -#if (GLOBAL_Q >= 1) -#define _IQtoQ1(A) ((long) (A) >> (GLOBAL_Q - 1)) -#define _Q1toIQ(A) ((long) (A) << (GLOBAL_Q - 1)) -#else -#define _IQtoQ1(A) ((long) (A) << (1 - GLOBAL_Q)) -#define _Q1toIQ(A) ((long) (A) >> (1 - GLOBAL_Q)) -#endif - -#define _IQtoIQ1(A) ((long) (A) >> (GLOBAL_Q - 1)) -#define _IQ1toIQ(A) ((long) (A) << (GLOBAL_Q - 1)) -//--------------------------------------------------------------------------- -#define _IQmpy(A,B) __IQmpy(A,B,GLOBAL_Q) -#define _IQ30mpy(A,B) __IQmpy(A,B,30) -#define _IQ29mpy(A,B) __IQmpy(A,B,29) -#define _IQ28mpy(A,B) __IQmpy(A,B,28) -#define _IQ27mpy(A,B) __IQmpy(A,B,27) -#define _IQ26mpy(A,B) __IQmpy(A,B,26) -#define _IQ25mpy(A,B) __IQmpy(A,B,25) -#define _IQ24mpy(A,B) __IQmpy(A,B,24) -#define _IQ23mpy(A,B) __IQmpy(A,B,23) -#define _IQ22mpy(A,B) __IQmpy(A,B,22) -#define _IQ21mpy(A,B) __IQmpy(A,B,21) -#define _IQ20mpy(A,B) __IQmpy(A,B,20) -#define _IQ19mpy(A,B) __IQmpy(A,B,19) -#define _IQ18mpy(A,B) __IQmpy(A,B,18) -#define _IQ17mpy(A,B) __IQmpy(A,B,17) -#define _IQ16mpy(A,B) __IQmpy(A,B,16) -#define _IQ15mpy(A,B) __IQmpy(A,B,15) -#define _IQ14mpy(A,B) __IQmpy(A,B,14) -#define _IQ13mpy(A,B) __IQmpy(A,B,13) -#define _IQ12mpy(A,B) __IQmpy(A,B,12) -#define _IQ11mpy(A,B) __IQmpy(A,B,11) -#define _IQ10mpy(A,B) __IQmpy(A,B,10) -#define _IQ9mpy(A,B) __IQmpy(A,B,9) -#define _IQ8mpy(A,B) __IQmpy(A,B,8) -#define _IQ7mpy(A,B) __IQmpy(A,B,7) -#define _IQ6mpy(A,B) __IQmpy(A,B,6) -#define _IQ5mpy(A,B) __IQmpy(A,B,5) -#define _IQ4mpy(A,B) __IQmpy(A,B,4) -#define _IQ3mpy(A,B) __IQmpy(A,B,3) -#define _IQ2mpy(A,B) __IQmpy(A,B,2) -#define _IQ1mpy(A,B) __IQmpy(A,B,1) -//--------------------------------------------------------------------------- -extern long _IQ30rmpy(long A, long B); -extern long _IQ29rmpy(long A, long B); -extern long _IQ28rmpy(long A, long B); -extern long _IQ27rmpy(long A, long B); -extern long _IQ26rmpy(long A, long B); -extern long _IQ25rmpy(long A, long B); -extern long _IQ24rmpy(long A, long B); -extern long _IQ23rmpy(long A, long B); -extern long _IQ22rmpy(long A, long B); -extern long _IQ21rmpy(long A, long B); -extern long _IQ20rmpy(long A, long B); -extern long _IQ19rmpy(long A, long B); -extern long _IQ18rmpy(long A, long B); -extern long _IQ17rmpy(long A, long B); -extern long _IQ16rmpy(long A, long B); -extern long _IQ15rmpy(long A, long B); -extern long _IQ14rmpy(long A, long B); -extern long _IQ13rmpy(long A, long B); -extern long _IQ12rmpy(long A, long B); -extern long _IQ11rmpy(long A, long B); -extern long _IQ10rmpy(long A, long B); -extern long _IQ9rmpy(long A, long B); -extern long _IQ8rmpy(long A, long B); -extern long _IQ7rmpy(long A, long B); -extern long _IQ6rmpy(long A, long B); -extern long _IQ5rmpy(long A, long B); -extern long _IQ4rmpy(long A, long B); -extern long _IQ3rmpy(long A, long B); -extern long _IQ2rmpy(long A, long B); -extern long _IQ1rmpy(long A, long B); - -#if GLOBAL_Q == 30 -#define _IQrmpy(A,B) _IQ30rmpy(A,B) -#endif -#if GLOBAL_Q == 29 -#define _IQrmpy(A,B) _IQ29rmpy(A,B) -#endif -#if GLOBAL_Q == 28 -#define _IQrmpy(A,B) _IQ28rmpy(A,B) -#endif -#if GLOBAL_Q == 27 -#define _IQrmpy(A,B) _IQ27rmpy(A,B) -#endif -#if GLOBAL_Q == 26 -#define _IQrmpy(A,B) _IQ26rmpy(A,B) -#endif -#if GLOBAL_Q == 25 -#define _IQrmpy(A,B) _IQ25rmpy(A,B) -#endif -#if GLOBAL_Q == 24 -#define _IQrmpy(A,B) _IQ24rmpy(A,B) -#endif -#if GLOBAL_Q == 23 -#define _IQrmpy(A,B) _IQ23rmpy(A,B) -#endif -#if GLOBAL_Q == 22 -#define _IQrmpy(A,B) _IQ22rmpy(A,B) -#endif -#if GLOBAL_Q == 21 -#define _IQrmpy(A,B) _IQ21rmpy(A,B) -#endif -#if GLOBAL_Q == 20 -#define _IQrmpy(A,B) _IQ20rmpy(A,B) -#endif -#if GLOBAL_Q == 19 -#define _IQrmpy(A,B) _IQ19rmpy(A,B) -#endif -#if GLOBAL_Q == 18 -#define _IQrmpy(A,B) _IQ18rmpy(A,B) -#endif -#if GLOBAL_Q == 17 -#define _IQrmpy(A,B) _IQ17rmpy(A,B) -#endif -#if GLOBAL_Q == 16 -#define _IQrmpy(A,B) _IQ16rmpy(A,B) -#endif -#if GLOBAL_Q == 15 -#define _IQrmpy(A,B) _IQ15rmpy(A,B) -#endif -#if GLOBAL_Q == 14 -#define _IQrmpy(A,B) _IQ14rmpy(A,B) -#endif -#if GLOBAL_Q == 13 -#define _IQrmpy(A,B) _IQ13rmpy(A,B) -#endif -#if GLOBAL_Q == 12 -#define _IQrmpy(A,B) _IQ12rmpy(A,B) -#endif -#if GLOBAL_Q == 11 -#define _IQrmpy(A,B) _IQ11rmpy(A,B) -#endif -#if GLOBAL_Q == 10 -#define _IQrmpy(A,B) _IQ10rmpy(A,B) -#endif -#if GLOBAL_Q == 9 -#define _IQrmpy(A,B) _IQ9rmpy(A,B) -#endif -#if GLOBAL_Q == 8 -#define _IQrmpy(A,B) _IQ8rmpy(A,B) -#endif -#if GLOBAL_Q == 7 -#define _IQrmpy(A,B) _IQ7rmpy(A,B) -#endif -#if GLOBAL_Q == 6 -#define _IQrmpy(A,B) _IQ6rmpy(A,B) -#endif -#if GLOBAL_Q == 5 -#define _IQrmpy(A,B) _IQ5rmpy(A,B) -#endif -#if GLOBAL_Q == 4 -#define _IQrmpy(A,B) _IQ4rmpy(A,B) -#endif -#if GLOBAL_Q == 3 -#define _IQrmpy(A,B) _IQ3rmpy(A,B) -#endif -#if GLOBAL_Q == 2 -#define _IQrmpy(A,B) _IQ2rmpy(A,B) -#endif -#if GLOBAL_Q == 1 -#define _IQrmpy(A,B) _IQ1rmpy(A,B) -#endif -//--------------------------------------------------------------------------- -extern long _IQ30rsmpy(long A, long B); -extern long _IQ29rsmpy(long A, long B); -extern long _IQ28rsmpy(long A, long B); -extern long _IQ27rsmpy(long A, long B); -extern long _IQ26rsmpy(long A, long B); -extern long _IQ25rsmpy(long A, long B); -extern long _IQ24rsmpy(long A, long B); -extern long _IQ23rsmpy(long A, long B); -extern long _IQ22rsmpy(long A, long B); -extern long _IQ21rsmpy(long A, long B); -extern long _IQ20rsmpy(long A, long B); -extern long _IQ19rsmpy(long A, long B); -extern long _IQ18rsmpy(long A, long B); -extern long _IQ17rsmpy(long A, long B); -extern long _IQ16rsmpy(long A, long B); -extern long _IQ15rsmpy(long A, long B); -extern long _IQ14rsmpy(long A, long B); -extern long _IQ13rsmpy(long A, long B); -extern long _IQ12rsmpy(long A, long B); -extern long _IQ11rsmpy(long A, long B); -extern long _IQ10rsmpy(long A, long B); -extern long _IQ9rsmpy(long A, long B); -extern long _IQ8rsmpy(long A, long B); -extern long _IQ7rsmpy(long A, long B); -extern long _IQ6rsmpy(long A, long B); -extern long _IQ5rsmpy(long A, long B); -extern long _IQ4rsmpy(long A, long B); -extern long _IQ3rsmpy(long A, long B); -extern long _IQ2rsmpy(long A, long B); -extern long _IQ1rsmpy(long A, long B); - -#if GLOBAL_Q == 30 -#define _IQrsmpy(A,B) _IQ30rsmpy(A,B) -#endif -#if GLOBAL_Q == 29 -#define _IQrsmpy(A,B) _IQ29rsmpy(A,B) -#endif -#if GLOBAL_Q == 28 -#define _IQrsmpy(A,B) _IQ28rsmpy(A,B) -#endif -#if GLOBAL_Q == 27 -#define _IQrsmpy(A,B) _IQ27rsmpy(A,B) -#endif -#if GLOBAL_Q == 26 -#define _IQrsmpy(A,B) _IQ26rsmpy(A,B) -#endif -#if GLOBAL_Q == 25 -#define _IQrsmpy(A,B) _IQ25rsmpy(A,B) -#endif -#if GLOBAL_Q == 24 -#define _IQrsmpy(A,B) _IQ24rsmpy(A,B) -#endif -#if GLOBAL_Q == 23 -#define _IQrsmpy(A,B) _IQ23rsmpy(A,B) -#endif -#if GLOBAL_Q == 22 -#define _IQrsmpy(A,B) _IQ22rsmpy(A,B) -#endif -#if GLOBAL_Q == 21 -#define _IQrsmpy(A,B) _IQ21rsmpy(A,B) -#endif -#if GLOBAL_Q == 20 -#define _IQrsmpy(A,B) _IQ20rsmpy(A,B) -#endif -#if GLOBAL_Q == 19 -#define _IQrsmpy(A,B) _IQ19rsmpy(A,B) -#endif -#if GLOBAL_Q == 18 -#define _IQrsmpy(A,B) _IQ18rsmpy(A,B) -#endif -#if GLOBAL_Q == 17 -#define _IQrsmpy(A,B) _IQ17rsmpy(A,B) -#endif -#if GLOBAL_Q == 16 -#define _IQrsmpy(A,B) _IQ16rsmpy(A,B) -#endif -#if GLOBAL_Q == 15 -#define _IQrsmpy(A,B) _IQ15rsmpy(A,B) -#endif -#if GLOBAL_Q == 14 -#define _IQrsmpy(A,B) _IQ14rsmpy(A,B) -#endif -#if GLOBAL_Q == 13 -#define _IQrsmpy(A,B) _IQ13rsmpy(A,B) -#endif -#if GLOBAL_Q == 12 -#define _IQrsmpy(A,B) _IQ12rsmpy(A,B) -#endif -#if GLOBAL_Q == 11 -#define _IQrsmpy(A,B) _IQ11rsmpy(A,B) -#endif -#if GLOBAL_Q == 10 -#define _IQrsmpy(A,B) _IQ10rsmpy(A,B) -#endif -#if GLOBAL_Q == 9 -#define _IQrsmpy(A,B) _IQ9rsmpy(A,B) -#endif -#if GLOBAL_Q == 8 -#define _IQrsmpy(A,B) _IQ8rsmpy(A,B) -#endif -#if GLOBAL_Q == 7 -#define _IQrsmpy(A,B) _IQ7rsmpy(A,B) -#endif -#if GLOBAL_Q == 6 -#define _IQrsmpy(A,B) _IQ6rsmpy(A,B) -#endif -#if GLOBAL_Q == 5 -#define _IQrsmpy(A,B) _IQ5rsmpy(A,B) -#endif -#if GLOBAL_Q == 4 -#define _IQrsmpy(A,B) _IQ4rsmpy(A,B) -#endif -#if GLOBAL_Q == 3 -#define _IQrsmpy(A,B) _IQ3rsmpy(A,B) -#endif -#if GLOBAL_Q == 2 -#define _IQrsmpy(A,B) _IQ2rsmpy(A,B) -#endif -#if GLOBAL_Q == 1 -#define _IQrsmpy(A,B) _IQ1rsmpy(A,B) -#endif -//--------------------------------------------------------------------------- -extern long _IQ30div(long A, long B); -extern long _IQ29div(long A, long B); -extern long _IQ28div(long A, long B); -extern long _IQ27div(long A, long B); -extern long _IQ26div(long A, long B); -extern long _IQ25div(long A, long B); -extern long _IQ24div(long A, long B); -extern long _IQ23div(long A, long B); -extern long _IQ22div(long A, long B); -extern long _IQ21div(long A, long B); -extern long _IQ20div(long A, long B); -extern long _IQ19div(long A, long B); -extern long _IQ18div(long A, long B); -extern long _IQ17div(long A, long B); -extern long _IQ16div(long A, long B); -extern long _IQ15div(long A, long B); -extern long _IQ14div(long A, long B); -extern long _IQ13div(long A, long B); -extern long _IQ12div(long A, long B); -extern long _IQ11div(long A, long B); -extern long _IQ10div(long A, long B); -extern long _IQ9div(long A, long B); -extern long _IQ8div(long A, long B); -extern long _IQ7div(long A, long B); -extern long _IQ6div(long A, long B); -extern long _IQ5div(long A, long B); -extern long _IQ4div(long A, long B); -extern long _IQ3div(long A, long B); -extern long _IQ2div(long A, long B); -extern long _IQ1div(long A, long B); - -#if GLOBAL_Q == 30 -#define _IQdiv(A,B) _IQ30div(A,B) -#endif -#if GLOBAL_Q == 29 -#define _IQdiv(A,B) _IQ29div(A,B) -#endif -#if GLOBAL_Q == 28 -#define _IQdiv(A,B) _IQ28div(A,B) -#endif -#if GLOBAL_Q == 27 -#define _IQdiv(A,B) _IQ27div(A,B) -#endif -#if GLOBAL_Q == 26 -#define _IQdiv(A,B) _IQ26div(A,B) -#endif -#if GLOBAL_Q == 25 -#define _IQdiv(A,B) _IQ25div(A,B) -#endif -#if GLOBAL_Q == 24 -#define _IQdiv(A,B) _IQ24div(A,B) -#endif -#if GLOBAL_Q == 23 -#define _IQdiv(A,B) _IQ23div(A,B) -#endif -#if GLOBAL_Q == 22 -#define _IQdiv(A,B) _IQ22div(A,B) -#endif -#if GLOBAL_Q == 21 -#define _IQdiv(A,B) _IQ21div(A,B) -#endif -#if GLOBAL_Q == 20 -#define _IQdiv(A,B) _IQ20div(A,B) -#endif -#if GLOBAL_Q == 19 -#define _IQdiv(A,B) _IQ19div(A,B) -#endif -#if GLOBAL_Q == 18 -#define _IQdiv(A,B) _IQ18div(A,B) -#endif -#if GLOBAL_Q == 17 -#define _IQdiv(A,B) _IQ17div(A,B) -#endif -#if GLOBAL_Q == 16 -#define _IQdiv(A,B) _IQ16div(A,B) -#endif -#if GLOBAL_Q == 15 -#define _IQdiv(A,B) _IQ15div(A,B) -#endif -#if GLOBAL_Q == 14 -#define _IQdiv(A,B) _IQ14div(A,B) -#endif -#if GLOBAL_Q == 13 -#define _IQdiv(A,B) _IQ13div(A,B) -#endif -#if GLOBAL_Q == 12 -#define _IQdiv(A,B) _IQ12div(A,B) -#endif -#if GLOBAL_Q == 11 -#define _IQdiv(A,B) _IQ11div(A,B) -#endif -#if GLOBAL_Q == 10 -#define _IQdiv(A,B) _IQ10div(A,B) -#endif -#if GLOBAL_Q == 9 -#define _IQdiv(A,B) _IQ9div(A,B) -#endif -#if GLOBAL_Q == 8 -#define _IQdiv(A,B) _IQ8div(A,B) -#endif -#if GLOBAL_Q == 7 -#define _IQdiv(A,B) _IQ7div(A,B) -#endif -#if GLOBAL_Q == 6 -#define _IQdiv(A,B) _IQ6div(A,B) -#endif -#if GLOBAL_Q == 5 -#define _IQdiv(A,B) _IQ5div(A,B) -#endif -#if GLOBAL_Q == 4 -#define _IQdiv(A,B) _IQ4div(A,B) -#endif -#if GLOBAL_Q == 3 -#define _IQdiv(A,B) _IQ3div(A,B) -#endif -#if GLOBAL_Q == 2 -#define _IQdiv(A,B) _IQ2div(A,B) -#endif -#if GLOBAL_Q == 1 -#define _IQdiv(A,B) _IQ1div(A,B) -#endif -//--------------------------------------------------------------------------- -extern long _IQ30sin(long A); -extern long _IQ29sin(long A); -extern long _IQ28sin(long A); -extern long _IQ27sin(long A); -extern long _IQ26sin(long A); -extern long _IQ25sin(long A); -extern long _IQ24sin(long A); -extern long _IQ23sin(long A); -extern long _IQ22sin(long A); -extern long _IQ21sin(long A); -extern long _IQ20sin(long A); -extern long _IQ19sin(long A); -extern long _IQ18sin(long A); -extern long _IQ17sin(long A); -extern long _IQ16sin(long A); -extern long _IQ15sin(long A); -extern long _IQ14sin(long A); -extern long _IQ13sin(long A); -extern long _IQ12sin(long A); -extern long _IQ11sin(long A); -extern long _IQ10sin(long A); -extern long _IQ9sin(long A); -extern long _IQ8sin(long A); -extern long _IQ7sin(long A); -extern long _IQ6sin(long A); -extern long _IQ5sin(long A); -extern long _IQ4sin(long A); -extern long _IQ3sin(long A); -extern long _IQ2sin(long A); -extern long _IQ1sin(long A); - -#if GLOBAL_Q == 30 -#define _IQsin(A) _IQ30sin(A) -#endif -#if GLOBAL_Q == 29 -#define _IQsin(A) _IQ29sin(A) -#endif -#if GLOBAL_Q == 28 -#define _IQsin(A) _IQ28sin(A) -#endif -#if GLOBAL_Q == 27 -#define _IQsin(A) _IQ27sin(A) -#endif -#if GLOBAL_Q == 26 -#define _IQsin(A) _IQ26sin(A) -#endif -#if GLOBAL_Q == 25 -#define _IQsin(A) _IQ25sin(A) -#endif -#if GLOBAL_Q == 24 -#define _IQsin(A) _IQ24sin(A) -#endif -#if GLOBAL_Q == 23 -#define _IQsin(A) _IQ23sin(A) -#endif -#if GLOBAL_Q == 22 -#define _IQsin(A) _IQ22sin(A) -#endif -#if GLOBAL_Q == 21 -#define _IQsin(A) _IQ21sin(A) -#endif -#if GLOBAL_Q == 20 -#define _IQsin(A) _IQ20sin(A) -#endif -#if GLOBAL_Q == 19 -#define _IQsin(A) _IQ19sin(A) -#endif -#if GLOBAL_Q == 18 -#define _IQsin(A) _IQ18sin(A) -#endif -#if GLOBAL_Q == 17 -#define _IQsin(A) _IQ17sin(A) -#endif -#if GLOBAL_Q == 16 -#define _IQsin(A) _IQ16sin(A) -#endif -#if GLOBAL_Q == 15 -#define _IQsin(A) _IQ15sin(A) -#endif -#if GLOBAL_Q == 14 -#define _IQsin(A) _IQ14sin(A) -#endif -#if GLOBAL_Q == 13 -#define _IQsin(A) _IQ13sin(A) -#endif -#if GLOBAL_Q == 12 -#define _IQsin(A) _IQ12sin(A) -#endif -#if GLOBAL_Q == 11 -#define _IQsin(A) _IQ11sin(A) -#endif -#if GLOBAL_Q == 10 -#define _IQsin(A) _IQ10sin(A) -#endif -#if GLOBAL_Q == 9 -#define _IQsin(A) _IQ9sin(A) -#endif -#if GLOBAL_Q == 8 -#define _IQsin(A) _IQ8sin(A) -#endif -#if GLOBAL_Q == 7 -#define _IQsin(A) _IQ7sin(A) -#endif -#if GLOBAL_Q == 6 -#define _IQsin(A) _IQ6sin(A) -#endif -#if GLOBAL_Q == 5 -#define _IQsin(A) _IQ5sin(A) -#endif -#if GLOBAL_Q == 4 -#define _IQsin(A) _IQ4sin(A) -#endif -#if GLOBAL_Q == 3 -#define _IQsin(A) _IQ3sin(A) -#endif -#if GLOBAL_Q == 2 -#define _IQsin(A) _IQ2sin(A) -#endif -#if GLOBAL_Q == 1 -#define _IQsin(A) _IQ1sin(A) -#endif -//--------------------------------------------------------------------------- -extern long _IQ30sinPU(long A); -extern long _IQ29sinPU(long A); -extern long _IQ28sinPU(long A); -extern long _IQ27sinPU(long A); -extern long _IQ26sinPU(long A); -extern long _IQ25sinPU(long A); -extern long _IQ24sinPU(long A); -extern long _IQ23sinPU(long A); -extern long _IQ22sinPU(long A); -extern long _IQ21sinPU(long A); -extern long _IQ20sinPU(long A); -extern long _IQ19sinPU(long A); -extern long _IQ18sinPU(long A); -extern long _IQ17sinPU(long A); -extern long _IQ16sinPU(long A); -extern long _IQ15sinPU(long A); -extern long _IQ14sinPU(long A); -extern long _IQ13sinPU(long A); -extern long _IQ12sinPU(long A); -extern long _IQ11sinPU(long A); -extern long _IQ10sinPU(long A); -extern long _IQ9sinPU(long A); -extern long _IQ8sinPU(long A); -extern long _IQ7sinPU(long A); -extern long _IQ6sinPU(long A); -extern long _IQ5sinPU(long A); -extern long _IQ4sinPU(long A); -extern long _IQ3sinPU(long A); -extern long _IQ2sinPU(long A); -extern long _IQ1sinPU(long A); - -#if GLOBAL_Q == 30 -#define _IQsinPU(A) _IQ30sinPU(A) -#endif -#if GLOBAL_Q == 29 -#define _IQsinPU(A) _IQ29sinPU(A) -#endif -#if GLOBAL_Q == 28 -#define _IQsinPU(A) _IQ28sinPU(A) -#endif -#if GLOBAL_Q == 27 -#define _IQsinPU(A) _IQ27sinPU(A) -#endif -#if GLOBAL_Q == 26 -#define _IQsinPU(A) _IQ26sinPU(A) -#endif -#if GLOBAL_Q == 25 -#define _IQsinPU(A) _IQ25sinPU(A) -#endif -#if GLOBAL_Q == 24 -#define _IQsinPU(A) _IQ24sinPU(A) -#endif -#if GLOBAL_Q == 23 -#define _IQsinPU(A) _IQ23sinPU(A) -#endif -#if GLOBAL_Q == 22 -#define _IQsinPU(A) _IQ22sinPU(A) -#endif -#if GLOBAL_Q == 21 -#define _IQsinPU(A) _IQ21sinPU(A) -#endif -#if GLOBAL_Q == 20 -#define _IQsinPU(A) _IQ20sinPU(A) -#endif -#if GLOBAL_Q == 19 -#define _IQsinPU(A) _IQ19sinPU(A) -#endif -#if GLOBAL_Q == 18 -#define _IQsinPU(A) _IQ18sinPU(A) -#endif -#if GLOBAL_Q == 17 -#define _IQsinPU(A) _IQ17sinPU(A) -#endif -#if GLOBAL_Q == 16 -#define _IQsinPU(A) _IQ16sinPU(A) -#endif -#if GLOBAL_Q == 15 -#define _IQsinPU(A) _IQ15sinPU(A) -#endif -#if GLOBAL_Q == 14 -#define _IQsinPU(A) _IQ14sinPU(A) -#endif -#if GLOBAL_Q == 13 -#define _IQsinPU(A) _IQ13sinPU(A) -#endif -#if GLOBAL_Q == 12 -#define _IQsinPU(A) _IQ12sinPU(A) -#endif -#if GLOBAL_Q == 11 -#define _IQsinPU(A) _IQ11sinPU(A) -#endif -#if GLOBAL_Q == 10 -#define _IQsinPU(A) _IQ10sinPU(A) -#endif -#if GLOBAL_Q == 9 -#define _IQsinPU(A) _IQ9sinPU(A) -#endif -#if GLOBAL_Q == 8 -#define _IQsinPU(A) _IQ8sinPU(A) -#endif -#if GLOBAL_Q == 7 -#define _IQsinPU(A) _IQ7sinPU(A) -#endif -#if GLOBAL_Q == 6 -#define _IQsinPU(A) _IQ6sinPU(A) -#endif -#if GLOBAL_Q == 5 -#define _IQsinPU(A) _IQ5sinPU(A) -#endif -#if GLOBAL_Q == 4 -#define _IQsinPU(A) _IQ4sinPU(A) -#endif -#if GLOBAL_Q == 3 -#define _IQsinPU(A) _IQ3sinPU(A) -#endif -#if GLOBAL_Q == 2 -#define _IQsinPU(A) _IQ2sinPU(A) -#endif -#if GLOBAL_Q == 1 -#define _IQsinPU(A) _IQ1sinPU(A) -#endif -//--------------------------------------------------------------------------- -extern long _IQ30asin(long A); -extern long _IQ29asin(long A); -extern long _IQ28asin(long A); -extern long _IQ27asin(long A); -extern long _IQ26asin(long A); -extern long _IQ25asin(long A); -extern long _IQ24asin(long A); -extern long _IQ23asin(long A); -extern long _IQ22asin(long A); -extern long _IQ21asin(long A); -extern long _IQ20asin(long A); -extern long _IQ19asin(long A); -extern long _IQ18asin(long A); -extern long _IQ17asin(long A); -extern long _IQ16asin(long A); -extern long _IQ15asin(long A); -extern long _IQ14asin(long A); -extern long _IQ13asin(long A); -extern long _IQ12asin(long A); -extern long _IQ11asin(long A); -extern long _IQ10asin(long A); -extern long _IQ9asin(long A); -extern long _IQ8asin(long A); -extern long _IQ7asin(long A); -extern long _IQ6asin(long A); -extern long _IQ5asin(long A); -extern long _IQ4asin(long A); -extern long _IQ3asin(long A); -extern long _IQ2asin(long A); -extern long _IQ1asin(long A); - -#if GLOBAL_Q == 30 -#define _IQasin(A) _IQ30asin(A) -#endif -#if GLOBAL_Q == 29 -#define _IQasin(A) _IQ29asin(A) -#endif -#if GLOBAL_Q == 28 -#define _IQasin(A) _IQ28asin(A) -#endif -#if GLOBAL_Q == 27 -#define _IQasin(A) _IQ27asin(A) -#endif -#if GLOBAL_Q == 26 -#define _IQasin(A) _IQ26asin(A) -#endif -#if GLOBAL_Q == 25 -#define _IQasin(A) _IQ25asin(A) -#endif -#if GLOBAL_Q == 24 -#define _IQasin(A) _IQ24asin(A) -#endif -#if GLOBAL_Q == 23 -#define _IQasin(A) _IQ23asin(A) -#endif -#if GLOBAL_Q == 22 -#define _IQasin(A) _IQ22asin(A) -#endif -#if GLOBAL_Q == 21 -#define _IQasin(A) _IQ21asin(A) -#endif -#if GLOBAL_Q == 20 -#define _IQasin(A) _IQ20asin(A) -#endif -#if GLOBAL_Q == 19 -#define _IQasin(A) _IQ19asin(A) -#endif -#if GLOBAL_Q == 18 -#define _IQasin(A) _IQ18asin(A) -#endif -#if GLOBAL_Q == 17 -#define _IQasin(A) _IQ17asin(A) -#endif -#if GLOBAL_Q == 16 -#define _IQasin(A) _IQ16asin(A) -#endif -#if GLOBAL_Q == 15 -#define _IQasin(A) _IQ15asin(A) -#endif -#if GLOBAL_Q == 14 -#define _IQasin(A) _IQ14asin(A) -#endif -#if GLOBAL_Q == 13 -#define _IQasin(A) _IQ13asin(A) -#endif -#if GLOBAL_Q == 12 -#define _IQasin(A) _IQ12asin(A) -#endif -#if GLOBAL_Q == 11 -#define _IQasin(A) _IQ11asin(A) -#endif -#if GLOBAL_Q == 10 -#define _IQasin(A) _IQ10asin(A) -#endif -#if GLOBAL_Q == 9 -#define _IQasin(A) _IQ9asin(A) -#endif -#if GLOBAL_Q == 8 -#define _IQasin(A) _IQ8asin(A) -#endif -#if GLOBAL_Q == 7 -#define _IQasin(A) _IQ7asin(A) -#endif -#if GLOBAL_Q == 6 -#define _IQasin(A) _IQ6asin(A) -#endif -#if GLOBAL_Q == 5 -#define _IQasin(A) _IQ5asin(A) -#endif -#if GLOBAL_Q == 4 -#define _IQasin(A) _IQ4asin(A) -#endif -#if GLOBAL_Q == 3 -#define _IQasin(A) _IQ3asin(A) -#endif -#if GLOBAL_Q == 2 -#define _IQasin(A) _IQ2asin(A) -#endif -#if GLOBAL_Q == 1 -#define _IQasin(A) _IQ1asin(A) -#endif -//--------------------------------------------------------------------------- -extern long _IQ30cos(long A); -extern long _IQ29cos(long A); -extern long _IQ28cos(long A); -extern long _IQ27cos(long A); -extern long _IQ26cos(long A); -extern long _IQ25cos(long A); -extern long _IQ24cos(long A); -extern long _IQ23cos(long A); -extern long _IQ22cos(long A); -extern long _IQ21cos(long A); -extern long _IQ20cos(long A); -extern long _IQ19cos(long A); -extern long _IQ18cos(long A); -extern long _IQ17cos(long A); -extern long _IQ16cos(long A); -extern long _IQ15cos(long A); -extern long _IQ14cos(long A); -extern long _IQ13cos(long A); -extern long _IQ12cos(long A); -extern long _IQ11cos(long A); -extern long _IQ10cos(long A); -extern long _IQ9cos(long A); -extern long _IQ8cos(long A); -extern long _IQ7cos(long A); -extern long _IQ6cos(long A); -extern long _IQ5cos(long A); -extern long _IQ4cos(long A); -extern long _IQ3cos(long A); -extern long _IQ2cos(long A); -extern long _IQ1cos(long A); - -#if GLOBAL_Q == 30 -#define _IQcos(A) _IQ30cos(A) -#endif -#if GLOBAL_Q == 29 -#define _IQcos(A) _IQ29cos(A) -#endif -#if GLOBAL_Q == 28 -#define _IQcos(A) _IQ28cos(A) -#endif -#if GLOBAL_Q == 27 -#define _IQcos(A) _IQ27cos(A) -#endif -#if GLOBAL_Q == 26 -#define _IQcos(A) _IQ26cos(A) -#endif -#if GLOBAL_Q == 25 -#define _IQcos(A) _IQ25cos(A) -#endif -#if GLOBAL_Q == 24 -#define _IQcos(A) _IQ24cos(A) -#endif -#if GLOBAL_Q == 23 -#define _IQcos(A) _IQ23cos(A) -#endif -#if GLOBAL_Q == 22 -#define _IQcos(A) _IQ22cos(A) -#endif -#if GLOBAL_Q == 21 -#define _IQcos(A) _IQ21cos(A) -#endif -#if GLOBAL_Q == 20 -#define _IQcos(A) _IQ20cos(A) -#endif -#if GLOBAL_Q == 19 -#define _IQcos(A) _IQ19cos(A) -#endif -#if GLOBAL_Q == 18 -#define _IQcos(A) _IQ18cos(A) -#endif -#if GLOBAL_Q == 17 -#define _IQcos(A) _IQ17cos(A) -#endif -#if GLOBAL_Q == 16 -#define _IQcos(A) _IQ16cos(A) -#endif -#if GLOBAL_Q == 15 -#define _IQcos(A) _IQ15cos(A) -#endif -#if GLOBAL_Q == 14 -#define _IQcos(A) _IQ14cos(A) -#endif -#if GLOBAL_Q == 13 -#define _IQcos(A) _IQ13cos(A) -#endif -#if GLOBAL_Q == 12 -#define _IQcos(A) _IQ12cos(A) -#endif -#if GLOBAL_Q == 11 -#define _IQcos(A) _IQ11cos(A) -#endif -#if GLOBAL_Q == 10 -#define _IQcos(A) _IQ10cos(A) -#endif -#if GLOBAL_Q == 9 -#define _IQcos(A) _IQ9cos(A) -#endif -#if GLOBAL_Q == 8 -#define _IQcos(A) _IQ8cos(A) -#endif -#if GLOBAL_Q == 7 -#define _IQcos(A) _IQ7cos(A) -#endif -#if GLOBAL_Q == 6 -#define _IQcos(A) _IQ6cos(A) -#endif -#if GLOBAL_Q == 5 -#define _IQcos(A) _IQ5cos(A) -#endif -#if GLOBAL_Q == 4 -#define _IQcos(A) _IQ4cos(A) -#endif -#if GLOBAL_Q == 3 -#define _IQcos(A) _IQ3cos(A) -#endif -#if GLOBAL_Q == 2 -#define _IQcos(A) _IQ2cos(A) -#endif -#if GLOBAL_Q == 1 -#define _IQcos(A) _IQ1cos(A) -#endif -//--------------------------------------------------------------------------- -extern long _IQ30cosPU(long A); -extern long _IQ29cosPU(long A); -extern long _IQ28cosPU(long A); -extern long _IQ27cosPU(long A); -extern long _IQ26cosPU(long A); -extern long _IQ25cosPU(long A); -extern long _IQ24cosPU(long A); -extern long _IQ23cosPU(long A); -extern long _IQ22cosPU(long A); -extern long _IQ21cosPU(long A); -extern long _IQ20cosPU(long A); -extern long _IQ19cosPU(long A); -extern long _IQ18cosPU(long A); -extern long _IQ17cosPU(long A); -extern long _IQ16cosPU(long A); -extern long _IQ15cosPU(long A); -extern long _IQ14cosPU(long A); -extern long _IQ13cosPU(long A); -extern long _IQ12cosPU(long A); -extern long _IQ11cosPU(long A); -extern long _IQ10cosPU(long A); -extern long _IQ9cosPU(long A); -extern long _IQ8cosPU(long A); -extern long _IQ7cosPU(long A); -extern long _IQ6cosPU(long A); -extern long _IQ5cosPU(long A); -extern long _IQ4cosPU(long A); -extern long _IQ3cosPU(long A); -extern long _IQ2cosPU(long A); -extern long _IQ1cosPU(long A); - -#if GLOBAL_Q == 30 -#define _IQcosPU(A) _IQ30cosPU(A) -#endif -#if GLOBAL_Q == 29 -#define _IQcosPU(A) _IQ29cosPU(A) -#endif -#if GLOBAL_Q == 28 -#define _IQcosPU(A) _IQ28cosPU(A) -#endif -#if GLOBAL_Q == 27 -#define _IQcosPU(A) _IQ27cosPU(A) -#endif -#if GLOBAL_Q == 26 -#define _IQcosPU(A) _IQ26cosPU(A) -#endif -#if GLOBAL_Q == 25 -#define _IQcosPU(A) _IQ25cosPU(A) -#endif -#if GLOBAL_Q == 24 -#define _IQcosPU(A) _IQ24cosPU(A) -#endif -#if GLOBAL_Q == 23 -#define _IQcosPU(A) _IQ23cosPU(A) -#endif -#if GLOBAL_Q == 22 -#define _IQcosPU(A) _IQ22cosPU(A) -#endif -#if GLOBAL_Q == 21 -#define _IQcosPU(A) _IQ21cosPU(A) -#endif -#if GLOBAL_Q == 20 -#define _IQcosPU(A) _IQ20cosPU(A) -#endif -#if GLOBAL_Q == 19 -#define _IQcosPU(A) _IQ19cosPU(A) -#endif -#if GLOBAL_Q == 18 -#define _IQcosPU(A) _IQ18cosPU(A) -#endif -#if GLOBAL_Q == 17 -#define _IQcosPU(A) _IQ17cosPU(A) -#endif -#if GLOBAL_Q == 16 -#define _IQcosPU(A) _IQ16cosPU(A) -#endif -#if GLOBAL_Q == 15 -#define _IQcosPU(A) _IQ15cosPU(A) -#endif -#if GLOBAL_Q == 14 -#define _IQcosPU(A) _IQ14cosPU(A) -#endif -#if GLOBAL_Q == 13 -#define _IQcosPU(A) _IQ13cosPU(A) -#endif -#if GLOBAL_Q == 12 -#define _IQcosPU(A) _IQ12cosPU(A) -#endif -#if GLOBAL_Q == 11 -#define _IQcosPU(A) _IQ11cosPU(A) -#endif -#if GLOBAL_Q == 10 -#define _IQcosPU(A) _IQ10cosPU(A) -#endif -#if GLOBAL_Q == 9 -#define _IQcosPU(A) _IQ9cosPU(A) -#endif -#if GLOBAL_Q == 8 -#define _IQcosPU(A) _IQ8cosPU(A) -#endif -#if GLOBAL_Q == 7 -#define _IQcosPU(A) _IQ7cosPU(A) -#endif -#if GLOBAL_Q == 6 -#define _IQcosPU(A) _IQ6cosPU(A) -#endif -#if GLOBAL_Q == 5 -#define _IQcosPU(A) _IQ5cosPU(A) -#endif -#if GLOBAL_Q == 4 -#define _IQcosPU(A) _IQ4cosPU(A) -#endif -#if GLOBAL_Q == 3 -#define _IQcosPU(A) _IQ3cosPU(A) -#endif -#if GLOBAL_Q == 2 -#define _IQcosPU(A) _IQ2cosPU(A) -#endif -#if GLOBAL_Q == 1 -#define _IQcosPU(A) _IQ1cosPU(A) -#endif -//--------------------------------------------------------------------------- -extern long _IQ30acos(long A); -extern long _IQ29acos(long A); -extern long _IQ28acos(long A); -extern long _IQ27acos(long A); -extern long _IQ26acos(long A); -extern long _IQ25acos(long A); -extern long _IQ24acos(long A); -extern long _IQ23acos(long A); -extern long _IQ22acos(long A); -extern long _IQ21acos(long A); -extern long _IQ20acos(long A); -extern long _IQ19acos(long A); -extern long _IQ18acos(long A); -extern long _IQ17acos(long A); -extern long _IQ16acos(long A); -extern long _IQ15acos(long A); -extern long _IQ14acos(long A); -extern long _IQ13acos(long A); -extern long _IQ12acos(long A); -extern long _IQ11acos(long A); -extern long _IQ10acos(long A); -extern long _IQ9acos(long A); -extern long _IQ8acos(long A); -extern long _IQ7acos(long A); -extern long _IQ6acos(long A); -extern long _IQ5acos(long A); -extern long _IQ4acos(long A); -extern long _IQ3acos(long A); -extern long _IQ2acos(long A); -extern long _IQ1acos(long A); - -#if GLOBAL_Q == 30 -#define _IQacos(A) _IQ30acos(A) -#endif -#if GLOBAL_Q == 29 -#define _IQacos(A) _IQ29acos(A) -#endif -#if GLOBAL_Q == 28 -#define _IQacos(A) _IQ28acos(A) -#endif -#if GLOBAL_Q == 27 -#define _IQacos(A) _IQ27acos(A) -#endif -#if GLOBAL_Q == 26 -#define _IQacos(A) _IQ26acos(A) -#endif -#if GLOBAL_Q == 25 -#define _IQacos(A) _IQ25acos(A) -#endif -#if GLOBAL_Q == 24 -#define _IQacos(A) _IQ24acos(A) -#endif -#if GLOBAL_Q == 23 -#define _IQacos(A) _IQ23acos(A) -#endif -#if GLOBAL_Q == 22 -#define _IQacos(A) _IQ22acos(A) -#endif -#if GLOBAL_Q == 21 -#define _IQacos(A) _IQ21acos(A) -#endif -#if GLOBAL_Q == 20 -#define _IQacos(A) _IQ20acos(A) -#endif -#if GLOBAL_Q == 19 -#define _IQacos(A) _IQ19acos(A) -#endif -#if GLOBAL_Q == 18 -#define _IQacos(A) _IQ18acos(A) -#endif -#if GLOBAL_Q == 17 -#define _IQacos(A) _IQ17acos(A) -#endif -#if GLOBAL_Q == 16 -#define _IQacos(A) _IQ16acos(A) -#endif -#if GLOBAL_Q == 15 -#define _IQacos(A) _IQ15acos(A) -#endif -#if GLOBAL_Q == 14 -#define _IQacos(A) _IQ14acos(A) -#endif -#if GLOBAL_Q == 13 -#define _IQacos(A) _IQ13acos(A) -#endif -#if GLOBAL_Q == 12 -#define _IQacos(A) _IQ12acos(A) -#endif -#if GLOBAL_Q == 11 -#define _IQacos(A) _IQ11acos(A) -#endif -#if GLOBAL_Q == 10 -#define _IQacos(A) _IQ10acos(A) -#endif -#if GLOBAL_Q == 9 -#define _IQacos(A) _IQ9acos(A) -#endif -#if GLOBAL_Q == 8 -#define _IQacos(A) _IQ8acos(A) -#endif -#if GLOBAL_Q == 7 -#define _IQacos(A) _IQ7acos(A) -#endif -#if GLOBAL_Q == 6 -#define _IQacos(A) _IQ6acos(A) -#endif -#if GLOBAL_Q == 5 -#define _IQacos(A) _IQ5acos(A) -#endif -#if GLOBAL_Q == 4 -#define _IQacos(A) _IQ4acos(A) -#endif -#if GLOBAL_Q == 3 -#define _IQacos(A) _IQ3acos(A) -#endif -#if GLOBAL_Q == 2 -#define _IQacos(A) _IQ2acos(A) -#endif -#if GLOBAL_Q == 1 -#define _IQacos(A) _IQ1acos(A) -#endif -//--------------------------------------------------------------------------- -extern long _IQ30atan2(long A, long B); -extern long _IQ29atan2(long A, long B); -extern long _IQ28atan2(long A, long B); -extern long _IQ27atan2(long A, long B); -extern long _IQ26atan2(long A, long B); -extern long _IQ25atan2(long A, long B); -extern long _IQ24atan2(long A, long B); -extern long _IQ23atan2(long A, long B); -extern long _IQ22atan2(long A, long B); -extern long _IQ21atan2(long A, long B); -extern long _IQ20atan2(long A, long B); -extern long _IQ19atan2(long A, long B); -extern long _IQ18atan2(long A, long B); -extern long _IQ17atan2(long A, long B); -extern long _IQ16atan2(long A, long B); -extern long _IQ15atan2(long A, long B); -extern long _IQ14atan2(long A, long B); -extern long _IQ13atan2(long A, long B); -extern long _IQ12atan2(long A, long B); -extern long _IQ11atan2(long A, long B); -extern long _IQ10atan2(long A, long B); -extern long _IQ9atan2(long A, long B); -extern long _IQ8atan2(long A, long B); -extern long _IQ7atan2(long A, long B); -extern long _IQ6atan2(long A, long B); -extern long _IQ5atan2(long A, long B); -extern long _IQ4atan2(long A, long B); -extern long _IQ3atan2(long A, long B); -extern long _IQ2atan2(long A, long B); -extern long _IQ1atan2(long A, long B); - -#if GLOBAL_Q == 30 -#define _IQatan2(A,B) _IQ30atan2(A,B) -#endif -#if GLOBAL_Q == 29 -#define _IQatan2(A,B) _IQ29atan2(A,B) -#endif -#if GLOBAL_Q == 28 -#define _IQatan2(A,B) _IQ28atan2(A,B) -#endif -#if GLOBAL_Q == 27 -#define _IQatan2(A,B) _IQ27atan2(A,B) -#endif -#if GLOBAL_Q == 26 -#define _IQatan2(A,B) _IQ26atan2(A,B) -#endif -#if GLOBAL_Q == 25 -#define _IQatan2(A,B) _IQ25atan2(A,B) -#endif -#if GLOBAL_Q == 24 -#define _IQatan2(A,B) _IQ24atan2(A,B) -#endif -#if GLOBAL_Q == 23 -#define _IQatan2(A,B) _IQ23atan2(A,B) -#endif -#if GLOBAL_Q == 22 -#define _IQatan2(A,B) _IQ22atan2(A,B) -#endif -#if GLOBAL_Q == 21 -#define _IQatan2(A,B) _IQ21atan2(A,B) -#endif -#if GLOBAL_Q == 20 -#define _IQatan2(A,B) _IQ20atan2(A,B) -#endif -#if GLOBAL_Q == 19 -#define _IQatan2(A,B) _IQ19atan2(A,B) -#endif -#if GLOBAL_Q == 18 -#define _IQatan2(A,B) _IQ18atan2(A,B) -#endif -#if GLOBAL_Q == 17 -#define _IQatan2(A,B) _IQ17atan2(A,B) -#endif -#if GLOBAL_Q == 16 -#define _IQatan2(A,B) _IQ16atan2(A,B) -#endif -#if GLOBAL_Q == 15 -#define _IQatan2(A,B) _IQ15atan2(A,B) -#endif -#if GLOBAL_Q == 14 -#define _IQatan2(A,B) _IQ14atan2(A,B) -#endif -#if GLOBAL_Q == 13 -#define _IQatan2(A,B) _IQ13atan2(A,B) -#endif -#if GLOBAL_Q == 12 -#define _IQatan2(A,B) _IQ12atan2(A,B) -#endif -#if GLOBAL_Q == 11 -#define _IQatan2(A,B) _IQ11atan2(A,B) -#endif -#if GLOBAL_Q == 10 -#define _IQatan2(A,B) _IQ10atan2(A,B) -#endif -#if GLOBAL_Q == 9 -#define _IQatan2(A,B) _IQ9atan2(A,B) -#endif -#if GLOBAL_Q == 8 -#define _IQatan2(A,B) _IQ8atan2(A,B) -#endif -#if GLOBAL_Q == 7 -#define _IQatan2(A,B) _IQ7atan2(A,B) -#endif -#if GLOBAL_Q == 6 -#define _IQatan2(A,B) _IQ6atan2(A,B) -#endif -#if GLOBAL_Q == 5 -#define _IQatan2(A,B) _IQ5atan2(A,B) -#endif -#if GLOBAL_Q == 4 -#define _IQatan2(A,B) _IQ4atan2(A,B) -#endif -#if GLOBAL_Q == 3 -#define _IQatan2(A,B) _IQ3atan2(A,B) -#endif -#if GLOBAL_Q == 2 -#define _IQatan2(A,B) _IQ2atan2(A,B) -#endif -#if GLOBAL_Q == 1 -#define _IQatan2(A,B) _IQ1atan2(A,B) -#endif -//--------------------------------------------------------------------------- -extern long _IQ30atan2PU(long A, long B); -extern long _IQ29atan2PU(long A, long B); -extern long _IQ28atan2PU(long A, long B); -extern long _IQ27atan2PU(long A, long B); -extern long _IQ26atan2PU(long A, long B); -extern long _IQ25atan2PU(long A, long B); -extern long _IQ24atan2PU(long A, long B); -extern long _IQ23atan2PU(long A, long B); -extern long _IQ22atan2PU(long A, long B); -extern long _IQ21atan2PU(long A, long B); -extern long _IQ20atan2PU(long A, long B); -extern long _IQ19atan2PU(long A, long B); -extern long _IQ18atan2PU(long A, long B); -extern long _IQ17atan2PU(long A, long B); -extern long _IQ16atan2PU(long A, long B); -extern long _IQ15atan2PU(long A, long B); -extern long _IQ14atan2PU(long A, long B); -extern long _IQ13atan2PU(long A, long B); -extern long _IQ12atan2PU(long A, long B); -extern long _IQ11atan2PU(long A, long B); -extern long _IQ10atan2PU(long A, long B); -extern long _IQ9atan2PU(long A, long B); -extern long _IQ8atan2PU(long A, long B); -extern long _IQ7atan2PU(long A, long B); -extern long _IQ6atan2PU(long A, long B); -extern long _IQ5atan2PU(long A, long B); -extern long _IQ4atan2PU(long A, long B); -extern long _IQ3atan2PU(long A, long B); -extern long _IQ2atan2PU(long A, long B); -extern long _IQ1atan2PU(long A, long B); - -#if GLOBAL_Q == 30 -#define _IQatan2PU(A,B) _IQ30atan2PU(A,B) -#endif -#if GLOBAL_Q == 29 -#define _IQatan2PU(A,B) _IQ29atan2PU(A,B) -#endif -#if GLOBAL_Q == 28 -#define _IQatan2PU(A,B) _IQ28atan2PU(A,B) -#endif -#if GLOBAL_Q == 27 -#define _IQatan2PU(A,B) _IQ27atan2PU(A,B) -#endif -#if GLOBAL_Q == 26 -#define _IQatan2PU(A,B) _IQ26atan2PU(A,B) -#endif -#if GLOBAL_Q == 25 -#define _IQatan2PU(A,B) _IQ25atan2PU(A,B) -#endif -#if GLOBAL_Q == 24 -#define _IQatan2PU(A,B) _IQ24atan2PU(A,B) -#endif -#if GLOBAL_Q == 23 -#define _IQatan2PU(A,B) _IQ23atan2PU(A,B) -#endif -#if GLOBAL_Q == 22 -#define _IQatan2PU(A,B) _IQ22atan2PU(A,B) -#endif -#if GLOBAL_Q == 21 -#define _IQatan2PU(A,B) _IQ21atan2PU(A,B) -#endif -#if GLOBAL_Q == 20 -#define _IQatan2PU(A,B) _IQ20atan2PU(A,B) -#endif -#if GLOBAL_Q == 19 -#define _IQatan2PU(A,B) _IQ19atan2PU(A,B) -#endif -#if GLOBAL_Q == 18 -#define _IQatan2PU(A,B) _IQ18atan2PU(A,B) -#endif -#if GLOBAL_Q == 17 -#define _IQatan2PU(A,B) _IQ17atan2PU(A,B) -#endif -#if GLOBAL_Q == 16 -#define _IQatan2PU(A,B) _IQ16atan2PU(A,B) -#endif -#if GLOBAL_Q == 15 -#define _IQatan2PU(A,B) _IQ15atan2PU(A,B) -#endif -#if GLOBAL_Q == 14 -#define _IQatan2PU(A,B) _IQ14atan2PU(A,B) -#endif -#if GLOBAL_Q == 13 -#define _IQatan2PU(A,B) _IQ13atan2PU(A,B) -#endif -#if GLOBAL_Q == 12 -#define _IQatan2PU(A,B) _IQ12atan2PU(A,B) -#endif -#if GLOBAL_Q == 11 -#define _IQatan2PU(A,B) _IQ11atan2PU(A,B) -#endif -#if GLOBAL_Q == 10 -#define _IQatan2PU(A,B) _IQ10atan2PU(A,B) -#endif -#if GLOBAL_Q == 9 -#define _IQatan2PU(A,B) _IQ9atan2PU(A,B) -#endif -#if GLOBAL_Q == 8 -#define _IQatan2PU(A,B) _IQ8atan2PU(A,B) -#endif -#if GLOBAL_Q == 7 -#define _IQatan2PU(A,B) _IQ7atan2PU(A,B) -#endif -#if GLOBAL_Q == 6 -#define _IQatan2PU(A,B) _IQ6atan2PU(A,B) -#endif -#if GLOBAL_Q == 5 -#define _IQatan2PU(A,B) _IQ5atan2PU(A,B) -#endif -#if GLOBAL_Q == 4 -#define _IQatan2PU(A,B) _IQ4atan2PU(A,B) -#endif -#if GLOBAL_Q == 3 -#define _IQatan2PU(A,B) _IQ3atan2PU(A,B) -#endif -#if GLOBAL_Q == 2 -#define _IQatan2PU(A,B) _IQ2atan2PU(A,B) -#endif -#if GLOBAL_Q == 1 -#define _IQatan2PU(A,B) _IQ1atan2PU(A,B) -#endif -//--------------------------------------------------------------------------- -#define _IQ30atan(A) _IQ30atan2(A,_IQ30(1.0)) -#define _IQ29atan(A) _IQ29atan2(A,_IQ29(1.0)) -#define _IQ28atan(A) _IQ28atan2(A,_IQ28(1.0)) -#define _IQ27atan(A) _IQ27atan2(A,_IQ27(1.0)) -#define _IQ26atan(A) _IQ26atan2(A,_IQ26(1.0)) -#define _IQ25atan(A) _IQ25atan2(A,_IQ25(1.0)) -#define _IQ24atan(A) _IQ24atan2(A,_IQ24(1.0)) -#define _IQ23atan(A) _IQ23atan2(A,_IQ23(1.0)) -#define _IQ22atan(A) _IQ22atan2(A,_IQ22(1.0)) -#define _IQ21atan(A) _IQ21atan2(A,_IQ21(1.0)) -#define _IQ20atan(A) _IQ20atan2(A,_IQ20(1.0)) -#define _IQ19atan(A) _IQ19atan2(A,_IQ19(1.0)) -#define _IQ18atan(A) _IQ18atan2(A,_IQ18(1.0)) -#define _IQ17atan(A) _IQ17atan2(A,_IQ17(1.0)) -#define _IQ16atan(A) _IQ16atan2(A,_IQ16(1.0)) -#define _IQ15atan(A) _IQ15atan2(A,_IQ15(1.0)) -#define _IQ14atan(A) _IQ14atan2(A,_IQ14(1.0)) -#define _IQ13atan(A) _IQ13atan2(A,_IQ13(1.0)) -#define _IQ12atan(A) _IQ12atan2(A,_IQ12(1.0)) -#define _IQ11atan(A) _IQ11atan2(A,_IQ11(1.0)) -#define _IQ10atan(A) _IQ10atan2(A,_IQ10(1.0)) -#define _IQ9atan(A) _IQ9atan2(A,_IQ9(1.0)) -#define _IQ8atan(A) _IQ8atan2(A,_IQ8(1.0)) -#define _IQ7atan(A) _IQ7atan2(A,_IQ7(1.0)) -#define _IQ6atan(A) _IQ6atan2(A,_IQ6(1.0)) -#define _IQ5atan(A) _IQ5atan2(A,_IQ5(1.0)) -#define _IQ4atan(A) _IQ4atan2(A,_IQ4(1.0)) -#define _IQ3atan(A) _IQ3atan2(A,_IQ3(1.0)) -#define _IQ2atan(A) _IQ2atan2(A,_IQ2(1.0)) -#define _IQ1atan(A) _IQ1atan2(A,_IQ1(1.0)) -#if GLOBAL_Q == 30 -#define _IQatan(A) _IQ30atan2(A,_IQ(1.0)) -#endif -#if GLOBAL_Q == 29 -#define _IQatan(A) _IQ29atan2(A,_IQ(1.0)) -#endif -#if GLOBAL_Q == 28 -#define _IQatan(A) _IQ28atan2(A,_IQ(1.0)) -#endif -#if GLOBAL_Q == 27 -#define _IQatan(A) _IQ27atan2(A,_IQ(1.0)) -#endif -#if GLOBAL_Q == 26 -#define _IQatan(A) _IQ26atan2(A,_IQ(1.0)) -#endif -#if GLOBAL_Q == 25 -#define _IQatan(A) _IQ25atan2(A,_IQ(1.0)) -#endif -#if GLOBAL_Q == 24 -#define _IQatan(A) _IQ24atan2(A,_IQ(1.0)) -#endif -#if GLOBAL_Q == 23 -#define _IQatan(A) _IQ23atan2(A,_IQ(1.0)) -#endif -#if GLOBAL_Q == 22 -#define _IQatan(A) _IQ22atan2(A,_IQ(1.0)) -#endif -#if GLOBAL_Q == 21 -#define _IQatan(A) _IQ21atan2(A,_IQ(1.0)) -#endif -#if GLOBAL_Q == 20 -#define _IQatan(A) _IQ20atan2(A,_IQ(1.0)) -#endif -#if GLOBAL_Q == 19 -#define _IQatan(A) _IQ19atan2(A,_IQ(1.0)) -#endif -#if GLOBAL_Q == 18 -#define _IQatan(A) _IQ18atan2(A,_IQ(1.0)) -#endif -#if GLOBAL_Q == 17 -#define _IQatan(A) _IQ17atan2(A,_IQ(1.0)) -#endif -#if GLOBAL_Q == 16 -#define _IQatan(A) _IQ16atan2(A,_IQ(1.0)) -#endif -#if GLOBAL_Q == 15 -#define _IQatan(A) _IQ15atan2(A,_IQ(1.0)) -#endif -#if GLOBAL_Q == 14 -#define _IQatan(A) _IQ14atan2(A,_IQ(1.0)) -#endif -#if GLOBAL_Q == 13 -#define _IQatan(A) _IQ13atan2(A,_IQ(1.0)) -#endif -#if GLOBAL_Q == 12 -#define _IQatan(A) _IQ12atan2(A,_IQ(1.0)) -#endif -#if GLOBAL_Q == 11 -#define _IQatan(A) _IQ11atan2(A,_IQ(1.0)) -#endif -#if GLOBAL_Q == 10 -#define _IQatan(A) _IQ10atan2(A,_IQ(1.0)) -#endif -#if GLOBAL_Q == 9 -#define _IQatan(A) _IQ9atan2(A,_IQ(1.0)) -#endif -#if GLOBAL_Q == 8 -#define _IQatan(A) _IQ8atan2(A,_IQ(1.0)) -#endif -#if GLOBAL_Q == 7 -#define _IQatan(A) _IQ7atan2(A,_IQ(1.0)) -#endif -#if GLOBAL_Q == 6 -#define _IQatan(A) _IQ6atan2(A,_IQ(1.0)) -#endif -#if GLOBAL_Q == 5 -#define _IQatan(A) _IQ5atan2(A,_IQ(1.0)) -#endif -#if GLOBAL_Q == 4 -#define _IQatan(A) _IQ4atan2(A,_IQ(1.0)) -#endif -#if GLOBAL_Q == 3 -#define _IQatan(A) _IQ3atan2(A,_IQ(1.0)) -#endif -#if GLOBAL_Q == 2 -#define _IQatan(A) _IQ2atan2(A,_IQ(1.0)) -#endif -#if GLOBAL_Q == 1 -#define _IQatan(A) _IQ1atan2(A,_IQ(1.0)) -#endif -//--------------------------------------------------------------------------- -extern long _IQ30sqrt(long A); -extern long _IQ29sqrt(long A); -extern long _IQ28sqrt(long A); -extern long _IQ27sqrt(long A); -extern long _IQ26sqrt(long A); -extern long _IQ25sqrt(long A); -extern long _IQ24sqrt(long A); -extern long _IQ23sqrt(long A); -extern long _IQ22sqrt(long A); -extern long _IQ21sqrt(long A); -extern long _IQ20sqrt(long A); -extern long _IQ19sqrt(long A); -extern long _IQ18sqrt(long A); -extern long _IQ17sqrt(long A); -extern long _IQ16sqrt(long A); -extern long _IQ15sqrt(long A); -extern long _IQ14sqrt(long A); -extern long _IQ13sqrt(long A); -extern long _IQ12sqrt(long A); -extern long _IQ11sqrt(long A); -extern long _IQ10sqrt(long A); -extern long _IQ9sqrt(long A); -extern long _IQ8sqrt(long A); -extern long _IQ7sqrt(long A); -extern long _IQ6sqrt(long A); -extern long _IQ5sqrt(long A); -extern long _IQ4sqrt(long A); -extern long _IQ3sqrt(long A); -extern long _IQ2sqrt(long A); -extern long _IQ1sqrt(long A); - -#if GLOBAL_Q == 30 -#define _IQsqrt(A) _IQ30sqrt(A) -#endif -#if GLOBAL_Q == 29 -#define _IQsqrt(A) _IQ29sqrt(A) -#endif -#if GLOBAL_Q == 28 -#define _IQsqrt(A) _IQ28sqrt(A) -#endif -#if GLOBAL_Q == 27 -#define _IQsqrt(A) _IQ27sqrt(A) -#endif -#if GLOBAL_Q == 26 -#define _IQsqrt(A) _IQ26sqrt(A) -#endif -#if GLOBAL_Q == 25 -#define _IQsqrt(A) _IQ25sqrt(A) -#endif -#if GLOBAL_Q == 24 -#define _IQsqrt(A) _IQ24sqrt(A) -#endif -#if GLOBAL_Q == 23 -#define _IQsqrt(A) _IQ23sqrt(A) -#endif -#if GLOBAL_Q == 22 -#define _IQsqrt(A) _IQ22sqrt(A) -#endif -#if GLOBAL_Q == 21 -#define _IQsqrt(A) _IQ21sqrt(A) -#endif -#if GLOBAL_Q == 20 -#define _IQsqrt(A) _IQ20sqrt(A) -#endif -#if GLOBAL_Q == 19 -#define _IQsqrt(A) _IQ19sqrt(A) -#endif -#if GLOBAL_Q == 18 -#define _IQsqrt(A) _IQ18sqrt(A) -#endif -#if GLOBAL_Q == 17 -#define _IQsqrt(A) _IQ17sqrt(A) -#endif -#if GLOBAL_Q == 16 -#define _IQsqrt(A) _IQ16sqrt(A) -#endif -#if GLOBAL_Q == 15 -#define _IQsqrt(A) _IQ15sqrt(A) -#endif -#if GLOBAL_Q == 14 -#define _IQsqrt(A) _IQ14sqrt(A) -#endif -#if GLOBAL_Q == 13 -#define _IQsqrt(A) _IQ13sqrt(A) -#endif -#if GLOBAL_Q == 12 -#define _IQsqrt(A) _IQ12sqrt(A) -#endif -#if GLOBAL_Q == 11 -#define _IQsqrt(A) _IQ11sqrt(A) -#endif -#if GLOBAL_Q == 10 -#define _IQsqrt(A) _IQ10sqrt(A) -#endif -#if GLOBAL_Q == 9 -#define _IQsqrt(A) _IQ9sqrt(A) -#endif -#if GLOBAL_Q == 8 -#define _IQsqrt(A) _IQ8sqrt(A) -#endif -#if GLOBAL_Q == 7 -#define _IQsqrt(A) _IQ7sqrt(A) -#endif -#if GLOBAL_Q == 6 -#define _IQsqrt(A) _IQ6sqrt(A) -#endif -#if GLOBAL_Q == 5 -#define _IQsqrt(A) _IQ5sqrt(A) -#endif -#if GLOBAL_Q == 4 -#define _IQsqrt(A) _IQ4sqrt(A) -#endif -#if GLOBAL_Q == 3 -#define _IQsqrt(A) _IQ3sqrt(A) -#endif -#if GLOBAL_Q == 2 -#define _IQsqrt(A) _IQ2sqrt(A) -#endif -#if GLOBAL_Q == 1 -#define _IQsqrt(A) _IQ1sqrt(A) -#endif -//--------------------------------------------------------------------------- -extern long _IQ30isqrt(long A); -extern long _IQ29isqrt(long A); -extern long _IQ28isqrt(long A); -extern long _IQ27isqrt(long A); -extern long _IQ26isqrt(long A); -extern long _IQ25isqrt(long A); -extern long _IQ24isqrt(long A); -extern long _IQ23isqrt(long A); -extern long _IQ22isqrt(long A); -extern long _IQ21isqrt(long A); -extern long _IQ20isqrt(long A); -extern long _IQ19isqrt(long A); -extern long _IQ18isqrt(long A); -extern long _IQ17isqrt(long A); -extern long _IQ16isqrt(long A); -extern long _IQ15isqrt(long A); -extern long _IQ14isqrt(long A); -extern long _IQ13isqrt(long A); -extern long _IQ12isqrt(long A); -extern long _IQ11isqrt(long A); -extern long _IQ10isqrt(long A); -extern long _IQ9isqrt(long A); -extern long _IQ8isqrt(long A); -extern long _IQ7isqrt(long A); -extern long _IQ6isqrt(long A); -extern long _IQ5isqrt(long A); -extern long _IQ4isqrt(long A); -extern long _IQ3isqrt(long A); -extern long _IQ2isqrt(long A); -extern long _IQ1isqrt(long A); - -#if GLOBAL_Q == 30 -#define _IQisqrt(A) _IQ30isqrt(A) -#endif -#if GLOBAL_Q == 29 -#define _IQisqrt(A) _IQ29isqrt(A) -#endif -#if GLOBAL_Q == 28 -#define _IQisqrt(A) _IQ28isqrt(A) -#endif -#if GLOBAL_Q == 27 -#define _IQisqrt(A) _IQ27isqrt(A) -#endif -#if GLOBAL_Q == 26 -#define _IQisqrt(A) _IQ26isqrt(A) -#endif -#if GLOBAL_Q == 25 -#define _IQisqrt(A) _IQ25isqrt(A) -#endif -#if GLOBAL_Q == 24 -#define _IQisqrt(A) _IQ24isqrt(A) -#endif -#if GLOBAL_Q == 23 -#define _IQisqrt(A) _IQ23isqrt(A) -#endif -#if GLOBAL_Q == 22 -#define _IQisqrt(A) _IQ22isqrt(A) -#endif -#if GLOBAL_Q == 21 -#define _IQisqrt(A) _IQ21isqrt(A) -#endif -#if GLOBAL_Q == 20 -#define _IQisqrt(A) _IQ20isqrt(A) -#endif -#if GLOBAL_Q == 19 -#define _IQisqrt(A) _IQ19isqrt(A) -#endif -#if GLOBAL_Q == 18 -#define _IQisqrt(A) _IQ18isqrt(A) -#endif -#if GLOBAL_Q == 17 -#define _IQisqrt(A) _IQ17isqrt(A) -#endif -#if GLOBAL_Q == 16 -#define _IQisqrt(A) _IQ16isqrt(A) -#endif -#if GLOBAL_Q == 15 -#define _IQisqrt(A) _IQ15isqrt(A) -#endif -#if GLOBAL_Q == 14 -#define _IQisqrt(A) _IQ14isqrt(A) -#endif -#if GLOBAL_Q == 13 -#define _IQisqrt(A) _IQ13isqrt(A) -#endif -#if GLOBAL_Q == 12 -#define _IQisqrt(A) _IQ12isqrt(A) -#endif -#if GLOBAL_Q == 11 -#define _IQisqrt(A) _IQ11isqrt(A) -#endif -#if GLOBAL_Q == 10 -#define _IQisqrt(A) _IQ10isqrt(A) -#endif -#if GLOBAL_Q == 9 -#define _IQisqrt(A) _IQ9isqrt(A) -#endif -#if GLOBAL_Q == 8 -#define _IQisqrt(A) _IQ8isqrt(A) -#endif -#if GLOBAL_Q == 7 -#define _IQisqrt(A) _IQ7isqrt(A) -#endif -#if GLOBAL_Q == 6 -#define _IQisqrt(A) _IQ6isqrt(A) -#endif -#if GLOBAL_Q == 5 -#define _IQisqrt(A) _IQ5isqrt(A) -#endif -#if GLOBAL_Q == 4 -#define _IQisqrt(A) _IQ4isqrt(A) -#endif -#if GLOBAL_Q == 3 -#define _IQisqrt(A) _IQ3isqrt(A) -#endif -#if GLOBAL_Q == 2 -#define _IQisqrt(A) _IQ2isqrt(A) -#endif -#if GLOBAL_Q == 1 -#define _IQisqrt(A) _IQ1isqrt(A) -#endif -//--------------------------------------------------------------------------- -extern long _IQ30exp(long A); -extern long _IQ29exp(long A); -extern long _IQ28exp(long A); -extern long _IQ27exp(long A); -extern long _IQ26exp(long A); -extern long _IQ25exp(long A); -extern long _IQ24exp(long A); -extern long _IQ23exp(long A); -extern long _IQ22exp(long A); -extern long _IQ21exp(long A); -extern long _IQ20exp(long A); -extern long _IQ19exp(long A); -extern long _IQ18exp(long A); -extern long _IQ17exp(long A); -extern long _IQ16exp(long A); -extern long _IQ15exp(long A); -extern long _IQ14exp(long A); -extern long _IQ13exp(long A); -extern long _IQ12exp(long A); -extern long _IQ11exp(long A); -extern long _IQ10exp(long A); -extern long _IQ9exp(long A); -extern long _IQ8exp(long A); -extern long _IQ7exp(long A); -extern long _IQ6exp(long A); -extern long _IQ5exp(long A); -extern long _IQ4exp(long A); -extern long _IQ3exp(long A); -extern long _IQ2exp(long A); -extern long _IQ1exp(long A); - -#if GLOBAL_Q == 30 -#define _IQexp(A) _IQ30exp(A) -#endif -#if GLOBAL_Q == 29 -#define _IQexp(A) _IQ29exp(A) -#endif -#if GLOBAL_Q == 28 -#define _IQexp(A) _IQ28exp(A) -#endif -#if GLOBAL_Q == 27 -#define _IQexp(A) _IQ27exp(A) -#endif -#if GLOBAL_Q == 26 -#define _IQexp(A) _IQ26exp(A) -#endif -#if GLOBAL_Q == 25 -#define _IQexp(A) _IQ25exp(A) -#endif -#if GLOBAL_Q == 24 -#define _IQexp(A) _IQ24exp(A) -#endif -#if GLOBAL_Q == 23 -#define _IQexp(A) _IQ23exp(A) -#endif -#if GLOBAL_Q == 22 -#define _IQexp(A) _IQ22exp(A) -#endif -#if GLOBAL_Q == 21 -#define _IQexp(A) _IQ21exp(A) -#endif -#if GLOBAL_Q == 20 -#define _IQexp(A) _IQ20exp(A) -#endif -#if GLOBAL_Q == 19 -#define _IQexp(A) _IQ19exp(A) -#endif -#if GLOBAL_Q == 18 -#define _IQexp(A) _IQ18exp(A) -#endif -#if GLOBAL_Q == 17 -#define _IQexp(A) _IQ17exp(A) -#endif -#if GLOBAL_Q == 16 -#define _IQexp(A) _IQ16exp(A) -#endif -#if GLOBAL_Q == 15 -#define _IQexp(A) _IQ15exp(A) -#endif -#if GLOBAL_Q == 14 -#define _IQexp(A) _IQ14exp(A) -#endif -#if GLOBAL_Q == 13 -#define _IQexp(A) _IQ13exp(A) -#endif -#if GLOBAL_Q == 12 -#define _IQexp(A) _IQ12exp(A) -#endif -#if GLOBAL_Q == 11 -#define _IQexp(A) _IQ11exp(A) -#endif -#if GLOBAL_Q == 10 -#define _IQexp(A) _IQ10exp(A) -#endif -#if GLOBAL_Q == 9 -#define _IQexp(A) _IQ9exp(A) -#endif -#if GLOBAL_Q == 8 -#define _IQexp(A) _IQ8exp(A) -#endif -#if GLOBAL_Q == 7 -#define _IQexp(A) _IQ7exp(A) -#endif -#if GLOBAL_Q == 6 -#define _IQexp(A) _IQ6exp(A) -#endif -#if GLOBAL_Q == 5 -#define _IQexp(A) _IQ5exp(A) -#endif -#if GLOBAL_Q == 4 -#define _IQexp(A) _IQ4exp(A) -#endif -#if GLOBAL_Q == 3 -#define _IQexp(A) _IQ3exp(A) -#endif -#if GLOBAL_Q == 2 -#define _IQexp(A) _IQ2exp(A) -#endif -#if GLOBAL_Q == 1 -#define _IQexp(A) _IQ1exp(A) -#endif -//--------------------------------------------------------------------------- -extern long _IQ30int(long A); -extern long _IQ29int(long A); -extern long _IQ28int(long A); -extern long _IQ27int(long A); -extern long _IQ26int(long A); -extern long _IQ25int(long A); -extern long _IQ24int(long A); -extern long _IQ23int(long A); -extern long _IQ22int(long A); -extern long _IQ21int(long A); -extern long _IQ20int(long A); -extern long _IQ19int(long A); -extern long _IQ18int(long A); -extern long _IQ17int(long A); -extern long _IQ16int(long A); -extern long _IQ15int(long A); -extern long _IQ14int(long A); -extern long _IQ13int(long A); -extern long _IQ12int(long A); -extern long _IQ11int(long A); -extern long _IQ10int(long A); -extern long _IQ9int(long A); -extern long _IQ8int(long A); -extern long _IQ7int(long A); -extern long _IQ6int(long A); -extern long _IQ5int(long A); -extern long _IQ4int(long A); -extern long _IQ3int(long A); -extern long _IQ2int(long A); -extern long _IQ1int(long A); - -#if GLOBAL_Q == 30 -#define _IQint(A) _IQ30int(A) -#endif -#if GLOBAL_Q == 29 -#define _IQint(A) _IQ29int(A) -#endif -#if GLOBAL_Q == 28 -#define _IQint(A) _IQ28int(A) -#endif -#if GLOBAL_Q == 27 -#define _IQint(A) _IQ27int(A) -#endif -#if GLOBAL_Q == 26 -#define _IQint(A) _IQ26int(A) -#endif -#if GLOBAL_Q == 25 -#define _IQint(A) _IQ25int(A) -#endif -#if GLOBAL_Q == 24 -#define _IQint(A) _IQ24int(A) -#endif -#if GLOBAL_Q == 23 -#define _IQint(A) _IQ23int(A) -#endif -#if GLOBAL_Q == 22 -#define _IQint(A) _IQ22int(A) -#endif -#if GLOBAL_Q == 21 -#define _IQint(A) _IQ21int(A) -#endif -#if GLOBAL_Q == 20 -#define _IQint(A) _IQ20int(A) -#endif -#if GLOBAL_Q == 19 -#define _IQint(A) _IQ19int(A) -#endif -#if GLOBAL_Q == 18 -#define _IQint(A) _IQ18int(A) -#endif -#if GLOBAL_Q == 17 -#define _IQint(A) _IQ17int(A) -#endif -#if GLOBAL_Q == 16 -#define _IQint(A) _IQ16int(A) -#endif -#if GLOBAL_Q == 15 -#define _IQint(A) _IQ15int(A) -#endif -#if GLOBAL_Q == 14 -#define _IQint(A) _IQ14int(A) -#endif -#if GLOBAL_Q == 13 -#define _IQint(A) _IQ13int(A) -#endif -#if GLOBAL_Q == 12 -#define _IQint(A) _IQ12int(A) -#endif -#if GLOBAL_Q == 11 -#define _IQint(A) _IQ11int(A) -#endif -#if GLOBAL_Q == 10 -#define _IQint(A) _IQ10int(A) -#endif -#if GLOBAL_Q == 9 -#define _IQint(A) _IQ9int(A) -#endif -#if GLOBAL_Q == 8 -#define _IQint(A) _IQ8int(A) -#endif -#if GLOBAL_Q == 7 -#define _IQint(A) _IQ7int(A) -#endif -#if GLOBAL_Q == 6 -#define _IQint(A) _IQ6int(A) -#endif -#if GLOBAL_Q == 5 -#define _IQint(A) _IQ5int(A) -#endif -#if GLOBAL_Q == 4 -#define _IQint(A) _IQ4int(A) -#endif -#if GLOBAL_Q == 3 -#define _IQint(A) _IQ3int(A) -#endif -#if GLOBAL_Q == 2 -#define _IQint(A) _IQ2int(A) -#endif -#if GLOBAL_Q == 1 -#define _IQint(A) _IQ1int(A) -#endif -//--------------------------------------------------------------------------- -extern long _IQ30frac(long A); -extern long _IQ29frac(long A); -extern long _IQ28frac(long A); -extern long _IQ27frac(long A); -extern long _IQ26frac(long A); -extern long _IQ25frac(long A); -extern long _IQ24frac(long A); -extern long _IQ23frac(long A); -extern long _IQ22frac(long A); -extern long _IQ21frac(long A); -extern long _IQ20frac(long A); -extern long _IQ19frac(long A); -extern long _IQ18frac(long A); -extern long _IQ17frac(long A); -extern long _IQ16frac(long A); -extern long _IQ15frac(long A); -extern long _IQ14frac(long A); -extern long _IQ13frac(long A); -extern long _IQ12frac(long A); -extern long _IQ11frac(long A); -extern long _IQ10frac(long A); -extern long _IQ9frac(long A); -extern long _IQ8frac(long A); -extern long _IQ7frac(long A); -extern long _IQ6frac(long A); -extern long _IQ5frac(long A); -extern long _IQ4frac(long A); -extern long _IQ3frac(long A); -extern long _IQ2frac(long A); -extern long _IQ1frac(long A); - -#if GLOBAL_Q == 30 -#define _IQfrac(A) _IQ30frac(A) -#endif -#if GLOBAL_Q == 29 -#define _IQfrac(A) _IQ29frac(A) -#endif -#if GLOBAL_Q == 28 -#define _IQfrac(A) _IQ28frac(A) -#endif -#if GLOBAL_Q == 27 -#define _IQfrac(A) _IQ27frac(A) -#endif -#if GLOBAL_Q == 26 -#define _IQfrac(A) _IQ26frac(A) -#endif -#if GLOBAL_Q == 25 -#define _IQfrac(A) _IQ25frac(A) -#endif -#if GLOBAL_Q == 24 -#define _IQfrac(A) _IQ24frac(A) -#endif -#if GLOBAL_Q == 23 -#define _IQfrac(A) _IQ23frac(A) -#endif -#if GLOBAL_Q == 22 -#define _IQfrac(A) _IQ22frac(A) -#endif -#if GLOBAL_Q == 21 -#define _IQfrac(A) _IQ21frac(A) -#endif -#if GLOBAL_Q == 20 -#define _IQfrac(A) _IQ20frac(A) -#endif -#if GLOBAL_Q == 19 -#define _IQfrac(A) _IQ19frac(A) -#endif -#if GLOBAL_Q == 18 -#define _IQfrac(A) _IQ18frac(A) -#endif -#if GLOBAL_Q == 17 -#define _IQfrac(A) _IQ17frac(A) -#endif -#if GLOBAL_Q == 16 -#define _IQfrac(A) _IQ16frac(A) -#endif -#if GLOBAL_Q == 15 -#define _IQfrac(A) _IQ15frac(A) -#endif -#if GLOBAL_Q == 14 -#define _IQfrac(A) _IQ14frac(A) -#endif -#if GLOBAL_Q == 13 -#define _IQfrac(A) _IQ13frac(A) -#endif -#if GLOBAL_Q == 12 -#define _IQfrac(A) _IQ12frac(A) -#endif -#if GLOBAL_Q == 11 -#define _IQfrac(A) _IQ11frac(A) -#endif -#if GLOBAL_Q == 10 -#define _IQfrac(A) _IQ10frac(A) -#endif -#if GLOBAL_Q == 9 -#define _IQfrac(A) _IQ9frac(A) -#endif -#if GLOBAL_Q == 8 -#define _IQfrac(A) _IQ8frac(A) -#endif -#if GLOBAL_Q == 7 -#define _IQfrac(A) _IQ7frac(A) -#endif -#if GLOBAL_Q == 6 -#define _IQfrac(A) _IQ6frac(A) -#endif -#if GLOBAL_Q == 5 -#define _IQfrac(A) _IQ5frac(A) -#endif -#if GLOBAL_Q == 4 -#define _IQfrac(A) _IQ4frac(A) -#endif -#if GLOBAL_Q == 3 -#define _IQfrac(A) _IQ3frac(A) -#endif -#if GLOBAL_Q == 2 -#define _IQfrac(A) _IQ2frac(A) -#endif -#if GLOBAL_Q == 1 -#define _IQfrac(A) _IQ1frac(A) -#endif -//--------------------------------------------------------------------------- -#define _IQmpyIQX(A, IQA, B, IQB) __IQxmpy(A, B, (GLOBAL_Q + 32 - IQA - IQB)) -#define _IQ30mpyIQX(A, IQA, B, IQB) __IQxmpy(A, B, (30 + 32 - IQA - IQB)) -#define _IQ29mpyIQX(A, IQA, B, IQB) __IQxmpy(A, B, (29 + 32 - IQA - IQB)) -#define _IQ28mpyIQX(A, IQA, B, IQB) __IQxmpy(A, B, (28 + 32 - IQA - IQB)) -#define _IQ27mpyIQX(A, IQA, B, IQB) __IQxmpy(A, B, (27 + 32 - IQA - IQB)) -#define _IQ26mpyIQX(A, IQA, B, IQB) __IQxmpy(A, B, (26 + 32 - IQA - IQB)) -#define _IQ25mpyIQX(A, IQA, B, IQB) __IQxmpy(A, B, (25 + 32 - IQA - IQB)) -#define _IQ24mpyIQX(A, IQA, B, IQB) __IQxmpy(A, B, (24 + 32 - IQA - IQB)) -#define _IQ23mpyIQX(A, IQA, B, IQB) __IQxmpy(A, B, (23 + 32 - IQA - IQB)) -#define _IQ22mpyIQX(A, IQA, B, IQB) __IQxmpy(A, B, (22 + 32 - IQA - IQB)) -#define _IQ21mpyIQX(A, IQA, B, IQB) __IQxmpy(A, B, (21 + 32 - IQA - IQB)) -#define _IQ20mpyIQX(A, IQA, B, IQB) __IQxmpy(A, B, (20 + 32 - IQA - IQB)) -#define _IQ19mpyIQX(A, IQA, B, IQB) __IQxmpy(A, B, (19 + 32 - IQA - IQB)) -#define _IQ18mpyIQX(A, IQA, B, IQB) __IQxmpy(A, B, (18 + 32 - IQA - IQB)) -#define _IQ17mpyIQX(A, IQA, B, IQB) __IQxmpy(A, B, (17 + 32 - IQA - IQB)) -#define _IQ16mpyIQX(A, IQA, B, IQB) __IQxmpy(A, B, (16 + 32 - IQA - IQB)) -#define _IQ15mpyIQX(A, IQA, B, IQB) __IQxmpy(A, B, (15 + 32 - IQA - IQB)) -#define _IQ14mpyIQX(A, IQA, B, IQB) __IQxmpy(A, B, (14 + 32 - IQA - IQB)) -#define _IQ13mpyIQX(A, IQA, B, IQB) __IQxmpy(A, B, (13 + 32 - IQA - IQB)) -#define _IQ12mpyIQX(A, IQA, B, IQB) __IQxmpy(A, B, (12 + 32 - IQA - IQB)) -#define _IQ11mpyIQX(A, IQA, B, IQB) __IQxmpy(A, B, (11 + 32 - IQA - IQB)) -#define _IQ10mpyIQX(A, IQA, B, IQB) __IQxmpy(A, B, (10 + 32 - IQA - IQB)) -#define _IQ9mpyIQX(A, IQA, B, IQB) __IQxmpy(A, B, (9 + 32 - IQA - IQB)) -#define _IQ8mpyIQX(A, IQA, B, IQB) __IQxmpy(A, B, (8 + 32 - IQA - IQB)) -#define _IQ7mpyIQX(A, IQA, B, IQB) __IQxmpy(A, B, (7 + 32 - IQA - IQB)) -#define _IQ6mpyIQX(A, IQA, B, IQB) __IQxmpy(A, B, (6 + 32 - IQA - IQB)) -#define _IQ5mpyIQX(A, IQA, B, IQB) __IQxmpy(A, B, (5 + 32 - IQA - IQB)) -#define _IQ4mpyIQX(A, IQA, B, IQB) __IQxmpy(A, B, (4 + 32 - IQA - IQB)) -#define _IQ3mpyIQX(A, IQA, B, IQB) __IQxmpy(A, B, (3 + 32 - IQA - IQB)) -#define _IQ2mpyIQX(A, IQA, B, IQB) __IQxmpy(A, B, (2 + 32 - IQA - IQB)) -#define _IQ1mpyIQX(A, IQA, B, IQB) __IQxmpy(A, B, (1 + 32 - IQA - IQB)) -//--------------------------------------------------------------------------- -#define _IQmpyI32(A,B) ((A)*(B)) -#define _IQ30mpyI32(A,B) ((A)*(B)) -#define _IQ29mpyI32(A,B) ((A)*(B)) -#define _IQ28mpyI32(A,B) ((A)*(B)) -#define _IQ27mpyI32(A,B) ((A)*(B)) -#define _IQ26mpyI32(A,B) ((A)*(B)) -#define _IQ25mpyI32(A,B) ((A)*(B)) -#define _IQ24mpyI32(A,B) ((A)*(B)) -#define _IQ23mpyI32(A,B) ((A)*(B)) -#define _IQ22mpyI32(A,B) ((A)*(B)) -#define _IQ21mpyI32(A,B) ((A)*(B)) -#define _IQ20mpyI32(A,B) ((A)*(B)) -#define _IQ19mpyI32(A,B) ((A)*(B)) -#define _IQ18mpyI32(A,B) ((A)*(B)) -#define _IQ17mpyI32(A,B) ((A)*(B)) -#define _IQ16mpyI32(A,B) ((A)*(B)) -#define _IQ15mpyI32(A,B) ((A)*(B)) -#define _IQ14mpyI32(A,B) ((A)*(B)) -#define _IQ13mpyI32(A,B) ((A)*(B)) -#define _IQ12mpyI32(A,B) ((A)*(B)) -#define _IQ11mpyI32(A,B) ((A)*(B)) -#define _IQ10mpyI32(A,B) ((A)*(B)) -#define _IQ9mpyI32(A,B) ((A)*(B)) -#define _IQ8mpyI32(A,B) ((A)*(B)) -#define _IQ7mpyI32(A,B) ((A)*(B)) -#define _IQ6mpyI32(A,B) ((A)*(B)) -#define _IQ5mpyI32(A,B) ((A)*(B)) -#define _IQ4mpyI32(A,B) ((A)*(B)) -#define _IQ3mpyI32(A,B) ((A)*(B)) -#define _IQ2mpyI32(A,B) ((A)*(B)) -#define _IQ1mpyI32(A,B) ((A)*(B)) -//--------------------------------------------------------------------------- -extern long _IQ30mpyI32int(long A, long B); -extern long _IQ29mpyI32int(long A, long B); -extern long _IQ28mpyI32int(long A, long B); -extern long _IQ27mpyI32int(long A, long B); -extern long _IQ26mpyI32int(long A, long B); -extern long _IQ25mpyI32int(long A, long B); -extern long _IQ24mpyI32int(long A, long B); -extern long _IQ23mpyI32int(long A, long B); -extern long _IQ22mpyI32int(long A, long B); -extern long _IQ21mpyI32int(long A, long B); -extern long _IQ20mpyI32int(long A, long B); -extern long _IQ19mpyI32int(long A, long B); -extern long _IQ18mpyI32int(long A, long B); -extern long _IQ17mpyI32int(long A, long B); -extern long _IQ16mpyI32int(long A, long B); -extern long _IQ15mpyI32int(long A, long B); -extern long _IQ14mpyI32int(long A, long B); -extern long _IQ13mpyI32int(long A, long B); -extern long _IQ12mpyI32int(long A, long B); -extern long _IQ11mpyI32int(long A, long B); -extern long _IQ10mpyI32int(long A, long B); -extern long _IQ9mpyI32int(long A, long B); -extern long _IQ8mpyI32int(long A, long B); -extern long _IQ7mpyI32int(long A, long B); -extern long _IQ6mpyI32int(long A, long B); -extern long _IQ5mpyI32int(long A, long B); -extern long _IQ4mpyI32int(long A, long B); -extern long _IQ3mpyI32int(long A, long B); -extern long _IQ2mpyI32int(long A, long B); -extern long _IQ1mpyI32int(long A, long B); - -#if GLOBAL_Q == 30 -#define _IQmpyI32int(A, B) _IQ30mpyI32int(A, B) -#endif -#if GLOBAL_Q == 29 -#define _IQmpyI32int(A, B) _IQ29mpyI32int(A, B) -#endif -#if GLOBAL_Q == 28 -#define _IQmpyI32int(A, B) _IQ28mpyI32int(A, B) -#endif -#if GLOBAL_Q == 27 -#define _IQmpyI32int(A, B) _IQ27mpyI32int(A, B) -#endif -#if GLOBAL_Q == 26 -#define _IQmpyI32int(A, B) _IQ26mpyI32int(A, B) -#endif -#if GLOBAL_Q == 25 -#define _IQmpyI32int(A, B) _IQ25mpyI32int(A, B) -#endif -#if GLOBAL_Q == 24 -#define _IQmpyI32int(A, B) _IQ24mpyI32int(A, B) -#endif -#if GLOBAL_Q == 23 -#define _IQmpyI32int(A, B) _IQ23mpyI32int(A, B) -#endif -#if GLOBAL_Q == 22 -#define _IQmpyI32int(A, B) _IQ22mpyI32int(A, B) -#endif -#if GLOBAL_Q == 21 -#define _IQmpyI32int(A, B) _IQ21mpyI32int(A, B) -#endif -#if GLOBAL_Q == 20 -#define _IQmpyI32int(A, B) _IQ20mpyI32int(A, B) -#endif -#if GLOBAL_Q == 19 -#define _IQmpyI32int(A, B) _IQ19mpyI32int(A, B) -#endif -#if GLOBAL_Q == 18 -#define _IQmpyI32int(A, B) _IQ18mpyI32int(A, B) -#endif -#if GLOBAL_Q == 17 -#define _IQmpyI32int(A, B) _IQ17mpyI32int(A, B) -#endif -#if GLOBAL_Q == 16 -#define _IQmpyI32int(A, B) _IQ16mpyI32int(A, B) -#endif -#if GLOBAL_Q == 15 -#define _IQmpyI32int(A, B) _IQ15mpyI32int(A, B) -#endif -#if GLOBAL_Q == 14 -#define _IQmpyI32int(A, B) _IQ14mpyI32int(A, B) -#endif -#if GLOBAL_Q == 13 -#define _IQmpyI32int(A, B) _IQ13mpyI32int(A, B) -#endif -#if GLOBAL_Q == 12 -#define _IQmpyI32int(A, B) _IQ12mpyI32int(A, B) -#endif -#if GLOBAL_Q == 11 -#define _IQmpyI32int(A, B) _IQ11mpyI32int(A, B) -#endif -#if GLOBAL_Q == 10 -#define _IQmpyI32int(A, B) _IQ10mpyI32int(A, B) -#endif -#if GLOBAL_Q == 9 -#define _IQmpyI32int(A, B) _IQ9mpyI32int(A, B) -#endif -#if GLOBAL_Q == 8 -#define _IQmpyI32int(A, B) _IQ8mpyI32int(A, B) -#endif -#if GLOBAL_Q == 7 -#define _IQmpyI32int(A, B) _IQ7mpyI32int(A, B) -#endif -#if GLOBAL_Q == 6 -#define _IQmpyI32int(A, B) _IQ6mpyI32int(A, B) -#endif -#if GLOBAL_Q == 5 -#define _IQmpyI32int(A, B) _IQ5mpyI32int(A, B) -#endif -#if GLOBAL_Q == 4 -#define _IQmpyI32int(A, B) _IQ4mpyI32int(A, B) -#endif -#if GLOBAL_Q == 3 -#define _IQmpyI32int(A, B) _IQ3mpyI32int(A, B) -#endif -#if GLOBAL_Q == 2 -#define _IQmpyI32int(A, B) _IQ2mpyI32int(A, B) -#endif -#if GLOBAL_Q == 1 -#define _IQmpyI32int(A, B) _IQ1mpyI32int(A, B) -#endif -//--------------------------------------------------------------------------- -extern long _IQ30mpyI32frac(long A, long B); -extern long _IQ29mpyI32frac(long A, long B); -extern long _IQ28mpyI32frac(long A, long B); -extern long _IQ27mpyI32frac(long A, long B); -extern long _IQ26mpyI32frac(long A, long B); -extern long _IQ25mpyI32frac(long A, long B); -extern long _IQ24mpyI32frac(long A, long B); -extern long _IQ23mpyI32frac(long A, long B); -extern long _IQ22mpyI32frac(long A, long B); -extern long _IQ21mpyI32frac(long A, long B); -extern long _IQ20mpyI32frac(long A, long B); -extern long _IQ19mpyI32frac(long A, long B); -extern long _IQ18mpyI32frac(long A, long B); -extern long _IQ17mpyI32frac(long A, long B); -extern long _IQ16mpyI32frac(long A, long B); -extern long _IQ15mpyI32frac(long A, long B); -extern long _IQ14mpyI32frac(long A, long B); -extern long _IQ13mpyI32frac(long A, long B); -extern long _IQ12mpyI32frac(long A, long B); -extern long _IQ11mpyI32frac(long A, long B); -extern long _IQ10mpyI32frac(long A, long B); -extern long _IQ9mpyI32frac(long A, long B); -extern long _IQ8mpyI32frac(long A, long B); -extern long _IQ7mpyI32frac(long A, long B); -extern long _IQ6mpyI32frac(long A, long B); -extern long _IQ5mpyI32frac(long A, long B); -extern long _IQ4mpyI32frac(long A, long B); -extern long _IQ3mpyI32frac(long A, long B); -extern long _IQ2mpyI32frac(long A, long B); -extern long _IQ1mpyI32frac(long A, long B); - -#if GLOBAL_Q == 30 -#define _IQmpyI32frac(A, B) _IQ30mpyI32frac(A, B) -#endif -#if GLOBAL_Q == 29 -#define _IQmpyI32frac(A, B) _IQ29mpyI32frac(A, B) -#endif -#if GLOBAL_Q == 28 -#define _IQmpyI32frac(A, B) _IQ28mpyI32frac(A, B) -#endif -#if GLOBAL_Q == 27 -#define _IQmpyI32frac(A, B) _IQ27mpyI32frac(A, B) -#endif -#if GLOBAL_Q == 26 -#define _IQmpyI32frac(A, B) _IQ26mpyI32frac(A, B) -#endif -#if GLOBAL_Q == 25 -#define _IQmpyI32frac(A, B) _IQ25mpyI32frac(A, B) -#endif -#if GLOBAL_Q == 24 -#define _IQmpyI32frac(A, B) _IQ24mpyI32frac(A, B) -#endif -#if GLOBAL_Q == 23 -#define _IQmpyI32frac(A, B) _IQ23mpyI32frac(A, B) -#endif -#if GLOBAL_Q == 22 -#define _IQmpyI32frac(A, B) _IQ22mpyI32frac(A, B) -#endif -#if GLOBAL_Q == 21 -#define _IQmpyI32frac(A, B) _IQ21mpyI32frac(A, B) -#endif -#if GLOBAL_Q == 20 -#define _IQmpyI32frac(A, B) _IQ20mpyI32frac(A, B) -#endif -#if GLOBAL_Q == 19 -#define _IQmpyI32frac(A, B) _IQ19mpyI32frac(A, B) -#endif -#if GLOBAL_Q == 18 -#define _IQmpyI32frac(A, B) _IQ18mpyI32frac(A, B) -#endif -#if GLOBAL_Q == 17 -#define _IQmpyI32frac(A, B) _IQ17mpyI32frac(A, B) -#endif -#if GLOBAL_Q == 16 -#define _IQmpyI32frac(A, B) _IQ16mpyI32frac(A, B) -#endif -#if GLOBAL_Q == 15 -#define _IQmpyI32frac(A, B) _IQ15mpyI32frac(A, B) -#endif -#if GLOBAL_Q == 14 -#define _IQmpyI32frac(A, B) _IQ14mpyI32frac(A, B) -#endif -#if GLOBAL_Q == 13 -#define _IQmpyI32frac(A, B) _IQ13mpyI32frac(A, B) -#endif -#if GLOBAL_Q == 12 -#define _IQmpyI32frac(A, B) _IQ12mpyI32frac(A, B) -#endif -#if GLOBAL_Q == 11 -#define _IQmpyI32frac(A, B) _IQ11mpyI32frac(A, B) -#endif -#if GLOBAL_Q == 10 -#define _IQmpyI32frac(A, B) _IQ10mpyI32frac(A, B) -#endif -#if GLOBAL_Q == 9 -#define _IQmpyI32frac(A, B) _IQ9mpyI32frac(A, B) -#endif -#if GLOBAL_Q == 8 -#define _IQmpyI32frac(A, B) _IQ8mpyI32frac(A, B) -#endif -#if GLOBAL_Q == 7 -#define _IQmpyI32frac(A, B) _IQ7mpyI32frac(A, B) -#endif -#if GLOBAL_Q == 6 -#define _IQmpyI32frac(A, B) _IQ6mpyI32frac(A, B) -#endif -#if GLOBAL_Q == 5 -#define _IQmpyI32frac(A, B) _IQ5mpyI32frac(A, B) -#endif -#if GLOBAL_Q == 4 -#define _IQmpyI32frac(A, B) _IQ4mpyI32frac(A, B) -#endif -#if GLOBAL_Q == 3 -#define _IQmpyI32frac(A, B) _IQ3mpyI32frac(A, B) -#endif -#if GLOBAL_Q == 2 -#define _IQmpyI32frac(A, B) _IQ2mpyI32frac(A, B) -#endif -#if GLOBAL_Q == 1 -#define _IQmpyI32frac(A, B) _IQ1mpyI32frac(A, B) -#endif -//--------------------------------------------------------------------------- -extern long _IQ30mag(long A, long B); -extern long _IQ29mag(long A, long B); -extern long _IQ28mag(long A, long B); -extern long _IQ27mag(long A, long B); -extern long _IQ26mag(long A, long B); -extern long _IQ25mag(long A, long B); -extern long _IQ24mag(long A, long B); -extern long _IQ23mag(long A, long B); -extern long _IQ22mag(long A, long B); -extern long _IQ21mag(long A, long B); -extern long _IQ20mag(long A, long B); -extern long _IQ19mag(long A, long B); -extern long _IQ18mag(long A, long B); -extern long _IQ17mag(long A, long B); -extern long _IQ16mag(long A, long B); -extern long _IQ15mag(long A, long B); -extern long _IQ14mag(long A, long B); -extern long _IQ13mag(long A, long B); -extern long _IQ12mag(long A, long B); -extern long _IQ11mag(long A, long B); -extern long _IQ10mag(long A, long B); -extern long _IQ9mag(long A, long B); -extern long _IQ8mag(long A, long B); -extern long _IQ7mag(long A, long B); -extern long _IQ6mag(long A, long B); -extern long _IQ5mag(long A, long B); -extern long _IQ4mag(long A, long B); -extern long _IQ3mag(long A, long B); -extern long _IQ2mag(long A, long B); -extern long _IQ1mag(long A, long B); - -#if GLOBAL_Q == 30 -#define _IQmag(A, B) _IQ30mag(A, B) -#endif -#if GLOBAL_Q == 29 -#define _IQmag(A, B) _IQ29mag(A, B) -#endif -#if GLOBAL_Q == 28 -#define _IQmag(A, B) _IQ28mag(A, B) -#endif -#if GLOBAL_Q == 27 -#define _IQmag(A, B) _IQ27mag(A, B) -#endif -#if GLOBAL_Q == 26 -#define _IQmag(A, B) _IQ26mag(A, B) -#endif -#if GLOBAL_Q == 25 -#define _IQmag(A, B) _IQ25mag(A, B) -#endif -#if GLOBAL_Q == 24 -#define _IQmag(A, B) _IQ24mag(A, B) -#endif -#if GLOBAL_Q == 23 -#define _IQmag(A, B) _IQ23mag(A, B) -#endif -#if GLOBAL_Q == 22 -#define _IQmag(A, B) _IQ22mag(A, B) -#endif -#if GLOBAL_Q == 21 -#define _IQmag(A, B) _IQ21mag(A, B) -#endif -#if GLOBAL_Q == 20 -#define _IQmag(A, B) _IQ20mag(A, B) -#endif -#if GLOBAL_Q == 19 -#define _IQmag(A, B) _IQ19mag(A, B) -#endif -#if GLOBAL_Q == 18 -#define _IQmag(A, B) _IQ18mag(A, B) -#endif -#if GLOBAL_Q == 17 -#define _IQmag(A, B) _IQ17mag(A, B) -#endif -#if GLOBAL_Q == 16 -#define _IQmag(A, B) _IQ16mag(A, B) -#endif -#if GLOBAL_Q == 15 -#define _IQmag(A, B) _IQ15mag(A, B) -#endif -#if GLOBAL_Q == 14 -#define _IQmag(A, B) _IQ14mag(A, B) -#endif -#if GLOBAL_Q == 13 -#define _IQmag(A, B) _IQ13mag(A, B) -#endif -#if GLOBAL_Q == 12 -#define _IQmag(A, B) _IQ12mag(A, B) -#endif -#if GLOBAL_Q == 11 -#define _IQmag(A, B) _IQ11mag(A, B) -#endif -#if GLOBAL_Q == 10 -#define _IQmag(A, B) _IQ10mag(A, B) -#endif -#if GLOBAL_Q == 9 -#define _IQmag(A, B) _IQ9mag(A, B) -#endif -#if GLOBAL_Q == 8 -#define _IQmag(A, B) _IQ8mag(A, B) -#endif -#if GLOBAL_Q == 7 -#define _IQmag(A, B) _IQ7mag(A, B) -#endif -#if GLOBAL_Q == 6 -#define _IQmag(A, B) _IQ6mag(A, B) -#endif -#if GLOBAL_Q == 5 -#define _IQmag(A, B) _IQ5mag(A, B) -#endif -#if GLOBAL_Q == 4 -#define _IQmag(A, B) _IQ4mag(A, B) -#endif -#if GLOBAL_Q == 3 -#define _IQmag(A, B) _IQ3mag(A, B) -#endif -#if GLOBAL_Q == 2 -#define _IQmag(A, B) _IQ2mag(A, B) -#endif -#if GLOBAL_Q == 1 -#define _IQmag(A, B) _IQ1mag(A, B) -#endif -//--------------------------------------------------------------------------- -extern long _atoIQN(const char *A, long q_value); -#define _atoIQ(A) _atoIQN(A, GLOBAL_Q) -#define _atoIQ30(A) _atoIQN(A, 30) -#define _atoIQ29(A) _atoIQN(A, 29) -#define _atoIQ28(A) _atoIQN(A, 28) -#define _atoIQ27(A) _atoIQN(A, 27) -#define _atoIQ26(A) _atoIQN(A, 26) -#define _atoIQ25(A) _atoIQN(A, 25) -#define _atoIQ24(A) _atoIQN(A, 24) -#define _atoIQ23(A) _atoIQN(A, 23) -#define _atoIQ22(A) _atoIQN(A, 22) -#define _atoIQ21(A) _atoIQN(A, 21) -#define _atoIQ20(A) _atoIQN(A, 20) -#define _atoIQ19(A) _atoIQN(A, 19) -#define _atoIQ18(A) _atoIQN(A, 18) -#define _atoIQ17(A) _atoIQN(A, 17) -#define _atoIQ16(A) _atoIQN(A, 16) -#define _atoIQ15(A) _atoIQN(A, 15) -#define _atoIQ14(A) _atoIQN(A, 14) -#define _atoIQ13(A) _atoIQN(A, 13) -#define _atoIQ12(A) _atoIQN(A, 12) -#define _atoIQ11(A) _atoIQN(A, 11) -#define _atoIQ10(A) _atoIQN(A, 10) -#define _atoIQ9(A) _atoIQN(A, 9) -#define _atoIQ8(A) _atoIQN(A, 8) -#define _atoIQ7(A) _atoIQN(A, 7) -#define _atoIQ6(A) _atoIQN(A, 6) -#define _atoIQ5(A) _atoIQN(A, 5) -#define _atoIQ4(A) _atoIQN(A, 4) -#define _atoIQ3(A) _atoIQN(A, 3) -#define _atoIQ2(A) _atoIQN(A, 2) -#define _atoIQ1(A) _atoIQN(A, 1) -//--------------------------------------------------------------------------- -extern int __IQNtoa(char *A, const char *B, long C, int D); -extern int _IQ30toa(char *A, const char *B, long C); -extern int _IQ29toa(char *A, const char *B, long C); -extern int _IQ28toa(char *A, const char *B, long C); -extern int _IQ27toa(char *A, const char *B, long C); -extern int _IQ26toa(char *A, const char *B, long C); -extern int _IQ25toa(char *A, const char *B, long C); -extern int _IQ24toa(char *A, const char *B, long C); -extern int _IQ23toa(char *A, const char *B, long C); -extern int _IQ22toa(char *A, const char *B, long C); -extern int _IQ21toa(char *A, const char *B, long C); -extern int _IQ20toa(char *A, const char *B, long C); -extern int _IQ19toa(char *A, const char *B, long C); -extern int _IQ18toa(char *A, const char *B, long C); -extern int _IQ17toa(char *A, const char *B, long C); -extern int _IQ16toa(char *A, const char *B, long C); -extern int _IQ15toa(char *A, const char *B, long C); -extern int _IQ14toa(char *A, const char *B, long C); -extern int _IQ13toa(char *A, const char *B, long C); -extern int _IQ12toa(char *A, const char *B, long C); -extern int _IQ11toa(char *A, const char *B, long C); -extern int _IQ10toa(char *A, const char *B, long C); -extern int _IQ9toa(char *A, const char *B, long C); -extern int _IQ8toa(char *A, const char *B, long C); -extern int _IQ7toa(char *A, const char *B, long C); -extern int _IQ6toa(char *A, const char *B, long C); -extern int _IQ5toa(char *A, const char *B, long C); -extern int _IQ4toa(char *A, const char *B, long C); -extern int _IQ3toa(char *A, const char *B, long C); -extern int _IQ2toa(char *A, const char *B, long C); -extern int _IQ1toa(char *A, const char *B, long C); - - -#define _IQ30toa(A, B, C) __IQNtoa(A, B, C, 30); -#define _IQ29toa(A, B, C) __IQNtoa(A, B, C, 29); -#define _IQ28toa(A, B, C) __IQNtoa(A, B, C, 28); -#define _IQ27toa(A, B, C) __IQNtoa(A, B, C, 27); -#define _IQ26toa(A, B, C) __IQNtoa(A, B, C, 26); -#define _IQ25toa(A, B, C) __IQNtoa(A, B, C, 25); -#define _IQ24toa(A, B, C) __IQNtoa(A, B, C, 24); -#define _IQ23toa(A, B, C) __IQNtoa(A, B, C, 23); -#define _IQ21toa(A, B, C) __IQNtoa(A, B, C, 21); -#define _IQ22toa(A, B, C) __IQNtoa(A, B, C, 22); -#define _IQ20toa(A, B, C) __IQNtoa(A, B, C, 20); -#define _IQ19toa(A, B, C) __IQNtoa(A, B, C, 19); -#define _IQ18toa(A, B, C) __IQNtoa(A, B, C, 18); -#define _IQ17toa(A, B, C) __IQNtoa(A, B, C, 17); -#define _IQ16toa(A, B, C) __IQNtoa(A, B, C, 16); -#define _IQ15toa(A, B, C) __IQNtoa(A, B, C, 15); -#define _IQ14toa(A, B, C) __IQNtoa(A, B, C, 14); -#define _IQ13toa(A, B, C) __IQNtoa(A, B, C, 13); -#define _IQ12toa(A, B, C) __IQNtoa(A, B, C, 12); -#define _IQ11toa(A, B, C) __IQNtoa(A, B, C, 11); -#define _IQ10toa(A, B, C) __IQNtoa(A, B, C, 10); -#define _IQ9toa(A, B, C) __IQNtoa(A, B, C, 9); -#define _IQ8toa(A, B, C) __IQNtoa(A, B, C, 8); -#define _IQ7toa(A, B, C) __IQNtoa(A, B, C, 7); -#define _IQ6toa(A, B, C) __IQNtoa(A, B, C, 6); -#define _IQ5toa(A, B, C) __IQNtoa(A, B, C, 5); -#define _IQ4toa(A, B, C) __IQNtoa(A, B, C, 4); -#define _IQ3toa(A, B, C) __IQNtoa(A, B, C, 3); -#define _IQ2toa(A, B, C) __IQNtoa(A, B, C, 2); -#define _IQ1toa(A, B, C) __IQNtoa(A, B, C, 1); - - -#if GLOBAL_Q == 30 -#define _IQtoa(A, B, C) __IQNtoa(A, B, C, 30) -#endif -#if GLOBAL_Q == 29 -#define _IQtoa(A, B, C) __IQNtoa(A, B, C, 29) -#endif -#if GLOBAL_Q == 28 -#define _IQtoa(A, B, C) __IQNtoa(A, B, C, 28) -#endif -#if GLOBAL_Q == 27 -#define _IQtoa(A, B, C) __IQNtoa(A, B, C, 27) -#endif -#if GLOBAL_Q == 26 -#define _IQtoa(A, B, C) __IQNtoa(A, B, C, 26) -#endif -#if GLOBAL_Q == 25 -#define _IQtoa(A, B, C) __IQNtoa(A, B, C, 25) -#endif -#if GLOBAL_Q == 24 -#define _IQtoa(A, B, C) __IQNtoa(A, B, C, 24) -#endif -#if GLOBAL_Q == 23 -#define _IQtoa(A, B, C) __IQNtoa(A, B, C, 23) -#endif -#if GLOBAL_Q == 22 -#define _IQtoa(A, B, C) __IQNtoa(A, B, C, 22) -#endif -#if GLOBAL_Q == 21 -#define _IQtoa(A, B, C) __IQNtoa(A, B, C, 21) -#endif -#if GLOBAL_Q == 20 -#define _IQtoa(A, B, C) __IQNtoa(A, B, C, 20) -#endif -#if GLOBAL_Q == 19 -#define _IQtoa(A, B, C) __IQNtoa(A, B, C, 19) -#endif -#if GLOBAL_Q == 18 -#define _IQtoa(A, B, C) __IQNtoa(A, B, C, 18) -#endif -#if GLOBAL_Q == 17 -#define _IQtoa(A, B, C) __IQNtoa(A, B, C, 17) -#endif -#if GLOBAL_Q == 16 -#define _IQtoa(A, B, C) __IQNtoa(A, B, C, 16) -#endif -#if GLOBAL_Q == 15 -#define _IQtoa(A, B, C) __IQNtoa(A, B, C, 15) -#endif -#if GLOBAL_Q == 14 -#define _IQtoa(A, B, C) __IQNtoa(A, B, C, 14) -#endif -#if GLOBAL_Q == 13 -#define _IQtoa(A, B, C) __IQNtoa(A, B, C, 13) -#endif -#if GLOBAL_Q == 12 -#define _IQtoa(A, B, C) __IQNtoa(A, B, C, 12) -#endif -#if GLOBAL_Q == 11 -#define _IQtoa(A, B, C) __IQNtoa(A, B, C, 11) -#endif -#if GLOBAL_Q == 10 -#define _IQtoa(A, B, C) __IQNtoa(A, B, C, 10) -#endif -#if GLOBAL_Q == 9 -#define _IQtoa(A, B, C) __IQNtoa(A, B, C, 9) -#endif -#if GLOBAL_Q == 8 -#define _IQtoa(A, B, C) __IQNtoa(A, B, C, 8) -#endif -#if GLOBAL_Q == 7 -#define _IQtoa(A, B, C) __IQNtoa(A, B, C, 7) -#endif -#if GLOBAL_Q == 6 -#define _IQtoa(A, B, C) __IQNtoa(A, B, C, 6) -#endif -#if GLOBAL_Q == 5 -#define _IQtoa(A, B, C) __IQNtoa(A, B, C, 5) -#endif -#if GLOBAL_Q == 4 -#define _IQtoa(A, B, C) __IQNtoa(A, B, C, 4) -#endif -#if GLOBAL_Q == 3 -#define _IQtoa(A, B, C) __IQNtoa(A, B, C, 3) -#endif -#if GLOBAL_Q == 2 -#define _IQtoa(A, B, C) __IQNtoa(A, B, C, 2) -#endif -#if GLOBAL_Q == 1 -#define _IQtoa(A, B, C) __IQNtoa(A, B, C, 1) -#endif -//--------------------------------------------------------------------------- -#define _IQabs(A) labs(A) -#define _IQ30abs(A) labs(A) -#define _IQ29abs(A) labs(A) -#define _IQ28abs(A) labs(A) -#define _IQ27abs(A) labs(A) -#define _IQ26abs(A) labs(A) -#define _IQ25abs(A) labs(A) -#define _IQ24abs(A) labs(A) -#define _IQ23abs(A) labs(A) -#define _IQ22abs(A) labs(A) -#define _IQ21abs(A) labs(A) -#define _IQ20abs(A) labs(A) -#define _IQ19abs(A) labs(A) -#define _IQ18abs(A) labs(A) -#define _IQ17abs(A) labs(A) -#define _IQ16abs(A) labs(A) -#define _IQ15abs(A) labs(A) -#define _IQ14abs(A) labs(A) -#define _IQ13abs(A) labs(A) -#define _IQ12abs(A) labs(A) -#define _IQ11abs(A) labs(A) -#define _IQ10abs(A) labs(A) -#define _IQ9abs(A) labs(A) -#define _IQ8abs(A) labs(A) -#define _IQ7abs(A) labs(A) -#define _IQ6abs(A) labs(A) -#define _IQ5abs(A) labs(A) -#define _IQ4abs(A) labs(A) -#define _IQ3abs(A) labs(A) -#define _IQ2abs(A) labs(A) -#define _IQ1abs(A) labs(A) -//########################################################################### -#else // MATH_TYPE == FLOAT_MATH -//########################################################################### -// If FLOAT_MATH is used, the IQmath library function are replaced by -// equivalent floating point operations: -//=========================================================================== -typedef float _iq; -typedef float _iq30; -typedef float _iq29; -typedef float _iq28; -typedef float _iq27; -typedef float _iq26; -typedef float _iq25; -typedef float _iq24; -typedef float _iq23; -typedef float _iq22; -typedef float _iq21; -typedef float _iq20; -typedef float _iq19; -typedef float _iq18; -typedef float _iq17; -typedef float _iq16; -typedef float _iq15; -typedef float _iq14; -typedef float _iq13; -typedef float _iq12; -typedef float _iq11; -typedef float _iq10; -typedef float _iq9; -typedef float _iq8; -typedef float _iq7; -typedef float _iq6; -typedef float _iq5; -typedef float _iq4; -typedef float _iq3; -typedef float _iq2; -typedef float _iq1; -//--------------------------------------------------------------------------- -#define _IQ(A) (A) -#define _IQ30(A) (A) -#define _IQ29(A) (A) -#define _IQ28(A) (A) -#define _IQ27(A) (A) -#define _IQ26(A) (A) -#define _IQ25(A) (A) -#define _IQ24(A) (A) -#define _IQ23(A) (A) -#define _IQ22(A) (A) -#define _IQ21(A) (A) -#define _IQ20(A) (A) -#define _IQ19(A) (A) -#define _IQ18(A) (A) -#define _IQ17(A) (A) -#define _IQ16(A) (A) -#define _IQ15(A) (A) -#define _IQ14(A) (A) -#define _IQ13(A) (A) -#define _IQ12(A) (A) -#define _IQ10(A) (A) -#define _IQ9(A) (A) -#define _IQ8(A) (A) -#define _IQ7(A) (A) -#define _IQ6(A) (A) -#define _IQ5(A) (A) -#define _IQ4(A) (A) -#define _IQ3(A) (A) -#define _IQ2(A) (A) -#define _IQ1(A) (A) -//--------------------------------------------------------------------------- -#define _IQtoF(A) (A) -#define _IQ30toF(A) (A) -#define _IQ29toF(A) (A) -#define _IQ28toF(A) (A) -#define _IQ27toF(A) (A) -#define _IQ26toF(A) (A) -#define _IQ25toF(A) (A) -#define _IQ24toF(A) (A) -#define _IQ23toF(A) (A) -#define _IQ22toF(A) (A) -#define _IQ21toF(A) (A) -#define _IQ20toF(A) (A) -#define _IQ19toF(A) (A) -#define _IQ18toF(A) (A) -#define _IQ17toF(A) (A) -#define _IQ16toF(A) (A) -#define _IQ15toF(A) (A) -#define _IQ14toF(A) (A) -#define _IQ13toF(A) (A) -#define _IQ12toF(A) (A) -#define _IQ11toF(A) (A) -#define _IQ10toF(A) (A) -#define _IQ9toF(A) (A) -#define _IQ8toF(A) (A) -#define _IQ7toF(A) (A) -#define _IQ6toF(A) (A) -#define _IQ5toF(A) (A) -#define _IQ4toF(A) (A) -#define _IQ3toF(A) (A) -#define _IQ2toF(A) (A) -#define _IQ1toF(A) (A) -//--------------------------------------------------------------------------- -extern float _satf(float A, float Pos, float Neg); -#define _IQsat(A, Pos, Neg) _satf(A, Pos, Neg) -//--------------------------------------------------------------------------- -#define _IQtoIQ30(A) (A) -#define _IQtoIQ29(A) (A) -#define _IQtoIQ28(A) (A) -#define _IQtoIQ27(A) (A) -#define _IQtoIQ26(A) (A) -#define _IQtoIQ25(A) (A) -#define _IQtoIQ24(A) (A) -#define _IQtoIQ23(A) (A) -#define _IQtoIQ22(A) (A) -#define _IQtoIQ21(A) (A) -#define _IQtoIQ20(A) (A) -#define _IQtoIQ19(A) (A) -#define _IQtoIQ18(A) (A) -#define _IQtoIQ17(A) (A) -#define _IQtoIQ16(A) (A) -#define _IQtoIQ15(A) (A) -#define _IQtoIQ14(A) (A) -#define _IQtoIQ13(A) (A) -#define _IQtoIQ12(A) (A) -#define _IQtoIQ11(A) (A) -#define _IQtoIQ10(A) (A) -#define _IQtoIQ9(A) (A) -#define _IQtoIQ8(A) (A) -#define _IQtoIQ7(A) (A) -#define _IQtoIQ6(A) (A) -#define _IQtoIQ5(A) (A) -#define _IQtoIQ4(A) (A) -#define _IQtoIQ3(A) (A) -#define _IQtoIQ2(A) (A) -#define _IQtoIQ1(A) (A) -//--------------------------------------------------------------------------- -#define _IQ30toIQ(A) (A) -#define _IQ29toIQ(A) (A) -#define _IQ28toIQ(A) (A) -#define _IQ27toIQ(A) (A) -#define _IQ26toIQ(A) (A) -#define _IQ25toIQ(A) (A) -#define _IQ24toIQ(A) (A) -#define _IQ23toIQ(A) (A) -#define _IQ22toIQ(A) (A) -#define _IQ21toIQ(A) (A) -#define _IQ20toIQ(A) (A) -#define _IQ19toIQ(A) (A) -#define _IQ18toIQ(A) (A) -#define _IQ17toIQ(A) (A) -#define _IQ16toIQ(A) (A) -#define _IQ15toIQ(A) (A) -#define _IQ14toIQ(A) (A) -#define _IQ13toIQ(A) (A) -#define _IQ12toIQ(A) (A) -#define _IQ11toIQ(A) (A) -#define _IQ10toIQ(A) (A) -#define _IQ9toIQ(A) (A) -#define _IQ8toIQ(A) (A) -#define _IQ7toIQ(A) (A) -#define _IQ6toIQ(A) (A) -#define _IQ5toIQ(A) (A) -#define _IQ4toIQ(A) (A) -#define _IQ3toIQ(A) (A) -#define _IQ2toIQ(A) (A) -#define _IQ1toIQ(A) (A) -//--------------------------------------------------------------------------- -#define _IQtoQ15(A) (short) ((long)((A) * 32768.0L)) -#define _IQtoQ14(A) (short) ((long)((A) * 16384.0L)) -#define _IQtoQ13(A) (short) ((long)((A) * 8192.0L)) -#define _IQtoQ12(A) (short) ((long)((A) * 4096.0L)) -#define _IQtoQ11(A) (short) ((long)((A) * 2048.0L)) -#define _IQtoQ10(A) (short) ((long)((A) * 1024.0L)) -#define _IQtoQ9(A) (short) ((long)((A) * 512.0L)) -#define _IQtoQ8(A) (short) ((long)((A) * 256.0L)) -#define _IQtoQ7(A) (short) ((long)((A) * 128.0L)) -#define _IQtoQ6(A) (short) ((long)((A) * 64.0L)) -#define _IQtoQ5(A) (short) ((long)((A) * 32.0L)) -#define _IQtoQ4(A) (short) ((long)((A) * 16.0L)) -#define _IQtoQ3(A) (short) ((long)((A) * 8.0L)) -#define _IQtoQ2(A) (short) ((long)((A) * 4.0L)) -#define _IQtoQ1(A) (short) ((long)((A) * 2.0L)) - -//--------------------------------------------------------------------------- -#define _Q15toIQ(A) (((float) (A)) * 0.000030518) -#define _Q14toIQ(A) (((float) (A)) * 0.000061035) -#define _Q13toIQ(A) (((float) (A)) * 0.000122070) -#define _Q12toIQ(A) (((float) (A)) * 0.000244141) -#define _Q11toIQ(A) (((float) (A)) * 0.000488281) -#define _Q10toIQ(A) (((float) (A)) * 0.000976563) -#define _Q9toIQ(A) (((float) (A)) * 0.001953125) -#define _Q8toIQ(A) (((float) (A)) * 0.003906250) -#define _Q7toIQ(A) (((float) (A)) * 0.007812500) -#define _Q6toIQ(A) (((float) (A)) * 0.015625000) -#define _Q5toIQ(A) (((float) (A)) * 0.031250000) -#define _Q4toIQ(A) (((float) (A)) * 0.062500000) -#define _Q3toIQ(A) (((float) (A)) * 0.125000000) -#define _Q2toIQ(A) (((float) (A)) * 0.250000000) -#define _Q1toIQ(A) (((float) (A)) * 0.500000000) -//--------------------------------------------------------------------------- -#define _IQmpy(A,B) ((A) * (B)) -#define _IQ30mpy(A,B) ((A) * (B)) -#define _IQ29mpy(A,B) ((A) * (B)) -#define _IQ28mpy(A,B) ((A) * (B)) -#define _IQ27mpy(A,B) ((A) * (B)) -#define _IQ26mpy(A,B) ((A) * (B)) -#define _IQ25mpy(A,B) ((A) * (B)) -#define _IQ24mpy(A,B) ((A) * (B)) -#define _IQ23mpy(A,B) ((A) * (B)) -#define _IQ22mpy(A,B) ((A) * (B)) -#define _IQ21mpy(A,B) ((A) * (B)) -#define _IQ20mpy(A,B) ((A) * (B)) -#define _IQ19mpy(A,B) ((A) * (B)) -#define _IQ18mpy(A,B) ((A) * (B)) -#define _IQ17mpy(A,B) ((A) * (B)) -#define _IQ16mpy(A,B) ((A) * (B)) -#define _IQ15mpy(A,B) ((A) * (B)) -#define _IQ14mpy(A,B) ((A) * (B)) -#define _IQ13mpy(A,B) ((A) * (B)) -#define _IQ12mpy(A,B) ((A) * (B)) -#define _IQ11mpy(A,B) ((A) * (B)) -#define _IQ10mpy(A,B) ((A) * (B)) -#define _IQ9mpy(A,B) ((A) * (B)) -#define _IQ8mpy(A,B) ((A) * (B)) -#define _IQ7mpy(A,B) ((A) * (B)) -#define _IQ6mpy(A,B) ((A) * (B)) -#define _IQ5mpy(A,B) ((A) * (B)) -#define _IQ4mpy(A,B) ((A) * (B)) -#define _IQ3mpy(A,B) ((A) * (B)) -#define _IQ2mpy(A,B) ((A) * (B)) -#define _IQ1mpy(A,B) ((A) * (B)) -//--------------------------------------------------------------------------- -#define _IQrmpy(A,B) ((A) * (B)) -#define _IQ30rmpy(A,B) ((A) * (B)) -#define _IQ29rmpy(A,B) ((A) * (B)) -#define _IQ28rmpy(A,B) ((A) * (B)) -#define _IQ27rmpy(A,B) ((A) * (B)) -#define _IQ26rmpy(A,B) ((A) * (B)) -#define _IQ25rmpy(A,B) ((A) * (B)) -#define _IQ24rmpy(A,B) ((A) * (B)) -#define _IQ23rmpy(A,B) ((A) * (B)) -#define _IQ22rmpy(A,B) ((A) * (B)) -#define _IQ21rmpy(A,B) ((A) * (B)) -#define _IQ20rmpy(A,B) ((A) * (B)) -#define _IQ19rmpy(A,B) ((A) * (B)) -#define _IQ18rmpy(A,B) ((A) * (B)) -#define _IQ17rmpy(A,B) ((A) * (B)) -#define _IQ16rmpy(A,B) ((A) * (B)) -#define _IQ15rmpy(A,B) ((A) * (B)) -#define _IQ14rmpy(A,B) ((A) * (B)) -#define _IQ13rmpy(A,B) ((A) * (B)) -#define _IQ12rmpy(A,B) ((A) * (B)) -#define _IQ11rmpy(A,B) ((A) * (B)) -#define _IQ10rmpy(A,B) ((A) * (B)) -#define _IQ9rmpy(A,B) ((A) * (B)) -#define _IQ8rmpy(A,B) ((A) * (B)) -#define _IQ7rmpy(A,B) ((A) * (B)) -#define _IQ6rmpy(A,B) ((A) * (B)) -#define _IQ5rmpy(A,B) ((A) * (B)) -#define _IQ4rmpy(A,B) ((A) * (B)) -#define _IQ3rmpy(A,B) ((A) * (B)) -#define _IQ2rmpy(A,B) ((A) * (B)) -#define _IQ1rmpy(A,B) ((A) * (B)) -//--------------------------------------------------------------------------- -#define _IQrsmpy(A,B) ((A) * (B)) -#define _IQ30rsmpy(A,B) ((A) * (B)) -#define _IQ29rsmpy(A,B) ((A) * (B)) -#define _IQ28rsmpy(A,B) ((A) * (B)) -#define _IQ27rsmpy(A,B) ((A) * (B)) -#define _IQ26rsmpy(A,B) ((A) * (B)) -#define _IQ25rsmpy(A,B) ((A) * (B)) -#define _IQ24rsmpy(A,B) ((A) * (B)) -#define _IQ23rsmpy(A,B) ((A) * (B)) -#define _IQ22rsmpy(A,B) ((A) * (B)) -#define _IQ21rsmpy(A,B) ((A) * (B)) -#define _IQ20rsmpy(A,B) ((A) * (B)) -#define _IQ19rsmpy(A,B) ((A) * (B)) -#define _IQ18rsmpy(A,B) ((A) * (B)) -#define _IQ17rsmpy(A,B) ((A) * (B)) -#define _IQ16rsmpy(A,B) ((A) * (B)) -#define _IQ15rsmpy(A,B) ((A) * (B)) -#define _IQ14rsmpy(A,B) ((A) * (B)) -#define _IQ13rsmpy(A,B) ((A) * (B)) -#define _IQ12rsmpy(A,B) ((A) * (B)) -#define _IQ11rsmpy(A,B) ((A) * (B)) -#define _IQ10rsmpy(A,B) ((A) * (B)) -#define _IQ9rsmpy(A,B) ((A) * (B)) -#define _IQ8rsmpy(A,B) ((A) * (B)) -#define _IQ7rsmpy(A,B) ((A) * (B)) -#define _IQ6rsmpy(A,B) ((A) * (B)) -#define _IQ5rsmpy(A,B) ((A) * (B)) -#define _IQ4rsmpy(A,B) ((A) * (B)) -#define _IQ3rsmpy(A,B) ((A) * (B)) -#define _IQ2rsmpy(A,B) ((A) * (B)) -#define _IQ1rsmpy(A,B) ((A) * (B)) -//--------------------------------------------------------------------------- -#define _IQdiv(A,B) ((A) / (B)) -#define _IQ30div(A,B) ((A) / (B)) -#define _IQ29div(A,B) ((A) / (B)) -#define _IQ28div(A,B) ((A) / (B)) -#define _IQ27div(A,B) ((A) / (B)) -#define _IQ26div(A,B) ((A) / (B)) -#define _IQ25div(A,B) ((A) / (B)) -#define _IQ24div(A,B) ((A) / (B)) -#define _IQ23div(A,B) ((A) / (B)) -#define _IQ22div(A,B) ((A) / (B)) -#define _IQ21div(A,B) ((A) / (B)) -#define _IQ20div(A,B) ((A) / (B)) -#define _IQ19div(A,B) ((A) / (B)) -#define _IQ18div(A,B) ((A) / (B)) -#define _IQ17div(A,B) ((A) / (B)) -#define _IQ16div(A,B) ((A) / (B)) -#define _IQ15div(A,B) ((A) / (B)) -#define _IQ14div(A,B) ((A) / (B)) -#define _IQ13div(A,B) ((A) / (B)) -#define _IQ12div(A,B) ((A) / (B)) -#define _IQ11div(A,B) ((A) / (B)) -#define _IQ10div(A,B) ((A) / (B)) -#define _IQ9div(A,B) ((A) / (B)) -#define _IQ8div(A,B) ((A) / (B)) -#define _IQ7div(A,B) ((A) / (B)) -#define _IQ6div(A,B) ((A) / (B)) -#define _IQ5div(A,B) ((A) / (B)) -#define _IQ4div(A,B) ((A) / (B)) -#define _IQ3div(A,B) ((A) / (B)) -#define _IQ2div(A,B) ((A) / (B)) -#define _IQ1div(A,B) ((A) / (B)) -//--------------------------------------------------------------------------- -#define _IQsin(A) sin(A) -#define _IQ30sin(A) sin(A) -#define _IQ29sin(A) sin(A) -#define _IQ28sin(A) sin(A) -#define _IQ27sin(A) sin(A) -#define _IQ26sin(A) sin(A) -#define _IQ25sin(A) sin(A) -#define _IQ24sin(A) sin(A) -#define _IQ23sin(A) sin(A) -#define _IQ22sin(A) sin(A) -#define _IQ21sin(A) sin(A) -#define _IQ20sin(A) sin(A) -#define _IQ19sin(A) sin(A) -#define _IQ18sin(A) sin(A) -#define _IQ17sin(A) sin(A) -#define _IQ16sin(A) sin(A) -#define _IQ15sin(A) sin(A) -#define _IQ14sin(A) sin(A) -#define _IQ13sin(A) sin(A) -#define _IQ12sin(A) sin(A) -#define _IQ11sin(A) sin(A) -#define _IQ10sin(A) sin(A) -#define _IQ9sin(A) sin(A) -#define _IQ8sin(A) sin(A) -#define _IQ7sin(A) sin(A) -#define _IQ6sin(A) sin(A) -#define _IQ5sin(A) sin(A) -#define _IQ4sin(A) sin(A) -#define _IQ3sin(A) sin(A) -#define _IQ2sin(A) sin(A) -#define _IQ1sin(A) sin(A) -//--------------------------------------------------------------------------- -#define _IQsinPU(A) sin((A)*6.283185307) -#define _IQ30sinPU(A) sin((A)*6.283185307) -#define _IQ29sinPU(A) sin((A)*6.283185307) -#define _IQ28sinPU(A) sin((A)*6.283185307) -#define _IQ27sinPU(A) sin((A)*6.283185307) -#define _IQ26sinPU(A) sin((A)*6.283185307) -#define _IQ25sinPU(A) sin((A)*6.283185307) -#define _IQ24sinPU(A) sin((A)*6.283185307) -#define _IQ23sinPU(A) sin((A)*6.283185307) -#define _IQ22sinPU(A) sin((A)*6.283185307) -#define _IQ21sinPU(A) sin((A)*6.283185307) -#define _IQ20sinPU(A) sin((A)*6.283185307) -#define _IQ19sinPU(A) sin((A)*6.283185307) -#define _IQ18sinPU(A) sin((A)*6.283185307) -#define _IQ17sinPU(A) sin((A)*6.283185307) -#define _IQ16sinPU(A) sin((A)*6.283185307) -#define _IQ15sinPU(A) sin((A)*6.283185307) -#define _IQ14sinPU(A) sin((A)*6.283185307) -#define _IQ13sinPU(A) sin((A)*6.283185307) -#define _IQ12sinPU(A) sin((A)*6.283185307) -#define _IQ11sinPU(A) sin((A)*6.283185307) -#define _IQ10sinPU(A) sin((A)*6.283185307) -#define _IQ9sinPU(A) sin((A)*6.283185307) -#define _IQ8sinPU(A) sin((A)*6.283185307) -#define _IQ7sinPU(A) sin((A)*6.283185307) -#define _IQ6sinPU(A) sin((A)*6.283185307) -#define _IQ5sinPU(A) sin((A)*6.283185307) -#define _IQ4sinPU(A) sin((A)*6.283185307) -#define _IQ3sinPU(A) sin((A)*6.283185307) -#define _IQ2sinPU(A) sin((A)*6.283185307) -#define _IQ1sinPU(A) sin((A)*6.283185307) -//--------------------------------------------------------------------------- -#define _IQasin(A) asin(A) -#define _IQ29asin(A) asin(A) -#define _IQ28asin(A) asin(A) -#define _IQ27asin(A) asin(A) -#define _IQ26asin(A) asin(A) -#define _IQ25asin(A) asin(A) -#define _IQ24asin(A) asin(A) -#define _IQ23asin(A) asin(A) -#define _IQ22asin(A) asin(A) -#define _IQ21asin(A) asin(A) -#define _IQ20asin(A) asin(A) -#define _IQ19asin(A) asin(A) -#define _IQ18asin(A) asin(A) -#define _IQ17asin(A) asin(A) -#define _IQ16asin(A) asin(A) -#define _IQ15asin(A) asin(A) -#define _IQ14asin(A) asin(A) -#define _IQ13asin(A) asin(A) -#define _IQ12asin(A) asin(A) -#define _IQ11asin(A) asin(A) -#define _IQ10asin(A) asin(A) -#define _IQ9asin(A) asin(A) -#define _IQ8asin(A) asin(A) -#define _IQ7asin(A) asin(A) -#define _IQ6asin(A) asin(A) -#define _IQ5asin(A) asin(A) -#define _IQ4asin(A) asin(A) -#define _IQ3asin(A) asin(A) -#define _IQ2asin(A) asin(A) -#define _IQ1asin(A) asin(A) -//--------------------------------------------------------------------------- -#define _IQcos(A) cos(A) -#define _IQ30cos(A) cos(A) -#define _IQ29cos(A) cos(A) -#define _IQ28cos(A) cos(A) -#define _IQ27cos(A) cos(A) -#define _IQ26cos(A) cos(A) -#define _IQ25cos(A) cos(A) -#define _IQ24cos(A) cos(A) -#define _IQ23cos(A) cos(A) -#define _IQ22cos(A) cos(A) -#define _IQ21cos(A) cos(A) -#define _IQ20cos(A) cos(A) -#define _IQ19cos(A) cos(A) -#define _IQ18cos(A) cos(A) -#define _IQ17cos(A) cos(A) -#define _IQ16cos(A) cos(A) -#define _IQ15cos(A) cos(A) -#define _IQ14cos(A) cos(A) -#define _IQ13cos(A) cos(A) -#define _IQ12cos(A) cos(A) -#define _IQ11cos(A) cos(A) -#define _IQ10cos(A) cos(A) -#define _IQ9cos(A) cos(A) -#define _IQ8cos(A) cos(A) -#define _IQ7cos(A) cos(A) -#define _IQ6cos(A) cos(A) -#define _IQ5cos(A) cos(A) -#define _IQ4cos(A) cos(A) -#define _IQ3cos(A) cos(A) -#define _IQ2cos(A) cos(A) -#define _IQ1cos(A) cos(A) -//--------------------------------------------------------------------------- -#define _IQcosPU(A) cos((A)*6.283185307) -#define _IQ30cosPU(A) cos((A)*6.283185307) -#define _IQ29cosPU(A) cos((A)*6.283185307) -#define _IQ28cosPU(A) cos((A)*6.283185307) -#define _IQ27cosPU(A) cos((A)*6.283185307) -#define _IQ26cosPU(A) cos((A)*6.283185307) -#define _IQ25cosPU(A) cos((A)*6.283185307) -#define _IQ24cosPU(A) cos((A)*6.283185307) -#define _IQ23cosPU(A) cos((A)*6.283185307) -#define _IQ22cosPU(A) cos((A)*6.283185307) -#define _IQ21cosPU(A) cos((A)*6.283185307) -#define _IQ20cosPU(A) cos((A)*6.283185307) -#define _IQ19cosPU(A) cos((A)*6.283185307) -#define _IQ18cosPU(A) cos((A)*6.283185307) -#define _IQ17cosPU(A) cos((A)*6.283185307) -#define _IQ16cosPU(A) cos((A)*6.283185307) -#define _IQ15cosPU(A) cos((A)*6.283185307) -#define _IQ14cosPU(A) cos((A)*6.283185307) -#define _IQ13cosPU(A) cos((A)*6.283185307) -#define _IQ12cosPU(A) cos((A)*6.283185307) -#define _IQ11cosPU(A) cos((A)*6.283185307) -#define _IQ10cosPU(A) cos((A)*6.283185307) -#define _IQ9cosPU(A) cos((A)*6.283185307) -#define _IQ8cosPU(A) cos((A)*6.283185307) -#define _IQ7cosPU(A) cos((A)*6.283185307) -#define _IQ6cosPU(A) cos((A)*6.283185307) -#define _IQ5cosPU(A) cos((A)*6.283185307) -#define _IQ4cosPU(A) cos((A)*6.283185307) -#define _IQ3cosPU(A) cos((A)*6.283185307) -#define _IQ2cosPU(A) cos((A)*6.283185307) -#define _IQ1cosPU(A) cos((A)*6.283185307) -//--------------------------------------------------------------------------- -#define _IQacos(A) acos(A) -#define _IQ29acos(A) acos(A) -#define _IQ28acos(A) acos(A) -#define _IQ27acos(A) acos(A) -#define _IQ26acos(A) acos(A) -#define _IQ25acos(A) acos(A) -#define _IQ24acos(A) acos(A) -#define _IQ23acos(A) acos(A) -#define _IQ22acos(A) acos(A) -#define _IQ21acos(A) acos(A) -#define _IQ20acos(A) acos(A) -#define _IQ19acos(A) acos(A) -#define _IQ18acos(A) acos(A) -#define _IQ17acos(A) acos(A) -#define _IQ16acos(A) acos(A) -#define _IQ15acos(A) acos(A) -#define _IQ14acos(A) acos(A) -#define _IQ13acos(A) acos(A) -#define _IQ12acos(A) acos(A) -#define _IQ11acos(A) acos(A) -#define _IQ10acos(A) acos(A) -#define _IQ9acos(A) acos(A) -#define _IQ8acos(A) acos(A) -#define _IQ7acos(A) acos(A) -#define _IQ6acos(A) acos(A) -#define _IQ5acos(A) acos(A) -#define _IQ4acos(A) acos(A) -#define _IQ3acos(A) acos(A) -#define _IQ2acos(A) acos(A) -#define _IQ1acos(A) acos(A) -//--------------------------------------------------------------------------- -#define _IQatan(A) atan(A) -#define _IQ30atan(A) atan(A) -#define _IQ29atan(A) atan(A) -#define _IQ28atan(A) atan(A) -#define _IQ27atan(A) atan(A) -#define _IQ26atan(A) atan(A) -#define _IQ25atan(A) atan(A) -#define _IQ24atan(A) atan(A) -#define _IQ23atan(A) atan(A) -#define _IQ22atan(A) atan(A) -#define _IQ21atan(A) atan(A) -#define _IQ20atan(A) atan(A) -#define _IQ19atan(A) atan(A) -#define _IQ18atan(A) atan(A) -#define _IQ17atan(A) atan(A) -#define _IQ16atan(A) atan(A) -#define _IQ15atan(A) atan(A) -#define _IQ14atan(A) atan(A) -#define _IQ13atan(A) atan(A) -#define _IQ12atan(A) atan(A) -#define _IQ11atan(A) atan(A) -#define _IQ10atan(A) atan(A) -#define _IQ9atan(A) atan(A) -#define _IQ8atan(A) atan(A) -#define _IQ7atan(A) atan(A) -#define _IQ6atan(A) atan(A) -#define _IQ5atan(A) atan(A) -#define _IQ4atan(A) atan(A) -#define _IQ3atan(A) atan(A) -#define _IQ2atan(A) atan(A) -#define _IQ1atan(A) atan(A) -//--------------------------------------------------------------------------- -#define _IQatan2(A,B) atan2(A,B) -#define _IQ30atan2(A,B) atan2(A,B) -#define _IQ29atan2(A,B) atan2(A,B) -#define _IQ28atan2(A,B) atan2(A,B) -#define _IQ27atan2(A,B) atan2(A,B) -#define _IQ26atan2(A,B) atan2(A,B) -#define _IQ25atan2(A,B) atan2(A,B) -#define _IQ24atan2(A,B) atan2(A,B) -#define _IQ23atan2(A,B) atan2(A,B) -#define _IQ22atan2(A,B) atan2(A,B) -#define _IQ21atan2(A,B) atan2(A,B) -#define _IQ20atan2(A,B) atan2(A,B) -#define _IQ19atan2(A,B) atan2(A,B) -#define _IQ18atan2(A,B) atan2(A,B) -#define _IQ17atan2(A,B) atan2(A,B) -#define _IQ16atan2(A,B) atan2(A,B) -#define _IQ15atan2(A,B) atan2(A,B) -#define _IQ14atan2(A,B) atan2(A,B) -#define _IQ13atan2(A,B) atan2(A,B) -#define _IQ12atan2(A,B) atan2(A,B) -#define _IQ11atan2(A,B) atan2(A,B) -#define _IQ10atan2(A,B) atan2(A,B) -#define _IQ9atan2(A,B) atan2(A,B) -#define _IQ8atan2(A,B) atan2(A,B) -#define _IQ7atan2(A,B) atan2(A,B) -#define _IQ6atan2(A,B) atan2(A,B) -#define _IQ5atan2(A,B) atan2(A,B) -#define _IQ4atan2(A,B) atan2(A,B) -#define _IQ3atan2(A,B) atan2(A,B) -#define _IQ2atan2(A,B) atan2(A,B) -#define _IQ1atan2(A,B) atan2(A,B) -//--------------------------------------------------------------------------- -#define _IQatan2PU(A,B) ((atan2(A,B)*(1.0/6.283185307)) >= 0.0 ? (atan2(A,B)*(1.0/6.283185307)):1.0 + (atan2(A,B)*(1.0/6.283185307))) -#define _IQ30atan2PU(A,B) ((atan2(A,B)*(1.0/6.283185307)) >= 0.0 ? (atan2(A,B)*(1.0/6.283185307)):1.0 + (atan2(A,B)*(1.0/6.283185307))) -#define _IQ29atan2PU(A,B) ((atan2(A,B)*(1.0/6.283185307)) >= 0.0 ? (atan2(A,B)*(1.0/6.283185307)):1.0 + (atan2(A,B)*(1.0/6.283185307))) -#define _IQ28atan2PU(A,B) ((atan2(A,B)*(1.0/6.283185307)) >= 0.0 ? (atan2(A,B)*(1.0/6.283185307)):1.0 + (atan2(A,B)*(1.0/6.283185307))) -#define _IQ27atan2PU(A,B) ((atan2(A,B)*(1.0/6.283185307)) >= 0.0 ? (atan2(A,B)*(1.0/6.283185307)):1.0 + (atan2(A,B)*(1.0/6.283185307))) -#define _IQ26atan2PU(A,B) ((atan2(A,B)*(1.0/6.283185307)) >= 0.0 ? (atan2(A,B)*(1.0/6.283185307)):1.0 + (atan2(A,B)*(1.0/6.283185307))) -#define _IQ25atan2PU(A,B) ((atan2(A,B)*(1.0/6.283185307)) >= 0.0 ? (atan2(A,B)*(1.0/6.283185307)):1.0 + (atan2(A,B)*(1.0/6.283185307))) -#define _IQ24atan2PU(A,B) ((atan2(A,B)*(1.0/6.283185307)) >= 0.0 ? (atan2(A,B)*(1.0/6.283185307)):1.0 + (atan2(A,B)*(1.0/6.283185307))) -#define _IQ23atan2PU(A,B) ((atan2(A,B)*(1.0/6.283185307)) >= 0.0 ? (atan2(A,B)*(1.0/6.283185307)):1.0 + (atan2(A,B)*(1.0/6.283185307))) -#define _IQ22atan2PU(A,B) ((atan2(A,B)*(1.0/6.283185307)) >= 0.0 ? (atan2(A,B)*(1.0/6.283185307)):1.0 + (atan2(A,B)*(1.0/6.283185307))) -#define _IQ21atan2PU(A,B) ((atan2(A,B)*(1.0/6.283185307)) >= 0.0 ? (atan2(A,B)*(1.0/6.283185307)):1.0 + (atan2(A,B)*(1.0/6.283185307))) -#define _IQ20atan2PU(A,B) ((atan2(A,B)*(1.0/6.283185307)) >= 0.0 ? (atan2(A,B)*(1.0/6.283185307)):1.0 + (atan2(A,B)*(1.0/6.283185307))) -#define _IQ19atan2PU(A,B) ((atan2(A,B)*(1.0/6.283185307)) >= 0.0 ? (atan2(A,B)*(1.0/6.283185307)):1.0 + (atan2(A,B)*(1.0/6.283185307))) -#define _IQ18atan2PU(A,B) ((atan2(A,B)*(1.0/6.283185307)) >= 0.0 ? (atan2(A,B)*(1.0/6.283185307)):1.0 + (atan2(A,B)*(1.0/6.283185307))) -#define _IQ17atan2PU(A,B) ((atan2(A,B)*(1.0/6.283185307)) >= 0.0 ? (atan2(A,B)*(1.0/6.283185307)):1.0 + (atan2(A,B)*(1.0/6.283185307))) -#define _IQ16atan2PU(A,B) ((atan2(A,B)*(1.0/6.283185307)) >= 0.0 ? (atan2(A,B)*(1.0/6.283185307)):1.0 + (atan2(A,B)*(1.0/6.283185307))) -#define _IQ15atan2PU(A,B) ((atan2(A,B)*(1.0/6.283185307)) >= 0.0 ? (atan2(A,B)*(1.0/6.283185307)):1.0 + (atan2(A,B)*(1.0/6.283185307))) -#define _IQ14atan2PU(A,B) ((atan2(A,B)*(1.0/6.283185307)) >= 0.0 ? (atan2(A,B)*(1.0/6.283185307)):1.0 + (atan2(A,B)*(1.0/6.283185307))) -#define _IQ13atan2PU(A,B) ((atan2(A,B)*(1.0/6.283185307)) >= 0.0 ? (atan2(A,B)*(1.0/6.283185307)):1.0 + (atan2(A,B)*(1.0/6.283185307))) -#define _IQ12atan2PU(A,B) ((atan2(A,B)*(1.0/6.283185307)) >= 0.0 ? (atan2(A,B)*(1.0/6.283185307)):1.0 + (atan2(A,B)*(1.0/6.283185307))) -#define _IQ11atan2PU(A,B) ((atan2(A,B)*(1.0/6.283185307)) >= 0.0 ? (atan2(A,B)*(1.0/6.283185307)):1.0 + (atan2(A,B)*(1.0/6.283185307))) -#define _IQ10atan2PU(A,B) ((atan2(A,B)*(1.0/6.283185307)) >= 0.0 ? (atan2(A,B)*(1.0/6.283185307)):1.0 + (atan2(A,B)*(1.0/6.283185307))) -#define _IQ9atan2PU(A,B) ((atan2(A,B)*(1.0/6.283185307)) >= 0.0 ? (atan2(A,B)*(1.0/6.283185307)):1.0 + (atan2(A,B)*(1.0/6.283185307))) -#define _IQ8atan2PU(A,B) ((atan2(A,B)*(1.0/6.283185307)) >= 0.0 ? (atan2(A,B)*(1.0/6.283185307)):1.0 + (atan2(A,B)*(1.0/6.283185307))) -#define _IQ7atan2PU(A,B) ((atan2(A,B)*(1.0/6.283185307)) >= 0.0 ? (atan2(A,B)*(1.0/6.283185307)):1.0 + (atan2(A,B)*(1.0/6.283185307))) -#define _IQ6atan2PU(A,B) ((atan2(A,B)*(1.0/6.283185307)) >= 0.0 ? (atan2(A,B)*(1.0/6.283185307)):1.0 + (atan2(A,B)*(1.0/6.283185307))) -#define _IQ5atan2PU(A,B) ((atan2(A,B)*(1.0/6.283185307)) >= 0.0 ? (atan2(A,B)*(1.0/6.283185307)):1.0 + (atan2(A,B)*(1.0/6.283185307))) -#define _IQ4atan2PU(A,B) ((atan2(A,B)*(1.0/6.283185307)) >= 0.0 ? (atan2(A,B)*(1.0/6.283185307)):1.0 + (atan2(A,B)*(1.0/6.283185307))) -#define _IQ3atan2PU(A,B) ((atan2(A,B)*(1.0/6.283185307)) >= 0.0 ? (atan2(A,B)*(1.0/6.283185307)):1.0 + (atan2(A,B)*(1.0/6.283185307))) -#define _IQ2atan2PU(A,B) ((atan2(A,B)*(1.0/6.283185307)) >= 0.0 ? (atan2(A,B)*(1.0/6.283185307)):1.0 + (atan2(A,B)*(1.0/6.283185307))) -#define _IQ1atan2PU(A,B) ((atan2(A,B)*(1.0/6.283185307)) >= 0.0 ? (atan2(A,B)*(1.0/6.283185307)):1.0 + (atan2(A,B)*(1.0/6.283185307))) -//--------------------------------------------------------------------------- -#define _IQsqrt(A) sqrt(A) -#define _IQ30sqrt(A) sqrt(A) -#define _IQ29sqrt(A) sqrt(A) -#define _IQ28sqrt(A) sqrt(A) -#define _IQ27sqrt(A) sqrt(A) -#define _IQ26sqrt(A) sqrt(A) -#define _IQ25sqrt(A) sqrt(A) -#define _IQ24sqrt(A) sqrt(A) -#define _IQ23sqrt(A) sqrt(A) -#define _IQ22sqrt(A) sqrt(A) -#define _IQ21sqrt(A) sqrt(A) -#define _IQ20sqrt(A) sqrt(A) -#define _IQ19sqrt(A) sqrt(A) -#define _IQ18sqrt(A) sqrt(A) -#define _IQ17sqrt(A) sqrt(A) -#define _IQ16sqrt(A) sqrt(A) -#define _IQ15sqrt(A) sqrt(A) -#define _IQ14sqrt(A) sqrt(A) -#define _IQ13sqrt(A) sqrt(A) -#define _IQ12sqrt(A) sqrt(A) -#define _IQ11sqrt(A) sqrt(A) -#define _IQ10sqrt(A) sqrt(A) -#define _IQ9sqrt(A) sqrt(A) -#define _IQ8sqrt(A) sqrt(A) -#define _IQ7sqrt(A) sqrt(A) -#define _IQ6sqrt(A) sqrt(A) -#define _IQ5sqrt(A) sqrt(A) -#define _IQ4sqrt(A) sqrt(A) -#define _IQ3sqrt(A) sqrt(A) -#define _IQ2sqrt(A) sqrt(A) -#define _IQ1sqrt(A) sqrt(A) -//--------------------------------------------------------------------------- -#define _IQisqrt(A) (1.0/sqrt(A)) -#define _IQ30isqrt(A) (1.0/sqrt(A)) -#define _IQ29isqrt(A) (1.0/sqrt(A)) -#define _IQ28isqrt(A) (1.0/sqrt(A)) -#define _IQ27isqrt(A) (1.0/sqrt(A)) -#define _IQ26isqrt(A) (1.0/sqrt(A)) -#define _IQ25isqrt(A) (1.0/sqrt(A)) -#define _IQ24isqrt(A) (1.0/sqrt(A)) -#define _IQ23isqrt(A) (1.0/sqrt(A)) -#define _IQ22isqrt(A) (1.0/sqrt(A)) -#define _IQ21isqrt(A) (1.0/sqrt(A)) -#define _IQ20isqrt(A) (1.0/sqrt(A)) -#define _IQ19isqrt(A) (1.0/sqrt(A)) -#define _IQ18isqrt(A) (1.0/sqrt(A)) -#define _IQ17isqrt(A) (1.0/sqrt(A)) -#define _IQ16isqrt(A) (1.0/sqrt(A)) -#define _IQ15isqrt(A) (1.0/sqrt(A)) -#define _IQ14isqrt(A) (1.0/sqrt(A)) -#define _IQ13isqrt(A) (1.0/sqrt(A)) -#define _IQ12isqrt(A) (1.0/sqrt(A)) -#define _IQ11isqrt(A) (1.0/sqrt(A)) -#define _IQ10isqrt(A) (1.0/sqrt(A)) -#define _IQ9isqrt(A) (1.0/sqrt(A)) -#define _IQ8isqrt(A) (1.0/sqrt(A)) -#define _IQ7isqrt(A) (1.0/sqrt(A)) -#define _IQ6isqrt(A) (1.0/sqrt(A)) -#define _IQ5isqrt(A) (1.0/sqrt(A)) -#define _IQ4isqrt(A) (1.0/sqrt(A)) -#define _IQ3isqrt(A) (1.0/sqrt(A)) -#define _IQ2isqrt(A) (1.0/sqrt(A)) -#define _IQ1isqrt(A) (1.0/sqrt(A)) -//--------------------------------------------------------------------------- -#define _IQexp(A) exp(A) -#define _IQ30exp(A) exp(A) -#define _IQ29exp(A) exp(A) -#define _IQ28exp(A) exp(A) -#define _IQ27exp(A) exp(A) -#define _IQ26exp(A) exp(A) -#define _IQ25exp(A) exp(A) -#define _IQ24exp(A) exp(A) -#define _IQ23exp(A) exp(A) -#define _IQ22exp(A) exp(A) -#define _IQ21exp(A) exp(A) -#define _IQ20exp(A) exp(A) -#define _IQ19exp(A) exp(A) -#define _IQ18exp(A) exp(A) -#define _IQ17exp(A) exp(A) -#define _IQ16exp(A) exp(A) -#define _IQ15exp(A) exp(A) -#define _IQ14exp(A) exp(A) -#define _IQ13exp(A) exp(A) -#define _IQ12exp(A) exp(A) -#define _IQ11exp(A) exp(A) -#define _IQ10exp(A) exp(A) -#define _IQ9exp(A) exp(A) -#define _IQ8exp(A) exp(A) -#define _IQ7exp(A) exp(A) -#define _IQ6exp(A) exp(A) -#define _IQ5exp(A) exp(A) -#define _IQ4exp(A) exp(A) -#define _IQ3exp(A) exp(A) -#define _IQ2exp(A) exp(A) -#define _IQ1exp(A) exp(A) -//--------------------------------------------------------------------------- -#define _IQint(A) ((long) (A)) -#define _IQ30int(A) ((long) (A)) -#define _IQ29int(A) ((long) (A)) -#define _IQ28int(A) ((long) (A)) -#define _IQ27int(A) ((long) (A)) -#define _IQ26int(A) ((long) (A)) -#define _IQ25int(A) ((long) (A)) -#define _IQ24int(A) ((long) (A)) -#define _IQ23int(A) ((long) (A)) -#define _IQ22int(A) ((long) (A)) -#define _IQ21int(A) ((long) (A)) -#define _IQ20int(A) ((long) (A)) -#define _IQ19int(A) ((long) (A)) -#define _IQ18int(A) ((long) (A)) -#define _IQ17int(A) ((long) (A)) -#define _IQ16int(A) ((long) (A)) -#define _IQ15int(A) ((long) (A)) -#define _IQ14int(A) ((long) (A)) -#define _IQ13int(A) ((long) (A)) -#define _IQ12int(A) ((long) (A)) -#define _IQ11int(A) ((long) (A)) -#define _IQ10int(A) ((long) (A)) -#define _IQ9int(A) ((long) (A)) -#define _IQ8int(A) ((long) (A)) -#define _IQ7int(A) ((long) (A)) -#define _IQ6int(A) ((long) (A)) -#define _IQ5int(A) ((long) (A)) -#define _IQ4int(A) ((long) (A)) -#define _IQ3int(A) ((long) (A)) -#define _IQ2int(A) ((long) (A)) -#define _IQ1int(A) ((long) (A)) -//--------------------------------------------------------------------------- -#define _IQfrac(A) ((A) - (float)((long) (A))) -#define _IQ30frac(A) ((A) - (float)((long) (A))) -#define _IQ29frac(A) ((A) - (float)((long) (A))) -#define _IQ28frac(A) ((A) - (float)((long) (A))) -#define _IQ27frac(A) ((A) - (float)((long) (A))) -#define _IQ26frac(A) ((A) - (float)((long) (A))) -#define _IQ25frac(A) ((A) - (float)((long) (A))) -#define _IQ24frac(A) ((A) - (float)((long) (A))) -#define _IQ23frac(A) ((A) - (float)((long) (A))) -#define _IQ22frac(A) ((A) - (float)((long) (A))) -#define _IQ21frac(A) ((A) - (float)((long) (A))) -#define _IQ20frac(A) ((A) - (float)((long) (A))) -#define _IQ19frac(A) ((A) - (float)((long) (A))) -#define _IQ18frac(A) ((A) - (float)((long) (A))) -#define _IQ17frac(A) ((A) - (float)((long) (A))) -#define _IQ16frac(A) ((A) - (float)((long) (A))) -#define _IQ15frac(A) ((A) - (float)((long) (A))) -#define _IQ14frac(A) ((A) - (float)((long) (A))) -#define _IQ13frac(A) ((A) - (float)((long) (A))) -#define _IQ12frac(A) ((A) - (float)((long) (A))) -#define _IQ11frac(A) ((A) - (float)((long) (A))) -#define _IQ10frac(A) ((A) - (float)((long) (A))) -#define _IQ9frac(A) ((A) - (float)((long) (A))) -#define _IQ8frac(A) ((A) - (float)((long) (A))) -#define _IQ7frac(A) ((A) - (float)((long) (A))) -#define _IQ6frac(A) ((A) - (float)((long) (A))) -#define _IQ5frac(A) ((A) - (float)((long) (A))) -#define _IQ4frac(A) ((A) - (float)((long) (A))) -#define _IQ3frac(A) ((A) - (float)((long) (A))) -#define _IQ2frac(A) ((A) - (float)((long) (A))) -#define _IQ1frac(A) ((A) - (float)((long) (A))) -//--------------------------------------------------------------------------- -#define _IQmpyIQX(A, IQA, B, IQB) ((A)*(B)) -#define _IQ30mpyIQX(A, IQA, B, IQB) ((A)*(B)) -#define _IQ29mpyIQX(A, IQA, B, IQB) ((A)*(B)) -#define _IQ28mpyIQX(A, IQA, B, IQB) ((A)*(B)) -#define _IQ27mpyIQX(A, IQA, B, IQB) ((A)*(B)) -#define _IQ26mpyIQX(A, IQA, B, IQB) ((A)*(B)) -#define _IQ25mpyIQX(A, IQA, B, IQB) ((A)*(B)) -#define _IQ24mpyIQX(A, IQA, B, IQB) ((A)*(B)) -#define _IQ23mpyIQX(A, IQA, B, IQB) ((A)*(B)) -#define _IQ22mpyIQX(A, IQA, B, IQB) ((A)*(B)) -#define _IQ21mpyIQX(A, IQA, B, IQB) ((A)*(B)) -#define _IQ20mpyIQX(A, IQA, B, IQB) ((A)*(B)) -#define _IQ19mpyIQX(A, IQA, B, IQB) ((A)*(B)) -#define _IQ18mpyIQX(A, IQA, B, IQB) ((A)*(B)) -#define _IQ17mpyIQX(A, IQA, B, IQB) ((A)*(B)) -#define _IQ16mpyIQX(A, IQA, B, IQB) ((A)*(B)) -#define _IQ15mpyIQX(A, IQA, B, IQB) ((A)*(B)) -#define _IQ14mpyIQX(A, IQA, B, IQB) ((A)*(B)) -#define _IQ13mpyIQX(A, IQA, B, IQB) ((A)*(B)) -#define _IQ12mpyIQX(A, IQA, B, IQB) ((A)*(B)) -#define _IQ11mpyIQX(A, IQA, B, IQB) ((A)*(B)) -#define _IQ10mpyIQX(A, IQA, B, IQB) ((A)*(B)) -#define _IQ9mpyIQX(A, IQA, B, IQB) ((A)*(B)) -#define _IQ8mpyIQX(A, IQA, B, IQB) ((A)*(B)) -#define _IQ7mpyIQX(A, IQA, B, IQB) ((A)*(B)) -#define _IQ6mpyIQX(A, IQA, B, IQB) ((A)*(B)) -#define _IQ5mpyIQX(A, IQA, B, IQB) ((A)*(B)) -#define _IQ4mpyIQX(A, IQA, B, IQB) ((A)*(B)) -#define _IQ3mpyIQX(A, IQA, B, IQB) ((A)*(B)) -#define _IQ2mpyIQX(A, IQA, B, IQB) ((A)*(B)) -#define _IQ1mpyIQX(A, IQA, B, IQB) ((A)*(B)) -//--------------------------------------------------------------------------- -#define _IQmpyI32(A,B) ((A) * (float) (B)) -#define _IQ30mpyI32(A,B) ((A) * (float) (B)) -#define _IQ29mpyI32(A,B) ((A) * (float) (B)) -#define _IQ28mpyI32(A,B) ((A) * (float) (B)) -#define _IQ27mpyI32(A,B) ((A) * (float) (B)) -#define _IQ26mpyI32(A,B) ((A) * (float) (B)) -#define _IQ25mpyI32(A,B) ((A) * (float) (B)) -#define _IQ24mpyI32(A,B) ((A) * (float) (B)) -#define _IQ23mpyI32(A,B) ((A) * (float) (B)) -#define _IQ22mpyI32(A,B) ((A) * (float) (B)) -#define _IQ21mpyI32(A,B) ((A) * (float) (B)) -#define _IQ20mpyI32(A,B) ((A) * (float) (B)) -#define _IQ19mpyI32(A,B) ((A) * (float) (B)) -#define _IQ18mpyI32(A,B) ((A) * (float) (B)) -#define _IQ17mpyI32(A,B) ((A) * (float) (B)) -#define _IQ16mpyI32(A,B) ((A) * (float) (B)) -#define _IQ15mpyI32(A,B) ((A) * (float) (B)) -#define _IQ14mpyI32(A,B) ((A) * (float) (B)) -#define _IQ13mpyI32(A,B) ((A) * (float) (B)) -#define _IQ12mpyI32(A,B) ((A) * (float) (B)) -#define _IQ11mpyI32(A,B) ((A) * (float) (B)) -#define _IQ10mpyI32(A,B) ((A) * (float) (B)) -#define _IQ9mpyI32(A,B) ((A) * (float) (B)) -#define _IQ8mpyI32(A,B) ((A) * (float) (B)) -#define _IQ7mpyI32(A,B) ((A) * (float) (B)) -#define _IQ6mpyI32(A,B) ((A) * (float) (B)) -#define _IQ5mpyI32(A,B) ((A) * (float) (B)) -#define _IQ4mpyI32(A,B) ((A) * (float) (B)) -#define _IQ3mpyI32(A,B) ((A) * (float) (B)) -#define _IQ2mpyI32(A,B) ((A) * (float) (B)) -#define _IQ1mpyI32(A,B) ((A) * (float) (B)) -//--------------------------------------------------------------------------- -#define _IQmpyI32int(A,B) ((long) ((A) * (float) (B))) -#define _IQ30mpyI32int(A,B) ((long) ((A) * (float) (B))) -#define _IQ29mpyI32int(A,B) ((long) ((A) * (float) (B))) -#define _IQ28mpyI32int(A,B) ((long) ((A) * (float) (B))) -#define _IQ27mpyI32int(A,B) ((long) ((A) * (float) (B))) -#define _IQ26mpyI32int(A,B) ((long) ((A) * (float) (B))) -#define _IQ25mpyI32int(A,B) ((long) ((A) * (float) (B))) -#define _IQ24mpyI32int(A,B) ((long) ((A) * (float) (B))) -#define _IQ23mpyI32int(A,B) ((long) ((A) * (float) (B))) -#define _IQ22mpyI32int(A,B) ((long) ((A) * (float) (B))) -#define _IQ21mpyI32int(A,B) ((long) ((A) * (float) (B))) -#define _IQ20mpyI32int(A,B) ((long) ((A) * (float) (B))) -#define _IQ19mpyI32int(A,B) ((long) ((A) * (float) (B))) -#define _IQ18mpyI32int(A,B) ((long) ((A) * (float) (B))) -#define _IQ17mpyI32int(A,B) ((long) ((A) * (float) (B))) -#define _IQ16mpyI32int(A,B) ((long) ((A) * (float) (B))) -#define _IQ15mpyI32int(A,B) ((long) ((A) * (float) (B))) -#define _IQ14mpyI32int(A,B) ((long) ((A) * (float) (B))) -#define _IQ13mpyI32int(A,B) ((long) ((A) * (float) (B))) -#define _IQ12mpyI32int(A,B) ((long) ((A) * (float) (B))) -#define _IQ11mpyI32int(A,B) ((long) ((A) * (float) (B))) -#define _IQ10mpyI32int(A,B) ((long) ((A) * (float) (B))) -#define _IQ9mpyI32int(A,B) ((long) ((A) * (float) (B))) -#define _IQ8mpyI32int(A,B) ((long) ((A) * (float) (B))) -#define _IQ7mpyI32int(A,B) ((long) ((A) * (float) (B))) -#define _IQ6mpyI32int(A,B) ((long) ((A) * (float) (B))) -#define _IQ5mpyI32int(A,B) ((long) ((A) * (float) (B))) -#define _IQ4mpyI32int(A,B) ((long) ((A) * (float) (B))) -#define _IQ3mpyI32int(A,B) ((long) ((A) * (float) (B))) -#define _IQ2mpyI32int(A,B) ((long) ((A) * (float) (B))) -#define _IQ1mpyI32int(A,B) ((long) ((A) * (float) (B))) -//--------------------------------------------------------------------------- -#define _IQmpyI32frac(A,B) ((A) - (float)((long) ((A) * (float) (B)))) -#define _IQ30mpyI32frac(A,B) ((A) - (float)((long) ((A) * (float) (B)))) -#define _IQ29mpyI32frac(A,B) ((A) - (float)((long) ((A) * (float) (B)))) -#define _IQ28mpyI32frac(A,B) ((A) - (float)((long) ((A) * (float) (B)))) -#define _IQ27mpyI32frac(A,B) ((A) - (float)((long) ((A) * (float) (B)))) -#define _IQ26mpyI32frac(A,B) ((A) - (float)((long) ((A) * (float) (B)))) -#define _IQ25mpyI32frac(A,B) ((A) - (float)((long) ((A) * (float) (B)))) -#define _IQ24mpyI32frac(A,B) ((A) - (float)((long) ((A) * (float) (B)))) -#define _IQ23mpyI32frac(A,B) ((A) - (float)((long) ((A) * (float) (B)))) -#define _IQ22mpyI32frac(A,B) ((A) - (float)((long) ((A) * (float) (B)))) -#define _IQ21mpyI32frac(A,B) ((A) - (float)((long) ((A) * (float) (B)))) -#define _IQ20mpyI32frac(A,B) ((A) - (float)((long) ((A) * (float) (B)))) -#define _IQ19mpyI32frac(A,B) ((A) - (float)((long) ((A) * (float) (B)))) -#define _IQ18mpyI32frac(A,B) ((A) - (float)((long) ((A) * (float) (B)))) -#define _IQ17mpyI32frac(A,B) ((A) - (float)((long) ((A) * (float) (B)))) -#define _IQ16mpyI32frac(A,B) ((A) - (float)((long) ((A) * (float) (B)))) -#define _IQ15mpyI32frac(A,B) ((A) - (float)((long) ((A) * (float) (B)))) -#define _IQ14mpyI32frac(A,B) ((A) - (float)((long) ((A) * (float) (B)))) -#define _IQ13mpyI32frac(A,B) ((A) - (float)((long) ((A) * (float) (B)))) -#define _IQ12mpyI32frac(A,B) ((A) - (float)((long) ((A) * (float) (B)))) -#define _IQ11mpyI32frac(A,B) ((A) - (float)((long) ((A) * (float) (B)))) -#define _IQ10mpyI32frac(A,B) ((A) - (float)((long) ((A) * (float) (B)))) -#define _IQ9mpyI32frac(A,B) ((A) - (float)((long) ((A) * (float) (B)))) -#define _IQ8mpyI32frac(A,B) ((A) - (float)((long) ((A) * (float) (B)))) -#define _IQ7mpyI32frac(A,B) ((A) - (float)((long) ((A) * (float) (B)))) -#define _IQ6mpyI32frac(A,B) ((A) - (float)((long) ((A) * (float) (B)))) -#define _IQ5mpyI32frac(A,B) ((A) - (float)((long) ((A) * (float) (B)))) -#define _IQ4mpyI32frac(A,B) ((A) - (float)((long) ((A) * (float) (B)))) -#define _IQ3mpyI32frac(A,B) ((A) - (float)((long) ((A) * (float) (B)))) -#define _IQ2mpyI32frac(A,B) ((A) - (float)((long) ((A) * (float) (B)))) -#define _IQ1mpyI32frac(A,B) ((A) - (float)((long) ((A) * (float) (B)))) -//--------------------------------------------------------------------------- -#define _IQmag(A,B) sqrt((A)*(A) + (B)*(B)) -#define _IQ30mag(A,B) sqrt((A)*(A) + (B)*(B)) -#define _IQ29mag(A,B) sqrt((A)*(A) + (B)*(B)) -#define _IQ28mag(A,B) sqrt((A)*(A) + (B)*(B)) -#define _IQ27mag(A,B) sqrt((A)*(A) + (B)*(B)) -#define _IQ26mag(A,B) sqrt((A)*(A) + (B)*(B)) -#define _IQ25mag(A,B) sqrt((A)*(A) + (B)*(B)) -#define _IQ24mag(A,B) sqrt((A)*(A) + (B)*(B)) -#define _IQ23mag(A,B) sqrt((A)*(A) + (B)*(B)) -#define _IQ22mag(A,B) sqrt((A)*(A) + (B)*(B)) -#define _IQ21mag(A,B) sqrt((A)*(A) + (B)*(B)) -#define _IQ20mag(A,B) sqrt((A)*(A) + (B)*(B)) -#define _IQ19mag(A,B) sqrt((A)*(A) + (B)*(B)) -#define _IQ18mag(A,B) sqrt((A)*(A) + (B)*(B)) -#define _IQ17mag(A,B) sqrt((A)*(A) + (B)*(B)) -#define _IQ16mag(A,B) sqrt((A)*(A) + (B)*(B)) -#define _IQ15mag(A,B) sqrt((A)*(A) + (B)*(B)) -#define _IQ14mag(A,B) sqrt((A)*(A) + (B)*(B)) -#define _IQ13mag(A,B) sqrt((A)*(A) + (B)*(B)) -#define _IQ12mag(A,B) sqrt((A)*(A) + (B)*(B)) -#define _IQ11mag(A,B) sqrt((A)*(A) + (B)*(B)) -#define _IQ10mag(A,B) sqrt((A)*(A) + (B)*(B)) -#define _IQ9mag(A,B) sqrt((A)*(A) + (B)*(B)) -#define _IQ8mag(A,B) sqrt((A)*(A) + (B)*(B)) -#define _IQ7mag(A,B) sqrt((A)*(A) + (B)*(B)) -#define _IQ6mag(A,B) sqrt((A)*(A) + (B)*(B)) -#define _IQ5mag(A,B) sqrt((A)*(A) + (B)*(B)) -#define _IQ4mag(A,B) sqrt((A)*(A) + (B)*(B)) -#define _IQ3mag(A,B) sqrt((A)*(A) + (B)*(B)) -#define _IQ2mag(A,B) sqrt((A)*(A) + (B)*(B)) -#define _IQ1mag(A,B) sqrt((A)*(A) + (B)*(B)) -//--------------------------------------------------------------------------- -#define _atoIQ(A) atof(A) -#define _atoIQ30(A) atof(A) -#define _atoIQ29(A) atof(A) -#define _atoIQ28(A) atof(A) -#define _atoIQ27(A) atof(A) -#define _atoIQ26(A) atof(A) -#define _atoIQ25(A) atof(A) -#define _atoIQ24(A) atof(A) -#define _atoIQ23(A) atof(A) -#define _atoIQ22(A) atof(A) -#define _atoIQ21(A) atof(A) -#define _atoIQ20(A) atof(A) -#define _atoIQ19(A) atof(A) -#define _atoIQ18(A) atof(A) -#define _atoIQ17(A) atof(A) -#define _atoIQ16(A) atof(A) -#define _atoIQ15(A) atof(A) -#define _atoIQ14(A) atof(A) -#define _atoIQ13(A) atof(A) -#define _atoIQ12(A) atof(A) -#define _atoIQ11(A) atof(A) -#define _atoIQ10(A) atof(A) -#define _atoIQ9(A) atof(A) -#define _atoIQ8(A) atof(A) -#define _atoIQ7(A) atof(A) -#define _atoIQ6(A) atof(A) -#define _atoIQ5(A) atof(A) -#define _atoIQ4(A) atof(A) -#define _atoIQ3(A) atof(A) -#define _atoIQ2(A) atof(A) -#define _atoIQ1(A) atof(A) -//--------------------------------------------------------------------------- -#define _IQtoa(A, B, C) sprintf(A, B, C) -#define _IQ30toa(A, B, C) sprintf(A, B, C) -#define _IQ29toa(A, B, C) sprintf(A, B, C) -#define _IQ28toa(A, B, C) sprintf(A, B, C) -#define _IQ27toa(A, B, C) sprintf(A, B, C) -#define _IQ26toa(A, B, C) sprintf(A, B, C) -#define _IQ25toa(A, B, C) sprintf(A, B, C) -#define _IQ24toa(A, B, C) sprintf(A, B, C) -#define _IQ23toa(A, B, C) sprintf(A, B, C) -#define _IQ22toa(A, B, C) sprintf(A, B, C) -#define _IQ21toa(A, B, C) sprintf(A, B, C) -#define _IQ20toa(A, B, C) sprintf(A, B, C) -#define _IQ19toa(A, B, C) sprintf(A, B, C) -#define _IQ18toa(A, B, C) sprintf(A, B, C) -#define _IQ17toa(A, B, C) sprintf(A, B, C) -#define _IQ16toa(A, B, C) sprintf(A, B, C) -#define _IQ15toa(A, B, C) sprintf(A, B, C) -#define _IQ14toa(A, B, C) sprintf(A, B, C) -#define _IQ13toa(A, B, C) sprintf(A, B, C) -#define _IQ12toa(A, B, C) sprintf(A, B, C) -#define _IQ11toa(A, B, C) sprintf(A, B, C) -#define _IQ10toa(A, B, C) sprintf(A, B, C) -#define _IQ9toa(A, B, C) sprintf(A, B, C) -#define _IQ8toa(A, B, C) sprintf(A, B, C) -#define _IQ7toa(A, B, C) sprintf(A, B, C) -#define _IQ6toa(A, B, C) sprintf(A, B, C) -#define _IQ5toa(A, B, C) sprintf(A, B, C) -#define _IQ4toa(A, B, C) sprintf(A, B, C) -#define _IQ3toa(A, B, C) sprintf(A, B, C) -#define _IQ2toa(A, B, C) sprintf(A, B, C) -#define _IQ1toa(A, B, C) sprintf(A, B, C) -//--------------------------------------------------------------------------- -#define _IQabs(A) fabs(A) -#define _IQ30abs(A) fabs(A) -#define _IQ29abs(A) fabs(A) -#define _IQ28abs(A) fabs(A) -#define _IQ27abs(A) fabs(A) -#define _IQ26abs(A) fabs(A) -#define _IQ25abs(A) fabs(A) -#define _IQ24abs(A) fabs(A) -#define _IQ23abs(A) fabs(A) -#define _IQ22abs(A) fabs(A) -#define _IQ21abs(A) fabs(A) -#define _IQ20abs(A) fabs(A) -#define _IQ19abs(A) fabs(A) -#define _IQ18abs(A) fabs(A) -#define _IQ17abs(A) fabs(A) -#define _IQ16abs(A) fabs(A) -#define _IQ15abs(A) fabs(A) -#define _IQ14abs(A) fabs(A) -#define _IQ13abs(A) fabs(A) -#define _IQ12abs(A) fabs(A) -#define _IQ11abs(A) fabs(A) -#define _IQ10abs(A) fabs(A) -#define _IQ9abs(A) fabs(A) -#define _IQ8abs(A) fabs(A) -#define _IQ7abs(A) fabs(A) -#define _IQ6abs(A) fabs(A) -#define _IQ5abs(A) fabs(A) -#define _IQ4abs(A) fabs(A) -#define _IQ3abs(A) fabs(A) -#define _IQ2abs(A) fabs(A) -#define _IQ1abs(A) fabs(A) -//########################################################################### -#endif // No more. -//########################################################################### - -#endif /* __IQMATHLIB_H_INCLUDED__ */ diff --git a/Source/External/v120/DSP2833x_common/include/SFO.h b/Source/External/v120/DSP2833x_common/include/SFO.h deleted file mode 100644 index f698526..0000000 --- a/Source/External/v120/DSP2833x_common/include/SFO.h +++ /dev/null @@ -1,52 +0,0 @@ -//########################################################################### -// -// FILE: SFO.H -// -// TITLE: Scale Factor Optimizer Library Interface Header -// -// -//########################################################################### -// -// Ver | dd mmm yyyy | Who | Description of changes -// =====|=============|======|=============================================== -// 0.01| 09 Jan 2004 | TI | New module -//########################################################################### - - -//============================================================================ -// Description: This header provides the function call interface -// for the scale factor optimizer for the 'F2833x. -//============================================================================ - - -//============================================================================ -// Multiple include Guard -//============================================================================ -#ifndef __4090522384024n8273240x3438jx43087401r34ru32r0___ -#define __4090522384024n8273240x3438jx43087401r34ru32r0___ - -//============================================================================ -// C++ namespace -//============================================================================ -#ifdef __cplusplus -extern "C" { -#endif - - -//============================================================================ -// Function prototypes for MEP SFO -//============================================================================ -void SFO_MepEn(int nEpwmModule); -void SFO_MepDis(int nEpwmModule); - -//============================================================================ -// Multiple include Guard -//============================================================================ -#endif // End: Multiple include Guard - -//============================================================================ -// C++ namespace -//============================================================================ -#ifdef __cplusplus -} -#endif /* extern "C" */ diff --git a/Source/External/v120/DSP2833x_common/include/SFO_V5.h b/Source/External/v120/DSP2833x_common/include/SFO_V5.h deleted file mode 100644 index 2374f03..0000000 --- a/Source/External/v120/DSP2833x_common/include/SFO_V5.h +++ /dev/null @@ -1,70 +0,0 @@ - -//########################################################################### -// -// FILE: SFO_V5.H -// -// TITLE: Scale Factor Optimizer Library V5 Interface Header -// -// -//########################################################################### -// -// Ver | dd mmm yyyy | Who | Description of changes -// =====|=============|======|=============================================== -// 0.01| 09 Jan 2004 | TI | New module -// 0.02| 22 Jun 2007 | TI | New version (V5) with support for more channels -//########################################################################### - - -//============================================================================ -// Description: This header provides the function call interface -// for the scale factor optimizer V5. For more -// information on the SFO function usage and -// limitations, see the HRPWM Reference Guide -// (spru924) on the TI website. -//============================================================================ - - -//============================================================================ -// Multiple include Guard -//============================================================================ -#ifndef _SFO_V5_H -#define _SFO_V5_H - -//============================================================================ -// C++ namespace -//============================================================================ -#ifdef __cplusplus -extern "C" { -#endif - -//============================================================================ -// USER MUST UPDATE THIS CONSTANT FOR NUMBER OF HRPWM CHANNELS USED + 1 -//============================================================================ -#define PWM_CH 7 // Equal # of HRPWM channels PLUS 1 - // i.e. PWM_CH is 7 for 6 channels, 5 for 4 channels etc. - -//============================================================================ -// Function prototypes for MEP SFO -//============================================================================ - -int SFO_MepEn_V5(int nEpwmModule); // MEP-Enable V5 Calibration Function -int SFO_MepDis_V5(int nEpwmModule); // MEP-Disable V5 Calibration Function - -//============================================================================ -// Useful Defines when Using SFO Functions -//============================================================================ -#define SFO_INCOMPLETE 0 -#define SFO_COMPLETE 1 -#define SFO_OUTRANGE_ERROR 2 - -//============================================================================ -// Multiple include Guard -//============================================================================ -#endif // End: Multiple include Guard - -//============================================================================ -// C++ namespace -//============================================================================ -#ifdef __cplusplus -} -#endif /* extern "C" */ diff --git a/Source/External/v120/DSP2833x_common/lib/IQmath.lib b/Source/External/v120/DSP2833x_common/lib/IQmath.lib deleted file mode 100644 index 340caf0fb9b332ce03fd9fac2de1947b57ae1038..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 625984 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%0DCM=`1m8QO z^{od6EAaWNwDz3&YPN1o3`dTwgR5acxtI36aQMA&_`UGVy>R%waQMA&_`PuWy>R%w zaQMA&_`Ucz?}g9roi$gRB!5x&nQdi@Jo(2IZDl(%;OZl%_FR#veY<(C_MG|eQo7q# zxklGr!?#wgJ@+`A?Y+NgG0(^0Ht)?%^8`K)H$M(HKW<+GXW9QVS#idd2S;Srb5e@P zc4ol4M`-Q2LBIB#v2=Ouxxu;GbH)WJ-EFJP*VAjyRp;|3;qxcK?k7R*C*kuaiMl;W zyzNOi{7I1dNpz7X(L$ai#`YvJwkH|SY&4QqJ#w!0oayHSdM8vrFRMN0vbgE!0~J?* zy$e{LS2I_8?qId&s%5_(tS;5;@?X6?8RLI1H^w~m4!(m*`7q`K_p)Lv_s+q0;AO>F z{;Px6z`<+a;N5iaYdZK29DD~3z5~bUEPWg&5h}&{{*PT zuDuKyZI;Qi+2+Dp4E9{L;N4h7wKsZgg#Ix_?aa=!d-&?AJvXRJ+Sa=!*##!~CF|X` z)t<8hrsu-W)t(!dlG=0CvSDYl#*ORDHn2(qbxLhbTH9=QcRN7)0Q`A?W2)z;9Hpmt zSt_>DOY>9g+NJp^CKD@VsaP&t^(+-z=?Cy~mS(BgdN0jY(T-QRmMt1GS9{L$uN`YQ zlFfRGxv}oz3^LUCe311#S9?zHV#>Xhv#dQ=jB38ZU)1{bYtJL^GR-8#EKmY$k5dOf<8ZxIr^K*)ciVOq8J6G5>EfQG#Zo1kK3%W}=zRj%BGe6U}TUO3+M{pqXf9 zGf{$OYR@$j&1@!0&`gw|nJ7UsIakd@37W};ZB{8?jx3e)TvzIGbG7F@95G$Y-K?i# z?YY61QG0H1uJ)XHuv5i*I=%MX7Y5r=gl6ZXce7?nJwl~E`XizCoUt-q`Q%*f zIr9OgjCpjk+H)ssHP)c^+*ws?&+UPa_rS+{(EIkFukOJj+XFZ6ft&Ym?b-0C`8yBp zad$1gQXVbMnLI*k&%v#3VsO%{Jx9ZH)p&8GS99&TlYgUY&)Ir1JbfK&qFU{_UbMho zw7_2Uzh3meUi80S^uJ#8zh3meUi80S@_z|UbE-RH zUNS~{sX@_8#z-$2BfVsd^pY{sOU6iV1#MENLTu0?Fmtu%>~559)8C6YR}c7KtUc$# zoqDgT)}BjNtUWhannB|ITFStZ!Q#)QxHUMxsx>%2r~+yM(>@$(a9*t={gLiZC^sLi z3Z-%G1-hqnx9#QE4)Wd;{hz8m_stn=&waC`_S`qAJ@?Rf`~OPiIlFJ>Eo)a#9N=I# zP)5Mu5iocJOMC<*9wCEo1Uw!ggKq>>9s!j{K;;qecm#WV1XLaYl}E_t8v&a~z~&LK zc?4`80h>oaT25wLj#+k6Cs9s!$2oK8l#2x=L8BiQC6VDkvrJc5Njf^9wmHjjYK zBVh9g*gOI@kATf1VDkvrJOVb4fXyRd^9a~Hf^9y6Z9W1vkATf1VDkvrJOVb4fXXAF z@(6i+BVh9gs60Y_pb_c=jeyD{WbloU!8byEpb_c=jZhzGg!(`u)CU@&KF|pDfkvD) z%zZ7?p5usxgh#Yl#o865M+)JgJ>Ii&Ao*vO(F zl8xHiT;I2i+4E6!cz^PHO1+=<=Vc|wyh}f6Jky1H-yiD2zxhM;JzYP(F^igW?uoOm zIk%W!3hgZZCg{y7H*PzuNsi zkPr6%Ouj)w1w(_GCD0{y8Sj{)1hO*&3ABg$d;T$pR07$^qF|ei+S^TSrGo&t!!cQ`yNjQ5FujV9Y zP2$g-#4kT7je6E3-uX$q^OJbzCwUH&czGtNK{Y80IkF9EZ=z1h8=+QpVNy&7nv^)y zDp5^JC)7A|QcSy_lpd%>-X^I;H7TYiO-disD$Pxb@$IBorp=`8Zcjw@JT&jdR|S{8goU*L~(8Zp04em>(e-V*7jTU9@*ON(NUkIyRB{G?Ue4e zd29QcaS7F!tCl%8bB(##RG8b#2=>C6ds)kS;qARdDE6|V_Y!a0%evmnir&kL-iudo zFY9_Q&tNa>dN2Oly{zuNtnR(kec3C%5|84Sb=`hPS^w}^w{O>bZ0pu)4bJcO{!0U0aIYW6jFT(sXm2NpOWJ^#-#cbm1C#GGH0jA z=$?`UZF@pfvJ|=;YPIF2QT&{LqNLQjL94pjmU*#AXKVXn5E-Hg!o^7Vxk zdba8d1|$LU=%;cELA$2E8JnD|EoZ!+Dn0?LEtf2*E!RA)w%lu8c5S)WRH-f3QlYk7 zvTAL)ePGQ#av}ENQ`?7~ybp=I4^3kq__7at*@x}04^3kqn#MjfjeTeu`;Z#@&@}de zGW*am_Mv0!L&w;Mjg8K6H$Ipv*orjeXb-`@old=otH?SMTONP-Y(}vro)+ z*oW<~58GiMD6~uLgIm6ptyc20JrY4M#+6xuo%?%cXO*<&2wBy4x0T>Gaxi zn~_+X6@NrFBeymqw>D!TZ-%orBfU0rt=Vv;efM*^&&-vs{aMPDc4okpM?!76r1y?| za;~=Apg!G{?zYXYww%_LJ4)Zgc!h6aglo%v_SdQ{*FeOsfrwoL5xWK=b`8Yp8i>+0 z5T$D%O4mR(UIVeZ24Zy$yp7R7tgeA5T?0|N2HwVKAU@YXHeLhqxd!5M4aDaf$i{0R zKG%RZwSmZ7gVUpTvVr(qgJZs<2FLWe2D0%Q9Pt zXaS*Gz@`>ZsfFBu7Eq~$+<_KQsRdMOA$On!Y-%Bcpaq0#0ijyRBWMAkTJRLNfKV+U zREyK8cfAFiYH_+~o0qEvoN585TEM9maH@r@;T908g$#lgG6-56!>JZ@x1TEB-Yax%Ig*<{5YRk2dN68; z)?*S#F|nk!oI#x7;Vf#)C4(AV{Xxwwjl2ykQPMeATW+gt?=?@C)s{QDLT$MnSP47y zNr>#gO4xy(z5`of2e!fvtb`p{usiUZ@4&mY1Mk)j{8~HkYwaM?z60;p4j%GstO|Qu z;w9Z@wkqt+JpY)Yt!rlnR>cuiTQ0=cuH9R;w%oD`eEuq}EoZ)(>9ytVhQsfM!|#T} z?}lgYhQsfM!|#T}?}o$ghQsfM!|#T}@5aY@H++6KTsRx9wm9aC0moi&5oa0+IM(6% zuN2FDyZwdIOT?c2?BwdKrzm(ty~$~Cy|8vbV0+H!l~Z14R{i+Sz=L%laM%@eo> zZr%eo@3F6ev+VzwtT>B@9vqR)r&G?mc4ol4M`&%iq+eUkSh~EnTyn0qoN+-)ciSrS z_4L|u)%pDYXYbvEBe~0a?{4i#Hj)5Ahz{=?WzmW?c!8MR^-l)6 zs_AzPyJRH&VP}l;^kGj-Gy893miGP|niTfLsDJj~(4?>@M*Xh;Mz#9is8;`*Q?4gQ zeQ{xD%ntTDn01AUJ7bjLEY%rv9mkd74Etkjcby%pw)a){O83aGQIzX_RaPT+P7rJ8 zow|AZr>_q)4EY8m6DK>=M+fdwle1wN}txVjciIC5?A;qRhQS;bnmN_ zH=mufSJHE9uFE}hWrzHIamwwpR~vg@%klt&; zHr>f~+dSJeLR}AgUn9HfjwJh>J>|Mz&#&9M$8X`Y%Q4EGVHIbP&NIX_<-1a(=V5P( zB&4`2MS5P`l_E=6sy9X2UcNV_gWpO+ihEPu%@OJO8QU&YhjkBh?JMiBa3^<8pu>7+ zUWacatC>6JqUx|#R)-{M)#32(d!Y{d9lrW~m`~F?{h=eJx#WB$J&zvOxa90Idcn2a zR2B0AzaeWqm)v*y^i4GS?iqdaOamURpY=+Tdk9g$L_Zi!uJ)U#UN%u7Xrg-AM1`P< z+CUT4%O)xWO;j(Ns1r0%y=i=t^df9{>YoaR9( zF1aSEmrYa!ny3miQ59(7>B1(e0!=(u*u>?LmTOdsa&NTX-)3i5&O6HQ$ek15h~AmU zk*gBK9}77kV}r8Ff~)-l5>xAUD8}~(kJ0*WiGi6yuc2;zz+Ps4*b6k{J#$T zzYhGr4*b6k{J#$RL^|;NI`I5D@ccUH5b2;dqyzu21OKms-jELbzYcmsI`IEG@c%m8 zc3Wo$USNkSFR%kIu)~%A*WoJi>%jl(pev*U|E~l8uftV_r-R;*4*b6k{J#!*LptyR zJLnDRpf{ugFR%kIumdl!gWix1*W+_;V7`(0!^}4^tCOt*j)@LBL^@!X=%7QSgAS1n zIz&3?5b2;pq@#p4X&-|>u8K>IOHNm#cx=p2_1X!)MlLxY?ksCnmP>AbjZ5xUyC+_7 z<2KI;6h0UFtKyP7UXe@gcoCP}apRJEwD0A??Y~wox$Q+E4Tj&2g|f4mQWZ<~Z0K2bJT*=5eq&PHY|r zq2pk4+-tD?aboj0v3VS9juWBB>D!Cbw-<-`Ck`sdLFG7odvUNi4l2iC{)xl<69<*! zbnM0H*o(vb6Q^S@PRCvx=ASssKXI6U;xPZj-G2V-TbL#PahQMNF#p71{)xl<6NmXH z4)aeO=ASssKXI6U;xPZjVg8B3{1b=yCl2#Z9Oj=m%s+9Mf8sFz#9{u4!~7F>zsXAVpP!mJveAM$&6(6n7ftI7koFxa5xXJ-&Tp?YX|ER-cNm4c4t~b-S^FOYV;UI4-$ji;~8oq_HSz zEJ_-SlE$K>u_$RQN*arj#-gOLC}}K88jF&~qNK4XX)H<_i;~8oq_HSzEJ_-SlE$K> zu_$RQN*arj#-gOLC~3Fd^eT--Nn=scSd=stC5=T%V^Pvrlr$D4jYUagQPNnHG!`X| zMM+~((pZ!<7A1{ENn=scSd=stC5=T%V^Pvrlr$D4jYUagQPNnHG!`X|MM+~((pZ!< z7A1{ENn=scSd=stC5=T%V^Pvrlr$D4jYUagQPNnHG!`WdD`y%mxil6fjYUagQPNnH zG!`X|MM+~((pZ!<7A1{ENn=scSd=stC5=T%V^Pvrlr$D4jYUagQPNnHG+c6Nxa89A z9o(I7Gk=HqyUfR!?_~Zy^ItRnfZ3+1EYMwcUX4pGv_Pt0_#-@`p7#8akK1l&feN|g zLQ`@fR>-RHVG^gtC6}wYukWuZ=92r~1#rpTZM~PuABL4T^=qm|Ud$!8NN#fx-B~27 zxyZW~$!9K-mtS<$TeC=Zev$0_BA>cQUVf1*&mv4Si;jA07U`{7q_<|#QMG2#5zE3N zOc0B(CM`OuaW6XU%sZIh$-I+UnU_UaXBHh*i5H#sFpEQB(UIIPI?B8(+O}TvtL>*z zb*#oE7izwuDu3w69@{m|m$K&iY4+QzigkFMu(6-U+GYx$WeGjZLm?&A6~-l3u2ZfO zmz;E2m9J2j8*G20E>EM&)0{btE>EM&(^M#?(dcRFZPV!WG#WjPMo*I!oaQe~qu0~u z^)&h0X|#J9?Vd)vr_t_dw0j!uo<^^y(d%hP8a?fFFiWGS;dz;Mq}S87U8v3~7hB_! z3w5?+|BSDMMOu3vF1h`pfU0rHc@j$-rMTp-yM(#q&Qfg;zngWN{RiPUwAQmPv^Y!U zJ^Z#-`2uG_g0mn&_&u%ao-O{KR&_U?1q0540ma|Ys!qD%?`GZ3k#=TjfB4<3!hrA_ zTBXBhvFc~B>Sy7SJBw963zytkxm!7cTypzsTypYgz2FXr zOYTq+mt4yRF1a^tnoI6YWw_+tQi4nFP+2ay8L(!CUWgfbdS*bD89a>{JdGJVjT!J| zhS*^SPh$p8V+K!S22W!KPh$p8V+NF&!N-`v$C$y#n8C-G!N-^(f|$X_m?3tU!PA&= z6g$k|W6a=V%sA=^n*n8JK$#gwvBL}~Gehh!1Io;RGBcpej3bnpafC86j!B!ni<<$k03fCol%sNXO2_kBR@KSM98O4@{iQGM-(x>mIUny}1mR z+-8`%-e8~k6R_bYe7YhUjY<_Gt!37>t8}7M?wJ?)Gr4nuK3Ba{f5Cs|<+9+CLpFJ) zet(TiPSWJrrjeJ@ja+h%V6h${Hhu)V^$2$B5hCPAkgP|rUXSou)kvlO_RnprES1W> z<<1GDQt!-5<>kO7Cs7P!l8$RXjtu+r_U$j7{n@koVDRXq|1{Mxdzva^M!?T%Y=tK$ z6;1q$ZMV8UYnUvUI{!V}G^%?F!+7MHjZf|ZpTa2QlKal<;*yI{v5Qc#i%_wPP_c_p ztBX*ji%_MDP^F8|jTfO-7ok??cS}d8)kUb%MX1t6cp4)@eJ(;bUWEEwg!){B`dox= zya@HV2$i`AmAQz!)2?KM`doziT*Q@M7oi(3;wmQ`p*|O(J{NJ7(~Y=zUDW3y)aN2p z<|0()B0P-|p*|O(J{O@r7jfl%MCitgxE}jAGT+3k7&2n_+Gb5QD%mYbM~zD^^x~u! z{?HLc=H|MsVH7+^HnCD;CD}YO`8H8#Eo0{n(Xa<{_=_6Be_ z-hpPG5o>mpId2A)nn9&zdIy@pre-<_nn9>$5UQCzf@Tn^ncjhB5ULr3YIfWCv>nVH z%!)so!Kr3&su`SW2B(_o8g2%mn&}{Drh}jvoN5NAn&}{D2B(_Asb&zW8H8#Ep_)Oc zW)P~GK7wX&s+kUgW;zI(;gV~HORkv?f@V4hn&}j7rh}lFPT^)cg`4RhXogF!nLdJM z`Uslgl53`qpqV~`X1L^<=_6>SkD!@8g666*vEQyyjY}@X#CO@%@Q02lD`1#d#3d() zQ`lMsm)!ocTylr4!K=Nn{?^`p;7~DZ#S`Xx>3dcDC+)U^@1^GoqkQx?rFzH z5D#p>sUg`{-}kihS=%z#D$^w{xi^>KlFJY!Wb95jPKGEUgPqS1D`bcjGDHa(BG?Rh z^9vRfHeRE^J||4RQ&<*35HOTjroRH1k3FZi+UWyB>{AlH73 zQI1P)@17EJeuZ+$DOaWj9{23(t86^A} za-7c~=g*k5Rp$vyFVFv^n<`H^$q%Gj@61c}<-;Wx2z4%Qu5rmJf9KhzQJQn>AN!7% z<&t{^$qt{-RL%1hFf@EJQ<=b5kmgsA=2!G*kSzVI6vas@&yUE;>8zJsy)!SnmnoOr z{v4N_M0!1!-2NJuoTR|BO{272Z{(6IFXyi!=dXg@uY%gIBImDCb$gY1+p9?Ut048O z_#&_3g}h3Q?Nw@Qud<$MJd##Bv&JPS|9p>K3G>g_amo22E+2hQNevJk)%w1g8kgMq zURR%I>YwfmJ@sZD!Dj8O|x+l_EV4dsEc8QQVcH&o1stktHnEn<8y5-<#6G zZ*?nUt{g5oUrEoS$ECRB zEMZodLkoM@_v{V{VEroQcTA7(wG`6Usbbz}QlL!Q@0%QnPs|oiSCnTzH8xenyufe7 zdi`8-_0$IHsb1DoA*iQ%Sx<$ap4vb?)ysM+1oc!e>!}meQ@yOGPT*(G>ZuddQzxjW zLQqd_pq|=5J=M#4Y6JCDFYBod)KeR%cV*k_sb1E*vhDR$1?pYpd+VtR)Ke9xr+QgW z^|Ibo|6e`T%X(L~xt^*(J=M#4ssiz{pGy8y?X=d zZ{N%N8}ss3%u!NIur*lzdu^Ta^3;)ZuWhz?df7euso@^^z$MKkCw&s0R_2mx!wYP~ z3v9#xYs3F*!~bi;|7*klYs3F*!~biePo#~$wKhDzHax#JIz-y&4Qa#wYs3F*qc@}t z|F4bSkT(3kHvGRfx82s+h8Ng|7ubdu*oObt<|^`Q!~bieE2ItouMPjN%~gh{joy$p z{J%E*zczY9+VBF~=nZM3H>3?OunjM;4KJ{b-jFuBLfY^G+vp8xqc@}tc8NARMB3n( zXrn`<4R(n(Iz-y&5NV@Bq>T=dHabMwN_dmDSZaZ)xYW4hbTx{{Mdy<9;m)#FWx3=I zY>rDV{0amg2OlsTywMDlo)O#{IQUIlr*QCpnKWN*ASlVzGbNsF8k^^m3!e-9RdLBZ z{lf-lDDM5paqbwbb6y^dIQ4xGSU<}H&Oa9M$o=@LM~p?T{dKd*MeQntS+jjm2LFHahxffLK1(kcj<6ffjUQoH0sJs_!?gf>5-F8;EgIW2wUZV0| zP`MXW?j<(wB`WU)m3u+uUQoFgRPF_pdqL%1P`MXW?gf>5LFHahxffLKB`WVFD(?lA zdqL%1P`MXW?gf>5!Q)==xR;K-UhudVJnjXLd%@#gdi8qUPx4>%F@K6V&iwn#pJx6; z=Fc$euJyw9(+k^Aulre!e2zKA{71}RVE!WWA2WZ6`A?Ytl=;idUtvx&-^Tnk=09T| zWd3vJuQPvx`7fAl!vEFJO5Uw>R=Qd_JE8wEcTSL<&^z}d}T z-#$ES_Th(H%07JGuAc0}l)+j@U>~Fto^2Xel6_dm7Wdw#>}!LDw%z=3vlCb|H-b2vO9HaN$0{X$ABvyC16Ym$EXM$rV*txBfaMs#atvTO z2Cy6hSdIZK#{iaN0Lw9e%z zV*txBfaMs#atvTO2Cy6hSdIZK#{iaN0Lw9eyC16Ym$EXM$rV}Snd0odXO=<*(b zCvJfL?g3YpV*tb)pv!vz%Q1lE7{GE2z!oF?GIR9G%sIcs zd)t`h>&(F+HRq^iJ?FGDOETvi`RsGfPG(io=HP~#bL0=rIeHFo&UqiRN;U#e@u-V&P?6Qwu$f2*;B6b ztr9n!bXm41jM^J)U(tCn&*KETJi(b0=<)=*JVC`_0*#)ael~$#PoU8gX!Ha=-UNSP z0==FxYTR)9Os+iJG)i&9{mv!K4R?kNUHC1l+w4CG zziU;w&+r>p<;{lQyQ*g~&VU4GK!WfaSKq{OMSEvJf-@k&88F}s7*PCOtLls^{+8A4 z9BF5k_MgG3pTVk!-?b_oK7&<1gH=BRH{2OVR{ab;C}-$TIzvbH8D}rYb%)M42bd2r zcQSu~`Gd?KV)mGCVE!=k&CK1*Hi3}(8AJ*-Za7_xg7M~HKcA(#5NVuwjkW|G)p5|o()WhOzH zNk=F%3Cc`5LYYZN+;EeQ;^Il_>65m%9zk?OIwL>G=Y7)=MLv6qjtKemN&Y#dJN3Hk z_g`=wu3>pLEX6^&bAk+o-kHx(+(?!xcg{u4P-ta!TzRcJ9Kv;tJjw{m{SkUN9}5rI zS*lTykJv0XobW|JR1G)Wff_fQI)=R9x`(V=EoHdjHp9I22K&rMkn2bIbjhklrF@;% zGHaVKro1-DpUIsQXoKFF*M`f28xGmz8TkV>Za7JkXPZV|N;h)DJ%Gh}z|g~S9>8ur zfZck42>Agd>jA9S1AJCBQmMcFbK5FQ<<)#%a84kVdS_lLF9&WoiDDp=HEuY&yB>GF z+NUav7p~d(;V$s0ib8IV|M;@7R>*R48=8&~msrO5TXn=sw(2N1vg)XgzKUPBieISraprC77Z4HtTG)o{Zd*c><9ff_fQWX!WoL(Bs{ z2hz~bp3dH6uWqsqvYVVw^__4&-RJc^>3pzne_wCklRGp&{j(R=UeI^mU0t{KRQ$>N zGCzLG``^~xt}OKfKhS*VcLHR(K-S9j&wKsTo$u@WN#CdXhFHzhwwh`(E}H<2TSR&_KUHgRAJUfv$lDSCMCfE1YU@g;Nc#BF_f;1sYsM zjSa5iqXzna8(ihO8eETAIMqPEKm(n>4RFIX&@a$Hzd!^10uA&FG|(^5K)*l(oxcrq z4K%bF(axZy%fl$7{GM|6MJ zbHfSZ6t-5u4R@d%H{9Oq)vi_eT(jeaQGCJ&=>RNFTCvymI_aU}e4B>ZtC{BdOFaU}e4B>ZtC{Bb1w zaU}e4B>ZtC{Bb<|$C2~LtCnh6-sSU3wJJ|J$q!;>y)!S>mk&2wAk?|Ic~jhQ`wttQ zYxw=Qw_E@1UV|}RtF7^T#v5&&|6<#}+V=0Z34;rBIi)$Y{;@1G+)I2y__U=e5-)+E z;d7SC1HObTzhryWMQ>W8)>avbOXYX;&b-WCN>5vAWiD6Rc5=hFCR%gom#Avt4;@jD zlsK^rcMBSUa-47y<@KC!2R6qEXY@G?U!K2Z@+_W;ts~FBX;(<{EHM;MvgBFU+Otig zv^;O*glhnY!x%`P;*Xd4#Fs(rmpSKUV#3I zpj0P}`df?pVe9}}rk}nZSKI3ZAIW9df)jd+J4)3z}duE+|zq7^#XP1K^9o}zy zX0LsvEYjlh^}ZGqEpyMKi1DqI9@n_weigNWZ}+J>pn8C+0S)+Sp&zWDAqtr22V)JN zcn$qu!!uq31=c`;H8f-m|9A~MzlN8*MijWl=da-_uVLrcu=8tp%xhFD*Qi#mVdvMd z@M}~n*Qi#mQLS8~TDj)Pwy#mYSfg6GMzwN{D#jYs$~CH$Yg8-Os8+5~tz09zvPS~= z1a(8LQLS7<1fmT03hVlut`Uw!@3AFkNwE79wBFWXL6aiP4 zgO>-fUN?$!@RtJ@oJ5(d`@tF)Tw#XNv-q9(qP9M_hbHN=9x!~9d zQ!_O#IQPhrOPUK#`XoG6?oJ&c^0D+<`^xb9qt%s1*b1jat1HcEr6Z)3UXWH-I@?M| zNGn`$tz;!z=?iIvL86t8kXAZETImRBr5B`?UXWILL0ahrX{8sWm0plmdO=$01!;BL z`72sstE(=MR(B_}WV6*(|Fyd6lxlVNF)OBN zr5B`?UXWILL0ahrX{8sWm0plmx_v5Sn&bZ(@eyv<^9frQZ0#`2z`bI(DC|!9` zFgQwYUKAvb!srtPkE7sm6g-ZC#8FpuvM6{Q1&^byV*Mzn90ir5pmG#cj)KZj@Hh&i zPZU&+!srtPo1>s|)NSW;gvwD+IqE9s8+C=sQBXPRDjyeh#VZj7m7}0?ln%Wps2p{L z%27}`3MxnG(2Ih~QBXMwDn~)(D2zT)dh?>7auigKg33`)ISMLA!Q&`+9Hm1q3LZzn z<0yC>1&^cj=0#!jiPDu9h0!NUZ(bBepD0~bIVf2Z@=o5v}Ckmra6h@yYj6P8qeWEb>L}B!a!sru)(I*O{PZUO+xZnz3N%mnQ7hK(c7#Cczb#M)SOJxt2vYHw=fEmeCv91`>gHS`}@r`X%; zwh}Y7Dk|y}+hzf#NvH-;{capoAhJccfhQE?bUqsOS9jiJ|LX!IBwJw}#qjK463UXP*IW8`DU z(C#s`dkpO!L%YY&?lH7`480yhugB2nF_3NyjUJ;yK89Y8v2y)C8k_5BQ*O1!1sCdU zaikdZ!}v;Aq_yYihdEf|f>ZY0vrVHE7u@?UVJ^5CGIZg$q;9kSApEY>diI4DGgQ*U z?@iScvoj#U3`h`uW2&CWDgMS(F$&Ls0W)Ag@pq-FGp_hsQnz!YowK$GX6THW;R*g3I%8(I zk2Cbg%s3zBT{km#GuyO2QmApk>7o=2zt=(6DMT7EgZU#oQtU72xn=Vg1SEOnu~+LO z1UuCGr!kJFF^;D(j;Ars z-x&vG#_=)6@iE3(!#F<1I6lTW5yUt?#yGLVIG)BhvBNk%#yCF4I9+(-pv*WZGfwO< z4$6!ZJB))e38SVxZosB9#T;#r5m~6?!jW+(gOE7|x!theZeN+q?w;KT?Rg6g z{~6$8mf6kNE%LJ(E$$=Ebp=n5>ROc>?ZGdu`564Xb@XNYx@G*jWn#!>yt`$*yJaHDW$xlKTyV?IO}tAnq&jeY{ngJ( zJ>`;)8W&s`D@rf?p(8iguEmNzT;!w0&2hmUtZ~6f#ytPBUIAQij%y%m4dcphIdly; zE^!uJ0}fpSj*BNqzkoxhfa8+OaLJt0Dd5m4;Ls`Hzy;^fFW}HG;L!i;&^6%DFW}HA z;L!i;&@bS)?Y0ER6;3&B2eYzV4qXF|`!4p?Y39%c?6~h`pK2@p0uKEGj;kt*L)U=g zD!=8p%HcXL{XVWDPltX1`yy}lKfwG!W<3SwxE}M3%*u5+bpASU!8!B`IP?oR^b0uj z3pn%(IP?oRbpASY4LESYIdH)_^bR<54LESYIdH)_^bR<54LEcSU^uW9`ty}AvEP1Q z9nvujtH3r-NHu(b**y>Epx-$MJ%W;{_eZ|2dB5a~#j-IN7b^cs|F;YaPe` zIgbBxT(`I?{ZO{8#szoVEuSq&A?M}Vk9+;sM8A1Cw-{sZ;SzGbjtlPZEyn0IBckUS zY~BJfhOCxi3=QA+^z)1!M{;rR_L~}#eIXaDXe^9%Tj9#LD^~&i~|^Do?q1`ZDK&3&1)TH`ln}3UfK7 zxwD=v%LVrWaveTxS#MJG0(qJ6IZI^_UqF^$kcd@<#Ck@d#sw$8L_Ja#s}*y>9n5jT zNtD-f!5yq|!AX8R+cZkc^Lj40^78#6^8F%+{UTWXBJ%wr*_ao}!@LMezX(3RhzIf_ zzQ>DH)?Q>C)nN5++L<*jILW;tGs%517o0EJ^2zs;URTL;jSDV}y^DKS0$rE# z=ChIZN_uY1bfvlA4*IlHzP5)E_kIhs3uA46zrFp+<$^2M?RtLQmc}Y}P>-wfd>i{+ z$BAXe(TH)*Dc^-6Jr8?Pq~XO~DEjQ;E|gY|NZX5hQPlBPz86Kgz*4;^>Uaw~Qf&7E zb$FM()3f;1uPc_Tg$s9b=LC_I-l^;9R~>KkvzX!M6x7-5!>wDxrgfvRwx$e8$#V+o zY0A--I;XIPruA$iKU(Ls+kWBj@4MCwT?p!HJ8) z3$Ep+s+Je{4OZ*FCuZ|paOd!e&!PY4@QlwP-{(Mqb4d0%{Nr=vGS1;8pCbx9hp&7N zU-=xljB{YiIXvcbR4dO>tvpAy@*Eca9M#HmR4dO>tvpAy@*LI5b5twOVcXA9tvpAy z@*LI5bI9sBs+H%cR-U6;d5-An9KPl`s+H%cR-Qwe&(Vc;j%wvO>XhfGQ=X$vdCn0R z+&Ma4&rwl3#~qYbX;jL?-)O(DalwViLY;c`OP z$5>4@x=~#Yo|h8P z<7bhNXR%SwVxyi#nx93QpRHO(mC-zZM&0)kgATPoM)l6Tj9#W(a7e4q1$QXqf@3F4 z&E%pr>p&|Nt?k(xK6dQ)ru~i8jaJOPEe`PSuUnfpo8Jws^b-&wgsSM>;QQ zE;#9v@KpIo#eX|&)@$u6!|#t4Izn3DlxT4!*DZ8}w9pIE;!0;*=m=?n3$BH}kQVwv zT40c9p(CV)j*u2QLR#nrX`vUSgt~ zGONDd;wtiMA$= zkQP_HAT6$XL0aenX@NVU1@4FzxFcHNj%cAHqy+|v7CJ&&;DT$RBcz3nkQO>ZTIdLA zp(CWlq{hbz{q(&_?a8+54%E2dbTx{{#^_dhScm2np4kz+$Vazy25~g>N;`9J(2<+% zm3gH?Gg4HayyY8T`tohD)NNl(ef8tFeJ*udA>3Kksw@}Wp&A!l(ypZ!T;0uc{e;hf z{%W}3{-FXF+&>g>!Tp1A!TopRg4_9P<$~L3=nE`x^}0ddZqT=zuDotAxSQU*ZjiW} z-n?$`xEnm~29LWz;%--UvTpFW8$9lImHFugmAgUZZcw=!RPF|qyTRjb7=5}yN~9&iSbQlw~O9g7aZs84G*fHdnvkq~cc}x#dfr|3pvzNnHPp zH7+==ullQgy1j4h={vg{Z2n1R+fTP=8a`p)XZ_RdLk+j|Wq8Kp@$DmP&*^)$<7 zOTq=0gbOYS7hDp{k%S8_2^U-vF1RFIa7p(L?#Q>8zs>wz=3~s?W4@EwCbAs*S;^9T z-+o`?f(tFp#u%hJF1XNST!^)?>Ux-zsd2$o$p!b<7r+H~S5;ha6Xb~|(47ggloMnr zC&*7ukY}HudNx6}eS&QJ1ljfp^6V32X(q^&O;AIdpoTW#s8?o!8rlRkvovdH{+RdMJ8N8U zAr>fB@`sM>v0d{qrL4J<*dcpWu|Gy9)VSbsnTFC_aOFDRDsjO{mla3(Jrd=5V@A;B z5zZVzmq*a$5h@NNX!Hp6vk~-q1dSd+qesZ{jqn#n(CZQOdW3xJ2--b@c8{RlBWU*s z+C74HkD%8h==F#rjUJ){%74*;%7Z-*GZL<&$*8Cm$upB9cAA= z+cZjX!M*nq=7O6fLl=Ha>Nfii!tYA0XTO2@DrQv(CqaTqkYExd2){A)P5f5*{z;Hv z5+s-e117hC^v6unA2UgR%p{riNuJ=Jq%&rc`#4E|%p_cJljPDTVQ-kU6|DCc zcGkGyxGMR{?{(013Xw*>oIk=N#s0!!`=w!zfF$oP*sJvsf*sn(1$U^%1*b^N^Di)5 za5oik!M$+<7hKb(x!{`0aKXK)1Q*;*mi5;i59_a?t#+JIux6CrhEb}5qx8g#;%SWH zX^es|qu|RZvBM~y#web~D4xbB_%aHEN1nzgvBM}n#wb37sn~r|9*vV!6BPG6Mv{A7o554r9AfihY#bg zhaUT*=CN-#zgK>qI!P{l-YrRvJa&zr`#-QWUa+5+(v4hjcVV&aGW>CzyRch#VYlug zLcR;hx(n-d7oS#*RBAn1M`fv$ubn$5=*H7K^%pK5E;xx|Ad>};RfPR^<+3Rsb-cb&^B#ZcB>JYEf3(ce8*MdV=14m4>wRHg#{xRC!2hs-jw~Rh3+TuK+OdGf zEr8z(_;w4#jthML0{+hepS{3cT)?+mz^hxpt6RXUTj1G>1-!ZiJf;OQM+xYXxjt0h?BcI9I@? z736sZY+3=ER-AUb>MJ1B3c2kSaB2mFS^=R}K&TZEYK6Sk3fQzl#JNJmxdKA1piwJC zoGT#I3JA3VHm!h7D`3+Kapwv-t`!h!h5Nq(SLF&gwL*?-#W~6fKf>I@tZtzdC(8UW z=1(yHE^{w)jQRJN`^DC4C zPC1&VpWfS7x2plE_AmB>>_3QvKZt}sh=f0ggg=OcKZt}sh=f0ggg=OcKZt}sh%J2( zIe(B3twySK@6Z3lnkr5?i4CM$@63C`+vxbqopVv8+L!0BI>ORz`psa+m+EWmRZgmv zrdco4xp=w80jF$;7hJv4oLT=+mILltnG_duz#YnQz{&4e&jEL+ z#sQ~m?FHAdv^=lpfGaQG&m-T@gV@i5)z2fB&vP%ICj;|5DE&P6{5&4W^Y|Xm6XiV5 zN~)22Ay|zAPIAA;u7u>im;=riZIzJrl$3luqqn|)X5XP=|J%>Z8!yy8c`O=!=JWfO zjlZ^TEA`Ll8Y%O6$nsp`7qi8asq^foM%efE(`)~q|M#cY{^jr9G3fAJsOvf4%5}9? z=83AVuQlw3k@QdE<4oe?guO4#9GAXM;^R!BLzDP8lX&ry=up`EB37ud>qV9ENwS!w zdSBkbZ`+x7Fn2KTWR`ajcEDWAzMe%Z?trwm{wMY#A(&x2)(lEdsg&0rt9GYwn^06URCauvlBM< zxR$BBUAY`^<+@zYuiKKjw{TO-^|_9MIHO4CD7sy~`$T#k_Mk{Yin~wV$`Qq?VfTq5 z)KWbt>U1mLgCY$t)q|o4H|#{Q-3!#=UG`4zygDr0S+B!-XI_V|91gfcDCv3h*!Z17 zqn)c(nrSXoLEp1GG}^w+{*Kw~d(G@gezr!n@URI&8ylwoaBKSLC-*|5&w9R zT*e|^@*+{-BEIq>c772%zsUVt#A9A0ieID_ut+Un5evUaEnty4UvrTvz#?_ZMXCUcbe}C!r(C28 zut=78kt)CX2luIvnSVZgrl#FMr7IFUbLSNDU1_5&g_PM6DMkdRS{5aJuSVa81FJpA5CFtv%DW zcKb*AhPK^x9uByN(CvrN?T66qhlqL~LS7$2s~P2(5ky zt$v8rRHGZ!<=}lEGti%sIrz(g1MX1B0e8402V9xB_Q1XaM73dDd#~BZ>kMst6yFM6 zX37}KMylUXnQPgd!VIN2;0_mY!1a{nfO`@-eiAu;66|~u8}%eM>PbHLNu>En`zz}` z!_vJaTHpCI>ZP)idS@QLFQx3HR<`-aEEIgaOzp|f*ZGaj-T-P&tDA( zT&4mCT&92nE@K>U4;u&EyMC=4aPKPOfb&3K5A^liZMv#pu;&UNJdoIf$;ShaJ@D8A zk3EpsbE%Vo#~yg>x$+V{P}u{OJy6*Ll|4||gUQEpm5K8}WzW^~Rvy^wfy$oS&Jm%q zN5Ll|5JSqvw8z*<%(edocNUpt1)ld*HDL9(yqPc;K-I9(&-i2OfJc`FJq-crf{R zF!^{e`FJq-crf{RF!^{e`FJq-crf{RF!^{e`FJq-crf{RF!^{e`FJq-crf{RF!^{e z`FJq-crf{RF!^{e`FJq-crf{RF!^{e`FJq-c<$HvufM_k7tA)TvnQp!+i%)=SJ&k- z54V0^Z)D^>SJzShVeXtD0@FM5=RD_sPi>gxxTx6)t*qX(r+D}gk=CrtgT`;?P6&_4 zbMQxaM3R?3@=@EB2VBen=fk`*7WSNNE@4px2b}-L8V6i(g|8(0u#p4q>i;kfxMItZ zz;Yz890@E(0?U!WawM=E2`onf%aOoxB(NL_EJp&%k-%~!up9|2M*_={z;Yz890@E( z0?U!WawM=E2`onf%aOoxB(NL_x83f2!jdy@NaQE#_}Cf0y|f^Y@tVWVWd)OY?m@uf_ov+7i5Rk)<3XKRHI8 zeT?ea7}@qQvh8DJcE`xGkCC+*qrZEM8rm2&v@xEi8KZ_aMh$HYUuTR;+8C9zF{jZbKQtThfe zF?}DI^?APEa|v_6jZ>`*za3Rsx$rwu>)CH$zKU5@l5vn=93&VA3BqqmeG|V`zJDAf z7zYW)!GLivU>pnxzav%oxZ-a|7591gf~ zTfusNp~eBH+Ed~1dmRe1RH}#hBgCF!e?he>!yW-iz9?(2)<+0-Xk-7(;n%|f_q6#9 zgJydDy5UynHBi1-euH|mzYzEhWTE{F3?8%uD&eWWZ0 z+%Q-(OmD+5Rl#Aht;2X4!+09Q;L9-hGED3+jHfY-r!kDDF$}&8gD=B)8pGVdVen-b zA7dCFV;CP}7$0Mp2x1r?V;Gbf#?u%kb{NLT7{zKhQ;)}hkcpta1}Chw)ZHu$;{oD*n+-kH~ie-HF2IOn2j zgI4B%j_d@JyeRpdF~{-*EsaKO!?BeUqpEIKla zl+L0fvqRK)y?A7&EnO~;?>RK)y?A7%@RA#;?K?E&&~2|#VpTO z%)+oVi&r;`S2s%pIg3X&%ToZeM3A$@jSR*)EH^$OsCTLPPwK&2%t_Y$bIg!Nqlo0dSOCGcp8 zSaS(HS|Z9^0*{u!qa|X^B~WRJjMfs^v;;OS5pgboO-sa@OJLIy*tA5%xdcKjk=tGZ zrQI$=9=!mibhKWTSaDq66t5rOCcDR5*tC$0B z|K9fEy4yw$xW_GXrtd-VBaf|+Ia9a3GG`jA{tq{s#Tx=i8WQ6a*`j! z$a-g9sxKc7xIn0L@p6p=PB{n9HjUDpS(&mNa8DxF;Zv6N_6bjdpyBhC%CbF)EI+A_ zN22tzQuL;06aL+{%1B%)ucLS7W%g2f%2F%a{8N_iw|ALeQp^E&IL84eQC`mhceus@ zr)%xmrcqj+*K@#?m+v9udkDlH0;`9R%OUbGLu6ovK_O1@~M*7wiUIN;950avc8wK7jsb$zX2H;klz93N*K zA1Ca6Y38`}bsQgO932|R#~H_qA4iA6-WPGegCxpWem>ukQFz;km z*F@L>b1nON7Ol7gMt!ZteK2-lo&Bn|$5rxNG`m27plX%?46$FX?(x4 z9FL=LCwEQ|N$H)so?%Bw(K#2j+NhP)kx#Xq-0<(a)*Nc=Z|8m&9??7fp(8=htFM$r zTKtLMJC7dMIN<&j{N@| zb;>!a0CQ9U=BNV9Q3aTzPB}-Na*kTS9CgY$e9bwk0CUtS=aA+(y3gjQQ_fKZm?KL( zM-^a>I^`TyfH^8^bKF5`xkjbv_D1`CjRP*k5uvg_bVMC$=J&5FP3mQ}nfMw9oHEp& ze@T5#$s!K8ADo8+?ml$;K6Lv&bo)M{-usAp??bEaL#yvYtM5ar@56h)53Rlrzu`W# z`aZP!K2}qWZd8|p_q$;#<=`&|4!FZ12V5ZqTzklqdZ3K2dqBTn_&lliTXpG!=C$}X zeJfO#6b-7n^slxl3uuc+(meaAAr80?tsN<1f&2K{N6YfSUBlDv*SLBj;~G~|c#W$( z1QQ8*Lu&Ntt{0Wsdwi6!uPmE=Ui03P%Cq} z>b8>`e(kH!FO)y-525!?+coqq=7iHLpAs%)gwxLrd7Az9O+vop7S8P^@B36*vf<0~ z-6qeCb}JPjYz^MuPue;q&wphS^|!XkYxTO&dhh23<+ppes}# zbcIucut*HTA~ERdZw|sDG3bgFZV)bsL07Uj=(aI$XI5M_=(aQOVAeVZUCHI3tE|JI zt5|T*mDe%oD(5rkzK{8Ln3eMxbd_}h`Ezl-2;Q}2bkr- z47wj;zJd8h<_|O9#C$We`iBPHqs%?b>Jb@)OJdOdFYJGu`FEMsBQof!M`Tc!c^x+C zi1br;qnII1sNz5A5Z!CLHk3IFj_BXB5w*=fQo8?JGA!9uHK%<4xBmCsIYI2Jcjhtf zn{aL9&bg=gY@q>Iu~p`hN13Z+z*?x5ZMo zeKGabkKgvW)NKXmXDO|c1aX$pDx`A%?a|Cv;^)cJDzS$pl-rm=bcpRVB9&|eKd+&}g`TY(`?zx~^*!d@4>`tend_5Gdk z#MQlSo;V?a@4Y1*;eqz+40nYJ+K<@2uAH)HIu1D4zT;$E?PtK_40xQu|H**L8CQ9| z4A`7;mDS3C&>0Xq12$*C<_v5<8Q6X@AausnU(0~g8E`rS+fN3Z&VbMv5IW=P8Hx-z zoq_Eq;|ixUZaec1=65m+p);;Jvohdx2As}-(;09&;|ixUu5dcz?q(LKWn2MS2As~g z!s(1FwyumTUCqGulW~R984xG~LT6l$BR4P$r!%nqWMKQr!1j}Y?I#1Kk=dzJT?aFQx^T+X0$qsu&H&^=LVDYPu-14Q*f1<}f7Fv(6Ad-s_ z%W!_|Ij|=n3iqwYe>dxq*;3Zyhj#5`J?0JI-eVFcuSXi;*`{$NT90)sa`uI0PrY|& z+sz+0=KnViHGFSX-$|;9ioC?SwWM?5b|s5l$zoTs*p)1HC5v6jVpp=*l`M88i(ScL zSF+fZEOsS}UCClsve=a@b|s5l$zoTs*p)1HC5v6jVpp=*l`M88i(ScLSF&!q{eM|k zb|ve|u4M82v)Gj^b|s5l$zoTs*p)1HC5v6jVpp=R>`E59lEtoMu`5~ZN*244#ja$r zD_QJH7Q2$gu4G}6%fcd;#ja$rD_QJH7Q2$gu4J(*S?o#{yOPDOWU(t*>`E59l7&Ss z3yWM9yOM=VE(@1j78bcIEOJ@5pY_YGWWm#{E4z}#u4J(*S-9k~aLHxilFPc%qAXl; zS-9k~aLHw1k;}p&mxV&mWV;gZY3C6|RuE{k2s!X=k=WmmE=%4K1c%eunTtotqI z?=XLt`55!}n7_~b*UUd)zKhwWs_c-^L8wsK4*jt{E<7i&LwaZ44*fICdbx8hsvXkG z>cKdzIvl>gUucKg!(Z9|VVA(h`!*a=)annN^D)~E?NA|O4MxW=-)+toS;8lm-pNHW z`_1AMW_H3X<>9^i6~@@`ZP9--Thwj~_y4o45Xs03l`T48w&-KF>8cBNJlixv{;BnS zIK|v@CoX_n?niw;tcqRkC`f%2j6MoF9|f0>g2+cft(C|G79RzRkAlTVU1emBg2+eRcJ_BL>&hH;cQVV-E3d{u|vR-5W(Y=$wm+2wGVklE$)a z;_DNYZncs3Oy3;-I)?~~$owJwf4A+L{!44A+*jzjv2#KnQ<>S_hYs&Pyl;P*Z=*SM zI7m?hnyqi6S+;wybu?QZyfph=wrbT-q}lJV&9hA-)a+trxhF4JlO<<jwpwCC}vyPzEN6_jcX!Q{?tVhu8Bk1-Kbo&Up zeFWV;f^Hu{tB;`7NAR$YxYCCs=<^Z$tRwhYN6_jccFitSV|DFy%`0oHP$qXyps{*q zUSmDhoIB^DYOGdPhXiTW;n;jExzFC}YiyytMmfti+gOZfR(zvfK48_AQg(UI?n8SD z?egE6_Wn;(fUTpwN9`&}d-ZJHUk2K%E9cp!@zd?y4eGZkH!maK!YC8pa(SQ!N&K12|b`e4`|Q>8uWkzJ>WnOIM4$Q^bl|L zfB-#M_a1br$8BdlLVzA3tsZco2OQ`D0eZ0OJw#eP?t3{?8N41WdJmCSkGqE>inn@* zw0fwq^th_A^blk9P+jS9Kgf{}F?-B6Fn^f&X69~Yn?M2m402X`WHBAObt=_5BsY?m z%E)s)pB0=FAdlXeN1l%nJLW#;q9Tu0R_93i!-210h@jWi`wH*3vkiHKB!RC`7#i6A zMpn5(Qn{SZaH!n(f9*bOztQlcfgwYk%a2vgdcpf%b#Ae5Tz&dy`}?+UV3ljzG^<=& z8CJP>lwg%p&G!GY`}j89dfS)8`lHJg!gPTxU7$)Ac+v%)bm3!kfht{~N*8$21)g-_ zV|0NkU7$)AsM3Xx(FL}2fht{~N*CTm7v4n|*wO{Ibm3iex$UfE2eV>^E>NWl@1l$R zO&8eG1-5jN#pxnu=ptt50$aMkmM(HRU0_QW*wO{IbdkmBB7f5b!gT2ZLJ%NF|p;po3*9tGU#8fIxq52y~rEMGI@) z3i*g8TdDjWjamOkQU6rP(&d)nlKUkU#9!JSahzY$0r*SHJZZmy`6^~vzF*P}_)Dje zeVgn)`lC{nNbA$O^f~2YaeZd)oWQ>7oq7AZ)wtyTZ(F?ybupJ5RC4B<7ZSl+Y-DI9kDH8c-%>LA2D=uajQ-sAHFV6=j*YyGZe)`C1@id|{40AmD%2g6~9|{t=zQ1;75GB4jwct#lZz7{#_{Lkcye((xj6N>IG$V_A1;m$7srQ- z6B)+w;o|skaU#PwK3tp(QJlyy?(Vef9LI-?3(H$9s$8 zy~T;9;?&^c)ZpUyaB+ONI8kC8PcDup7pEQs*MIm4Vn zGP#`fJ77kxWM*pb-l7=s5yPC`ZQ&D&TLE+W?TQI=)KU4YZSu5~weW1y5NCnUnl$vY zr?WTNtDCH&_a^64*46vzKF_**KiIdwuea~X9h#s1*$Zng^gXru)YWxsPsN|SFZ1K4 zy#H<8@#+bF;0K!T{El&3HXFy~1>)2CC&vEi&iD2Gr0-LGL#*a$Tg@|9J9lVhqqg7R zC|>jZ<)ot;kDuWz>`dzirTW3Aej?3&@Ts48vmcb|2cP;urha0~evql3=&~PV>Ia$n zi81@Zr+)HR{h(AoDAiA-*$+zf6Jz#+QvIM*zuRsr><6p*-46D({(i8kAFS#JtNOvJ zezI8opj1DRW(8ANcuf6vB#($G@HltQMMXrdtPV}I9R?ng zc;Ia05piQhtr#Q8XBM!@RmCA!Kq2?#Jcpc>(5~kjnhKFn9CE=!5kZuC!Z7ek;E+>3 zOB`};2@W|2OmXmh9FWDq^Krlz2Yhir76)W;Ko$p|#{pj)d>#jUaljV`d?DbdN-LC8 zTeYpSR`}Q$oD*n;-kH~mt;QiIls6xsK!!;Vi>W1l%+3g2`O$7(%B=-t-yTW$Iw@Ci zis45WKar(3%-K4*7+F49dW~iO2Qily?3ZRrRAy!)gWM`&xQe&1>TI)5SVdx1iGEj! zepiWmSINk%I?bH(M&>s$3%ORgev;DakY4|T)?Qhr_4&DT0-4r3^D@2F802=^>T@z3 zM##QF_{ukWuHUOb+9bM=J}&3G?lVCylx2V4aQi@Ux6>Ua(VZsIx>8#sUenZC^Dr1I9! z+q?adm&%Zntr(5<&ipy=AzsdX&PDZ6v@(|~9{el(@UN=Y97b)*Hu^(HsJX7^k;~D@ zm0*!8B$3NYb(wtR!QGY~D!}P)n^fPrrKGymE|sLZ&Q|><+a!^?(w=P^rKNg3i(Dls z--VR#!Y|o{N3x4pXBV=yi!978e34y5IlJ&ecHw{QBEH#0e6veSLpJrZl83JUN&ib_ z+?Gb=&Ixc^@61d8b-srbe$GXeeyz;q&S=%)@X@nS`iuSX_uGkv5~_O$Ar>0bF& ziE?~YT4C;-K)?0QyncVoEjs6->bF)_hvaG18aQ00joQy!H{Dl%g!ZmvPiy!{t|_^7 z$K@WNvcvwq>K*o?L{Fnt}=neohR?+h_pQHKe62l)L`8U-Gj;++^#0k znH!UoJj^ia)6WnI zY`MWmxY|#E0SP?h1W1qo2@>S&68OmpGIt5Qx{c)GQNJ0}|9M6I25dR09(34pt()Phb}l)BzII0TQlcG(jC8LCrEj%`!nXAVJMC zK^-7L9UwuqFF_q3LEl+|nq`7IK!Q3zf;vEgYGr~tK!R#zg3BWv*Qn&@O9piBEBpEK zJaXp*D57`fQRFkMKX=YWMG>v64oTLk!*RYSSLX?z{UH?jfb9xJL^7ENk?QE=%r__` zlgmW`>Ub#S8ywhwz3&TZ!-ZBBW>fY5`(q|J8#eZRL~i;w)cf zXFwR_$G9O5>Z{gD;^6+UG~?so1BQb)+J%-MWs=}N;#^m7bvamOY7dTI_c{CfWzH!) z?1ksw`qi%%9xu0lNAQcD-~E$YzV?OuS>Lo>;o$!=xl*Q0lB-T7&o+(CGyS~hSIQGN zRDmUKsDLAG$Qa@tGJd#gUpGHo)UHApQ-3Vj7Z2Pgf_?GB>59G8wrgz1r*VpmHau+zBdog36ts zawmA)NhID0Dt8izcY@8GpmL|%&gbl4Ry^M6Uc)Spp%YZ@Bp&Z167K|+J3-}6P`MLS z?gW)PLFG67M7u?*x@QiN`zP@#zGWJ3-}6@VFB^?xZiT z6Flw&k2}HRPVl&sj=WCyldQatS^RLF@c4AX;L{0%PpA8b9RCcn?pmjN3-hhapJo0W zbBg(on58hCF!*%BSXZ)5%%vzXyJVesj6|D64=Gm9Ut z6CNMchSuAY(sn>PD_spd*IP^1-St1_&I#;*-kG-p&%tMuJEs7tw3KbEN1u@&h3I4p zD1A-=B5f;kP9X|uJ=@?gsz;CVe=XEI-%jf9InHnAejVC@T^o)ZEIJ~qD$7vB0~f&j zCW+wk_8}-~TG4F)T+6%MrtJ#IPJO zEJqB>5yNuCupBWgM-0mm!*ay195F0M49gM2a>TG4F)T;SZMXX#!=I1g&&RMFG5q-$ zmLrDch+#QmSdJK$BZlROVL4)0ju@6BhUJK1Ibv9j7?vZ3<%nT9VpxtCmLrDch+#Qm zSdJK$BZlROVL4)0ju@6BhUJK1Ibv9j7?vZ3<%nT9VsvrGV1SEZIbv9j7?vZ3<%ofp zF&N-tSdJLnZ!x&vVy-Ml3YwtSW74B zoR8bj(9#qz#{{-!(^PL*8_`Csuea?tn^GzoIUFWsg1q97%-X!&?%vjkM&55%P}XLj zS(~VBws@z*HqSPVuzJ3}Po|jb?XC-8i2CcQnBGQM(Fl?~Vv)P!jF6=qAwM}nc74QA zMQ(%~`v^Jq5#omt?!yRKn-Qm#bJQU-;wTd^;;2Jr#Q7~|^;eDH>x}SiOe4-aIMU86 z$sBRs$-I;KUCi%hmOnJ&s7^fMypLIOJL0HAX2iDjnqO@{jP8x@$<=&DxqcX}Eq6|U z1$t*53!+$#+&LE&3$(I2BuuLg$D4zleD*>2#vdUTC|1fJ*<-t=`BK)f47PW-y((Ku z4|O}&8WVbw`^!8De2Ax1+HLrr*%(mQ@Xv=R{a6nq}$tV^K8=ybvx{g zkxn~%%6)t4($K^!lVDtvQJto^+(qC+X2T=}50n+IFEjt81=nU0G-Sm?}6Y z&{@4Rud^QhU+!}*s?KUi&b#l5>l&$Qkq zA1Kq&wr6*!xW3;0*!1@D=Xu+83G=*-lA#+#`$wrdjw0!!#J1|Fahy>+-cj^s6eJi0 z2}VJJQ7rr@crXeQjDiHCAi*dYFbW2Yf&rsoz^J2+xKXr!6x%+E6puRX9PeP3RUZWd zM!|qlIxa>XS@lt@`l$0>_GQ&a9a*qZIypuiS)oy9FY`X;1I&k*l`kKq#$`_tv;QGx zkNF1X4>RA)+|6tgS4TgCNTJ5_ri)Q9Ht#PSws#x$jRfiI`Pms8-&DgMqWQ05f) zateGo#TriGW1IqIPJuF~@G(w-GN+s!wy;yg4yVAEQ}`ICta72_LYY&b%qe1rQ;tyP z6tTl8Q05dUa|)C>MHlHQM<{d35z3r$B-y7N#l@$GuYl@^A|D}G z{)jBSKFL2)Iv3t$zrXw$-|U~{itA_I!%_F0KSG~J^{M<3)i(@fHpBP^5ZN09L{)IV z?cH5S{uW}I0h;l0~LNUwZnPN5@HXvY-z zJq3PGVI!u99jEZ{rjV2=EZ-D&aSGpV3a@SouWkyjZi=XJ3h!tNk7xpM-0rFZ6$;Sb%S zb1rIrN-L|&d23p^##{U!w&u`R+nAry)%S zyO8=VM41C+zENb)-s_8E#lJI@sWHE8E#|j*uxTDtn#Xd_gG%%0*gV)Y4=T-rNAtv* z^Wf1uQaTSF&4Wkt#G3P<(mWZhd9Z07Y?>$HoCllci8bfJrg^Yw-f1@po(G}k$!*Vr zQ}ZCyJP0)pLd}Cv^W?SW!KQg4&Uqrvc@SzIjhZLooCl%iL8y7KX&!8v2b<=JJLk!9 z&4W<$Sebd}M%E*ons=n7^UhJ`k1+Qzf0S9B8}oc~*F1fG^L!iZywl6^81wHj_c6zr z6U=|W{Ap(OV9nFjG;e#=VPe0X_w0EwQR`oiiT!pYkBOHy^P5&*>@DetJSKmHD5(la z{)n;xhKT~Te4S1FafW=t#rz}a_M#XYi39RvS=Z&+v8;D%-(G!}QeiY84!8gegUs3E zhK5%H2b?lo;(&Ww2@bfsL6^JneC`Hg?ndJ725IgFY3>GN?gnG-24n8V=eZlCxf`G7 zZjk0~kmhcX=5B6sHPM8!Y^%0a_8I(~LUA;qcjonDt8u`++g2~xha78Nq?co+8s9CVO^SZVj@ilQ352p=rn-h7|BlH_@oKr*4d5q;ac*E zEyc3cSav3oVoTbwUGMFly2qXID6FN>Hq8qTc87x*qRbHF3`w2g#|+5MfV=>CLGpqZ z9bW9=MMgUB|F^IRED|6=If=foMtBG;E`UpGJ`!f_8M8XevcUacw zw8~Ovw)It(0sAhi#i(c@FmVasY!XMMMQNS}4BBle-Kv_7w8fGe-x7x~1CcWk>*MXcr`6_|_s z#f$joi(I>l#2y#PaxQWnmH2A?U-W<2Snu!V^Sr)V?=0wj3zOQbpL1QS7CJM-_2IPh z!qG3Cvm1|ls}`;HIO+XytKdZu`6~5WY0bAQj@Ql4l=}vZ2ZP?|MBjj6zj~efc5|$- z(>0RjKVUWHQTwnbPo*wme`<5*-qy~vuH}9!H`Tf^LsVsRt?o38bkm)Hk>7S_U!=?4 zsTajp?(B=I(EpANxw9{td~>H>l+%@;efbl9+km_m*@(Oksp!C+fNAEr=32cIFfHtn z2X^OR>{F~vKb>w_r8BO&SGq?IW|ixoX+~%Dn0!4_?<`pMBgS*gb+v4r*)}vzXYFpf zf7%L`y*~HW)ps^ozdpy>x{S8~aUu_}xwjpfE2Q2<>~Fhv+5^_lxLQ~%g>nzNi)r&2 z_s^}Z%Uo`r8CT6u$kr`^x-XKq^#=PoVjtRETX$z%UG}$fQ?8rawsh|Qk!H0f4;21OQLY6j(g_RG#M+sC!q zuY%(A5R{lneAJ7w82n(5GAge-`Kh zEYPQ1K${nsK3kwqxj+|SfiA!TU4RAplnZnL7U-xgU<|TyZ5z$f?6bdr&iav!qkP33 ztHb=YSCTh4{JH-vB?ow-&1MZXd`b6wQ zn>gV1dN|->WjWy9L66@-kKe&}z5_5zr$x&qNA#4ZeCG$qC~Hb>YWAu zeIr#Tb!JFro zEWP$}z}u%z|8D7UT-? z-xcD&E6jpiAqu?0EXWmRL9P%5ULgv+LKJv~S&%DurYl5&SC|F4;?pe16=v41FcETv zZ>PKB`x^WIEAku2Zz3N-K8pOmkXGO;^wWtZ^-R6fJM5#%0jI0s-PUveXsYIS$N}fL zI}6=qIpA8W9B@Cd_au_Paa-s3ao2yo-)ukRpFbG5qwS*ohSiI{U$p&l`**Io-@f`U zZR+}z{>{GCS>5)wOP24v^IT+``@Ro1;DGzEhy(6J%K`WQS`N4`{7yOGzF`K_jmm zgvloelTQ#PpCC*=L8DkTXjF*{8s&3AQ;$@QC`fH9Xc~Af+z3*!4jR>bgGLcU(AHE zBKINXm4h((1YztihAg>)u|n$5lDt-0Fm1myONcBh7O*?Gc760`_viIc{DR3%kyC zwSU1u-dA7S|HHq1^y|((C)3jh<@*|L^?BMx%JL5?`c5eGTqAV(bJh=Uw)kRuLq#6gZY$PouQ;vh#HPN7ILHwPIpQEk+z2`1AV(bJh#MhC+z2`1AV=H?IpRjh5eGTqM#vEdIpQEk z91gfR$PouQ;vh#HPN7ILHwPIpQEk9OQ_D9C45% z4sygnjyT8>2RY&(M;zpcgB)>?BMt{#91gfR9B^?s;Noz=#o>U9!vPnE11=5+TpSL# zI2>?sIN;)Nz{TN!i^BmIhXXDS2V5KuxH!lWhXXDS2V5KuxHueeadV2RcN%#H`3mw? z^Sj6=|@uxqB4R6!v_}K6R0%xX0#T%{6hrwTf11E#FL)18(iS zjF$uM^=sgOJ6{n8+!(dWF>GgyD&-he$}#GbW7OHl=$?&HZ6BkCJVv#Bj2g-qHIy-G zC}Y%6#;Bo;Q9~J{hB8JEZH!9F7?qSUDk)>W2CHFXR8q#Mq>NEX8KaUiMkQs8O3E0W zv@t3vV^mVcsHBXctU?lPTbqvw*mqPp;9SdBuHja{cX^J}wNUGpjjoNKe*Oi{6>W3wKt#wa(o+bRc~>O2wq(3ZOA z;T>ARuPiUT1Qogotbc;8;{-lnf~x%lo?wDb`UL)90#7i3Cz!w!On~qc z_=5>N!33UQ0#7i3517CQOyC11@BtG{$xLAV6JYxUK41b=pTPPjK=lcHzyv;E0#u&> z)h9sp3A!W`p!x*!F%$GhCP1MHx+D|yM<$q$nP5IJ@-{P;J7LU@t^WfE1#!TRn+<(4+mVUeYLh8Wp}M#$=X`wfKw(G z$zS!DAf98ySfH!eYZV+EHh?g0} zzYOA82JtL|L>hzmmqGl?Af9Cq&oW4)F^GQ|#J>#UUk3R*gLs)i{L3KzWsq|iB*qxT z%M9XW28l5S@iK!%8iRP5LHx@gF~%TMc!PMELA=Z$xx*k{W{})r5HB-`ml?#%4B}-5 z@iK#WnL)a+gY;hq@il{72(JgxF4>HF60#Y^XH^b3T?1XG?bNxpapkqo-Bc~pR`4=^ z?(AUSHl9D?*`q$5^)g%KfRlfbBdUZ0uC>Ymr@4tp{<^yyaGx&20k;)~E%gF_if{NS zpYFAx(w!ll%aVQE$veueVNri^^_cwJs@|!;;CyGpEx`eYZaUL>RSr05Q^Y>B6|{6c z2i%Jw){8{PFM?Yyf?F@*rC&s|UIe|=xpZ_!KR24D*56*VkBznRE`5x9OkOMX&Vp9n z3LJ2)Ru%I)$pp3cy9TQqaQ~`4;a%IVzW>-qk&pgi+|H2x$~Mja>F1K?ewJ$c#ocyg zMa{)?2W@Zhm*-lq!u@|PYF}x_r1k0tKQI5g0tejBKNbgE4jai~BROm&hnD8BksQ{M zBeu)ozjMTPIdaDw5nhh?Cr50Tqc)Wzw#yOK<%sHXM0Gi`#vD;yj)*Bo)|exz%Ms7z zi05)-jX9#a98q14s4hoTmm{jn5!L00Epp_JIpVn-@m!ACx*St=Ii~7zM0Gi$x*Qo~ zj@T~8+KL<*WRBc1NA8$oo-QXt=8EX&MxNoT_V+)wRm_b&gQ}~m$K*YO-dXSrw+{zg z>()5nTB{sz4_i%%*oQXFoPA(D#RtC5fe!{BvacSpuO9M!ukDw<@3%$TI(&c87Ha!; zTgSbU9}N8K)q+3j_=k`F@%_kJkMx^e=k;%P+U>oz@7ehYoy`aKY(BipcS_GKZ@;Z- zH`)J#rodFm{=AiLh1;4?ep|#hE#j3HLGDGo(jqpth;LfND=p%W7Rfai@kfh%-Xi{J z5r4EuuDOU;TBM@2h;LfNH!YHJF5;UO$u$@8O^f)ZMKaDsJk%o9twqj%5f8P<`7h$3 z7V%Jv)U_7zO^alli)5UOc&J4@)FK(@A|7fH54DJITEsUk;+q!9I~S>OE#jdTx&MpI z{Vw9C7O8P9!U4C)#P6c->-GvRGA*>|)5Py09B_+pz%9Z7w+IK^qE8%fi@xt7+mMeT z{|fmy^7}|}z%AN)C8@2F82$-+T$KaPt=UVaa zo|xx6p5{FM>pY(3Jf7w}o<@@^U)#sV*;}c)j^0_&*&At6@!0R;tKUU0-=z-oE)|$}@zU?& zpWh_{d6(GZU9y~aIgd*8{?qozDhFKA+}j!sxYhy(TuIFrjnvwi)+z_w+L_k19B}2P zS~up2s%);+oraP2yAv?-+wSbk-8`4Qx>GOe-@3Cenys6_hTPc~u|m01FY1h!pMCig ze%pY&7ukrs5BWLd{m5pd)}nbQV6>vZI|pNTfG+yEwHa4c8mk;|ZtktC?`%c3F5@lC zxY}16&&okBmA7_xwN%I^+QqrH^Sq(q_T_*pH|4syZOdZaD&P+LeEpp3Ai2yS7BNWv zQhxeGcJ9ug$iltTC;Dvf^hq6iWbNJ=6s)8>@b4dz>Hm z3O&oMbHL3K6VGD*vqZ+T==UsMU=|CRB|e^|mN83|JWCchORPLgtUOCCV;0{sOT;`& zM_`s-z%0FhS^AW-^a5t-Q_j*0n57pmOBZ04`u{9_%2~PqvvdJw=>p8s1(>BzIZK~% zmR`Uteacz70JC%fX6aMT(gm1h`fQdyDtoj^r!#S+_99Dgfv#G>3DyzXO zf>^B%;D)SW0XU%|}lsCO3fMygKg%(h;gR1eiwC%qhSXsg2kx69># z`DGq^+-*GsD7f?daeq;v#o#>D_GbHwzYz7tzcU#*wzZR zwE|MCfD|hr#R`$%3K+2hMy&7`R+t4@A^uw-{##)dWQF)|g;|gl;=dK*zZGADJ((5G zaD^yvg(z@^_-}1gsdBKaG)bq+Xp{pW9o1MY(j zIN&}g;(+_Wa=`tQ<$(L*@00`Xi`M(v@>70mF?!wtlTV8glTV9L^wMJFA6krRb}caZ zv>3%AEk-d^i_sbl=R1O0jOy+!M!o+QBhS)eRPk#us>ij!DdR&W9=GS6WcW*IYM1BdW zx_gV+iQI)0lTV8YBDK1@#fXWk#XN`<2V9HM1Xl|yoLbD6c^*MVk;=JSVDf2!$)^P- zpB9*WT43^Nfyt)@CZ86Vd|F`gX@SY71ty;sn0#7b@@av|rv)aT7MOfmVDf2!$)^P- zpBA&9zk2|A5P1msB=RZbVdN3y)5sqppFuv0Jc>Mq{1NgwW{uucp zQXFtCQWh{;KR2pQykvi0<$!am6RO-go4ZGvSJ)#AR|M?kfOFiuDi(H~t(W!9`)Vx* zob$#i2VDLN-%j|jo&zrO8{>fUB1a75h=Ck2kRt|i#6XT1$PoiMVjxEhPK6m}y{-kRt|i#6XT1 z$PoiMVjxEhPK6 z7|0O=IbtA33=X)M5pu-ffQ!Ka7lQ*X1_xXW4!9T`a4|UGVsOC4;DC$40T+V;9_vV#Xyc29B?r>;9_vV#o&O8nNys@Y2+E?E67)oXOZWSR#b#E=k0M- z4mcNAq`}VS?omWj*z+y>)J2+NUKtlMt_5vGE46lBrcw^LzqdS5pV@XZ@k9me6`Zn< zppAvZH)c2QY-gBC$}p9bVQMJDR8NNK zo()q&8K&AkOtpQO8p<#=lwoQp!_-iQsi6#0Lm8%qGE5I`m`chpm6TyBDZ{=7dku!E zqzqF@8K#mlOeJNQO3E;mlwmq)!&Fj+siX{3Ng38fTx0o_en+D2O_c-AwS47D&Za$@ z9kP}$V_lt(*=1jC*jLv9>p9@cun9l#U~7Z3Ip3{zyKumjn|#}d15UQAJbUBWm=w00 z;>Z-XoWhnrP?UDeO9hMW^s|DJ(ighdhN{r%*Hff3$6FrcGIVl>^STS#PGOSktjt4_0H88{4g@ zo7Q6T9&4VZ=Gt0!x`yl6?LS&f{$Dp0Cdce`5+)zAc>Ho6lU3)5*oU@K9B}vFz#MRw zsnEIKj=J6c58Uray@Thf%3Y?D?tWjY>T#Fx1efsy?l-0W9{W|5yNoBej3>B^54emE zxQq{Qzav%kIPbTk-ou^-WFxW(c^^_3a~V{>460uS)i2W}xeTgbWTIs>@x}|Pidx?zM^cCv?5njIg59;A18!GI4!AONwXLl?J>SXtzV$yR ztpE8mr&nv<^|cgz!)^YgOa5rc?`=6`OKByK@a~Mb#~(O;-20o-uTJH67x##?OY=tZ zKbp-xocBM<#3J^gO&oCF@o>O>avcZUom=LByR!@jTuliMxbN7izwY>d=6s4d;QH`2 zeatrW(G~2&v-A;Z^bu+F5oz?{U;4-$`iM08h&1|$H2Ux_efXC?{!Slvun+&zM~uBGzPkvsI^W%|e+`tUM+ zc$q%DOdnpR4=>Y)m+7Mm+eiPk4`0*AHStC-+9jJ&WvR*mSFG>4PS>3SPX0xXs1gpi zT_1-7?ibb`)-DFMtt||wdv?-$7ZnuJ# zuIGR|4q_cAH$Dz-9S66LlOZ2RvyOva4yb!Qdue7u{q05j*jOv?(y6(}as+2S)#fuQC*hYF-ts`C7#PNTbE_3F3VJ1mZ&aERF@@# z%o5vWiORENkXdraEV*NrdAcljv=YzoReNNW1J2D6)d_Vr?TOl_Hb;c>ttd;}8VB62 zDhJ%d_BuwK%X%Adz|G;C=I}~$Aomd=@~@DO zBfpOn2i%;k4oGUN#3w#skE?RPxjs?Th|Z=x>bF~;=;45qi&MH<0SDZ!0#{axhXXFO z)3)6jitG2cF9)0|T;hPME5QMG2Jdo)$ma|`<_tQ022XPaPjdzza|R!C1|M^VnCA?h z<_s~<89dDyJk1$A%^7ZTCHA2zTa^RO!vR;M*G_Ixjsq^VtAw84rW|mp(X8iyJB5ay zLc>p?;iu5>Q)u`pH2f4AehLjgg@&I(!%v~%r@+!v==rINwOYOE%~!0crZW^ahI)-ITHalL#6Rk_O7bZ z_#gK1Yx_`nuegR&nltNzvK(-4@d@rKOLaQmA|iCxSE{o47P|bFeO6hdqI1-_ZN09e zcNTQ^Mp|X5Gu!$qOU*{vxC9j~H1zaRk;yKp@>&kKT~!V^UF(Q_Xe+JHYdPS`>-XE} z_uF{vxAE0)qnB@EHE&aac^fbNHvai-e8Jnq9&eN7yv=!35`n09TIGOKJl<-rg!KNn zd~=cF>veg}7md`~`I#yQ+}fGewH$Eerdl`ViK=X_)t!cs_FpE(@y@q#b;d7K#Vj@ZqP1w3sT5rH-OKYv29hzHRHDz}>&&71Q%f4Da<634` z<@V)(D>vo3xoyj0ov60lcOCbU%k*Ipeb{#S=@Z$xJA)z%_fDVuK6{jZyVECiJeRe5 zXHYchR(=LW7G7!w<$m_d&Pz>=R63{bx9^YGaM|f6mg|Ab@2nn^?>6e4x}LWi2b^Q1 zo7nM|IN)}NinFhu+3f4*+gyIan<4v(S}joa^_bP8WA2eX4n)|s360VwSH0DH3eZJLO9nsc8fE}llar||*P*vB-{@idi;X=3DQ za=>Xmf0{^nn$MpG<)?|4r|Abw(+QZS6EF?FPtysQrb{_ZCt#XRz%bgBrJSZqIZY>En(IDIq&ZCwV45!FG(CW6X3wVSQclwYn5ITNO%Gt2 z9>BCOVz0O>9(^&Ostok(B?rHS(H1>QNdp?alpT?d~Q<*%CJ)b6CIE_7@ z#-2}eHkH^$Wwm!j4r^^g?=0BHt-$>zRi@g$yUP7mT$vR2Tgb!x_SLf7Z?B=puc61U zp&ze-POpJZuc6Jaq0O(MQB z!~M3~<$mLdTas~W>!I72`z>@sbHB-+G z1}T<7ie->unV4@Gj93OEmiddz%z!Kt`7IOqEi(hMOysxB49GH(-!hTkvai9O=Q8o% zGV$Ls@!v9$-!f~PmWlk9nf_QN@>?eITV@7inHi8}BEMxKzh!1XmWltCnE_d524tD| zZ<+XSnfPy+_-`4sU1pwYnHi8}WNl+;1(vQ|`AG5BFQMQI^*XgHN+jrq*l} zy)+y7hi0Qyrp++;G#kYt%|vr&Jn*{J8=Y~)#*jk5e^qdHtO3_i_9 zIM57(PcsZY%|`Y1W}^yRvr#_RY_!g*83vzb7<`&d1AFd8YQ<@@QLVSxC}L3xK zWq!>@_4a1-MWpPonXIT+QY|q-?d>XmYFBD1U4=Uq(id zQRF`4SC9`OA4Yx+`E}$skl#c;f_xMyFVYNyPcsZY%`o^h!{E~lgHJOIKFu)rG{fN2 z41-Uz+0T0qAP*uBA)iD(g*=Qrf_xhJL*z5aXOTyd$B;ilK8JiB`2y00#r8b^4k_-p zW_Wy>%}JhH0Y>ZRM%9Uz?C-1GZ!Qk_b-CEwJ<>d9(;n%JkipCS=D2y)JMH?~)xHG> zd0(yNeskWK?`ODi@}4q`9j&1UJXO$twpGyAtqb@APVZ)@f}Xc$sw(Kbb!B3KlIN05 zMC?P`?Sv2Ox!+Fx#<<_S$PooOq98{Ub|5 zw(*3|mqxSGR8rDZQqt5=(o|2<^v%-LP|{S}(^T8jpnjSfN}3uZ<0BFWp8`>ou>+eX}PvSne9 z+YjGipZ`Ah>j&5`PklW+@8QTEY`F(p?x8B$gGKjH745;Ud$8ypEV_p(Uk`tw2fOaU zu6wA*_F&yTSa%QB-Gg=aVBI}fcMo>mgI)LdWYImWkL$srd+3e#VAnmIuKqvTwl>Rl zzkNrQ`^~jkZ>FeN)1tLwgdVGX^t&6|ttgw;&aPIu-!9%Wc{RNB{$p29Y`gmT8<_iT zke-P9t*G0r7P#Mys@&H7hEzqf?)Rjs9yf?57{n8}-;k=Roc9}26-5r>0|xN{gZKdV zyHQn-^L{I;xZegr^+BxP{Z`cb*e{G31l0#Y^+8a5kS@s}s6NO%#~}TYLFQuy>5>f6 z9~opaW{}C4K{_LYRN4pWi43wXcF-5$uSAhwL4FnaFwzPB+^I{X(Wj>l0+Iw zB8?ftQha@pZk{Bb&{9O_+lf=s;$sLk- znIySG5-*d)%OvqKNh~3Wmr3Gfl5}B{^k0+snk0A08@*_kY(_l^$Af5(`V_66J@?yJ z%CI-`GU_IX5l}w5yq8h$V)dB3m(e>5US=Ovs?}qztC!K4ZR5)8tldr3GHrzl#h*Jn z*ys2i^+cRaen)*g>t*CF1FRl@zYyCnBp znW>RIt={^?t;_xPhh@0mw!*CSNqhH>qu0l|rCu8Z&`oDLuN3#&o-*r(Ll1h_4Zmx9HuqQ$Q_D5I8G1I-9QACpEjm9ynn?b+%l-C; zzV+O1&wyCZSnuKUJp*n%18zM-hWreg^$h5x-lyY1^>d?srOrp^v9VSaQrlgcTilTTPn z`mudTzl3NJ`_NX|YKm0bFYdPdZ`Zh*qQL!j?qhMkWw4P9|A!1Vl0i!|*hmKJ$Y609 z{C9@fE<^5^A;QZL|77qf8SY|+*e*jN3Q08REGN zm7@$%U52PGLsXX`s>=}7Wr*rB#1;HA7u%2H!M8 z#yLaAIfI9q!J=l!IA`!sGkB;OeA5iRX$IdkL*6+!2LGEw9pI_zcWny&M@&i!^H0l+;1~*zs#uiVT1rohV+ zdELI;Z>n&K`|S@)aKF8bcX=7SdKn+{GAR5qp5|pd&CB?hm+>(#<6~YX=6M-U^D;5d z%XpfX@iZ^vXpyzgKBt#lfoMBi!zfHN{ zRHIqX{dN)!KZ%B)M8i*_;V04XlW6!!H2fqQei98oiH4sxC((1w^;YKf6(4TC zVoe>VwUMyiS%`#h9qzZhQm^LARqi)cLn8K}tu$BG`(?S`UPG_lRhDT1)aT-R$1!Iw!X?zvr#rK@p8ZIUgdt1 zDzD{!+g;^;)3uJ+hqluCyq5c|ynerle!q#weiL8)CVKfMb(lA)z`TiKf82fY$epNc-Dt)eUzqz@$uD-Js*}A*H)@c>n zSF&?EM7O$X%I+$vKiXI8XI!h?Z+0Qzuk6F&cl5QEn{wUUwq>!(0DQK}RC>-eNiLJb zB9a_ae){BY`#J6miY(kaeIh&ePM_4VN7nA0L6NnWpFxp@mzqJ5ox77L_USd+u;0Ej zVtWcs+*z&%F2A#SOuna}cj|iHZrpFXG15)!xXS%zH6vml+P2iKyvA>;`ncS0lSIUm zSpOt(@g&+ki4T~>J|>BdCqem1V&qA3z)2$INh0M*DjAd1>L!VoC+P=F(g~QP6EI1a za*|HKBwfl$Isub(0w(DJOj7-yq)RzT4`7lWz$86@NqPX2bSWq4Qcltdn50WNNu)VR z4`7l$*(5!HNoLO`=~7P81DK>nJV_5=k{-Y$cWsjUChOL=QC6$ITb29GjR6#OIh*!q zGR?;ODzz7d`&;0C+g;^;(;QL6xulLCd9Snn>eUbHum1FFZJpcCZo>Wc5?1{ZR{auI z{Sw*kOJut*Vb3pN&o5!mFJaFwQJH)Rdwz*{;U(<(CG7bn&ZZLEsI2y`$YHfAl*d-R zvw*F)0{5F#nQD8m%KcVcnH2Y1(8K-qP+9J`SJ2~E(BoIok5@paS3sv%(B@ar=2y_E zN_13}%*`w5PIQ>BT$Y@HypgJs`af;GDyiP7_10eQH?-9m^bNY)Z#;2JGVUze?acia zyrH?@WKZ&^szWO8Q{6k>3() zo0f?DmYDunBJx`z@>^mCWQiG&B_h8iBEKbOK$eLAmY4xqVg_W1_-~2$Z;AMCiTG~` zv|VDJYKa+;C1yaDm{nV15@ZSPwVSz;1IGuCVKQ|%G9 z>kd@8-*h#++jZxDbKIS+R+Z&`3s$+`v}Podzj0gV_HoyJ{&u+EIyT^b>nP%W>#*E! z|7f}2cK%Me-*#H>Ys*ggt#K6^P9z^~bQj=SaM)_l-`7$zsj3W0TwfeLX2A@V4d>Uc!X@tS25eA<| z7rx6C9Mi_h=Ven~$!KV=hpGFvb8e#Bhgu$l~2A@V4d>YMu{^9}TLF6Ii zlgOu#hml8+Pa}VbdT>$%^2 zrgQsOzh!GSpX%Ik_R2Q@4x(cD>1|hkK-}o|WgfBn^js@4AI(4igncfol`r=qM;PP? zgB)RyBMfqcL5?uU5e7NJAV(PF2!kA9kRuFogh7rl$PorP!XQT&@E*a$ho zAV(PF2pb_s7~}|p9AUWM!bZpu206kYN7zKzBjgAhAx9YQw=l>N206kYM;PP?gB)Ry zBMfqcL5?uU5e7NJAV(PF2!kA9kRuFogh7rl$PorP!XQT&?zb@9Z(+FK!f?NZ;eHFl z{T7D%Ee!Wt81A<)+;3sH-@c5@4qwNFVLHl^~8o1wHt%&nfK^(7xKRpRNPe&&5=^-)xekxft2BueIF7+eX}PvSsPG z8+$3wR*a?E=r(>zbo0EMBfGKXZfv=ms%SSB-Az@r8@uktqPwx^ZmN9U{Dp4px*NOh zrXJgkb$4Uk-B@=w*4>SDcVpe%*mXB{-Hk+Zv&!PD+;6VU zdNW1EnvTtSuo|P>*ltDHw03s2%KcW%{r0&VnES1d3Z46HsN1a;xZjC-2hZg#`sk#) z-;b(#TpymG4^QBJGped`-fu=#J+AzBqN*O}{Wer_zx9FYeOSNyZK(ILUl`K|s`r8F zeV}?DU6MXfy^qP5KKdhlpim!Ol0Nz)eN4vmF&WcGXQYpwNFP0sKGwzd`6B!kWm0|g zMEdB4^wACJvwPQN3RUhmu1Y~TvktmWuBTD`)!E!V-grS(QR{o;NDA?SeYG}2u)Dmg z`}OTK!7BHgGO>trf#H7pzK8qm&UM^xcWjya?T#|sZ+Dg8e*3dYFOM=`XL8Or&(nt_#B#1N;L>dYHPJ&1yL5z_g#z=4u z31W-{F-C$6B0-Fiz{@0vG!ovuTfNi`L6*mHSQpMUJQv?zdo-`%QB>5$B@YoaGb#AGCec{FyS`Z(Cv3 zQZMise1p17vI1w@s57K<(Oklv99nMfUGdE7F(v1oZVB!;bkmv6t8%|dn%_t1CzC^~)$+_b~+t0^q++ufG`?HX586u95cek|^{QEX%s8yUq$M$yty zY-AMc7$vqF#ea_y+l`VtjuPRG690@6+l^A28YQ+HC8`@Gsv9M$8)a3+DACa<5z{D@ zqfw%|QR2B#;<-^ON25e_qeOM1M0KM?b)!UeqeOM1M0KO&j-$j}qr`Kg%+`%ERX561 z-6&DrC{f)g8RRGt*(j?3M#&&YnW`HlcN}G&Zj?J(30{5G9$DpnbE7xS&^Vj+C?mJg z+ZygS$89J)tBCt8Sml0u*j~qob6IZ#?zbs?(-dB53gn)`D@}o{Q~0JSywVi@Xo_5O z3V$?3mN|t#n!+DVk!w!jm8Pg_PvM)U@J&->oKyIwDRRvzeA5)ZX^M<<3J*0!b!!Sg zHHC+o!b45rp{DRqQ`EJl@J&->oKs|+Q+TK;Jk%5!=M)}l3J*1fZ<@k4P2roS$UCQ~ zaZTZ&rnvu8%>7Q`r>3ZJO~L&(#l-Iv+;3A%{7x~sF~!916w?}0O#Dv4{Wb;n+Z5by zQ*ggc!TmM`_uG{3ajR=nzV9Q&{We7&HiZUO;uD{+M^?GtT%Y)PuA7ARs2X5>qKErU zE>8Zi0`9k9S?;$7EHPHY8cwVScH4d0oNrRQX!&*znVX3NTJ(MmLpy%Z=Jw7%YF33y+;5*L!Toju?{dQ437_u-KIR0G&j~!u2|UdSe9Q@a%n5wV z31XfTc$yQ$JSRAh6L^{vcpBUAvs)$hq5oBt`_04sR;1TXzFUs_ZO_gUdVZU7zo|yE zp8M^2H2irq{CPC|d9?C*H2irq{CPC|c{KcaH2irq{CPC|d9d_(^jx#Qm1(u?a`P2y z>Nu^pFU8L1%BIRhBxlt*^4wY?O^lyxecWRqi*b@>=e<`h6b#K99#fkFP$DUY@58bDj#!dA#&_{PTGtkn_YI=gD$3>sp!Kf7%{b z<$hBwsJ3GAT_rW&Qq8QJpQ&=ct(|Fgc%e3*YTcM0s5wT7tPl7VMFfhi`bz0s1fv0Bj}@wS!(v>PdKsxc`vdNc^|TP0;ZWg zT8rkLfN5cmJg_?lW1p_cBr2V8l|EOw-`w2WJF}9vbs2AAX2rgeo!gqPkt}gdmxhdDpZCe(r44^#sTY_9Bfkh;+?efznvU7I^MHcRzK9QY! zr%&qGBWw50plH&q{0xdLywnWJ{p^>Wmzo->)Q0``{SjNIar%kndf@UqtH-Wj%%(hWa)mginbKiB&uElD7ud}&(^v=Sb{LHIklpZVILU*UX&f4Gpb3^_xQF>}R%e_LeOfIWyQd!#7p!vzKhjKK|P3(R21;Po7$I z#QxN_rEcXlepA(2?zdmG{oA=OwtaY)?^LAi->n@hde%xqS-yU{UcjDiej6hu9^>rC zh>XY3?=if<7#1={d^|=iV~i+yj4W`B&mSXJ9^>=JxPN0r%wu!}#^?o%f%9V^{20A} zG5VBa^a94{1&sObwdXWO{eO%;?A zPFFqRT+$L8aIbE{0rvv7{Q|cA0=E4ES?>$z>kC-*3t06FSoI57^$S!eU%;wgz+=3C zRlk5$zrfj4VjGp!;1xlvwGF+qU>mmr2VBtQfD2VQ;67>ZZp1#cMQnV#+rt6(m9iXg zKS7Uwf*$__{rCwO^%F4aCus9e(B_};*_G(1Dw>;D)SW0X@8e6(Lf%N#N&TO;UY%4A z)p~0$2OQe!aKMFJ4mh5;r5QKMyPY}UcHht(aIz=)Q`I9C1uDkUYdu$m-`VCtig_$- z9^0D7w&t;|d2DMQ+nNU{=0S>ikYb+5Zyt=82P5YB3-io^%oG336aURq=b0z|n`ahe zp7?K`_;23VU{7YAGn^+1oF@vLC;ppfjnh2w-#k+w^TdDi#DDY5g3J@O%oG336aURK z3o=g>IL|D|JhLG4M1k`}f%8Ox^UQ+G;6hanIISIt zDL?e{_BlAOTAI9UvE@TsfWp@ z-pKFQ!{k#BlTW?TinMy8N?g5BK38wF-l`rZpL%Lr^`?P6!i{>$_g z8)bg=Ms@dk^F`#BkgB`ao1MsANX@U-n;=q^rg|eLu6m=@j`cA4)EiB3)f?rH_2$dS z2r`P?hx`iiA>_lzuOYvV{08!y$VZTmBEOCN4zdmTJ>+A^zeZ{*uO23!dYF9bVe+Xr z``Ld0c@TLB`6TiwBA-D%i#&=vhWruoIpp(5z{g zZ_M{K+&Fnp8Rm}G&;$BnS-UxNg#T=-p|4vP@CTgU%}@Nv2F~qXq>v+Igd8D|BLs4U zK#mZ|5dt|vM#vE|LXHr~5i&xKkP&i(K#q_Ra)dyR5Xcb%IYJ;u2;>NX93d0o$S6|C z5rP9Q1P5FQ4!95;a3MJ0LU6!^;D8Ik0T+S;E(8Z$2oAWA5psm!fD6F^7lH#W1P5FQ zdeAvoYdaKMG&fD6F^7lH#W1P5FQ4!95;a3MJ0LU6!^;D8Ik z0T+S;E(8Z$2oAUq$PofLLSRM+4!95;a3MJ0Lgp0ba2k0A`3mw?zrK_k$yXyyGI)A z-J^)6u;*L$sf#qlyfQ9iTnpOR?z&r)*_;DzcOGo=X!G|LZ5r&|yLr$?5v9;(kMa2) zu@8IlR16~ar?yHt;7(lw3*0LevB33kPCe*$54DsYYAHQbQF^GK^w2-+p^DN&y}gHe zdk=S_hbl@Bm75-_C_PkBdZ?oG&`ax~i`GLerH5Kd54DsYUxU30JwEAX59?}rsHODK zQR|_W(nCkBhhAC_6_p-pDLvFudg!S2*!QpX0G0OGb&qs!?&34b`GiJ(n?EM+6ZFo4 zPxz+s9CKZLg3fFkn#O78h10_*_6f?XoXzzKLcYSDR{PX?02%FShdpFpZ8#^R1J=*U zl!+)Gc(7IBq}`l|@_$$x{||dNZXO%I-(Dlx_HJF)Ig?79=X?xfn+ z$zSN?9&}>eomh7#mC{aZyb~Mm#Kt?Rly+j{o&4WBvF=Xaz4nwkvFlFkx)ZzZq*B_+ z>FWQZ&B+fdwOL*BDi@qnk1eei4REP z1Csav_d8Nmm-Bu*s{CKl*MJl%y5Ej^AJ2s`Nw7UhpCk#kC&Bh4*q#K{lk`cFOv@zc zmL%zuB$<;*GAEOyLz1L7lB741WI`s1|4q^%Nzxlh(iKV46-nANSQ{_gSLK4^suaZ5 z;{{bmt?!W|DZ~r*)!IzK?pn_U7pii>DI<&IZ$Ro_es$sr4;S2ybzE?t*fJN~C(3Za z-C2SQ?g<-LC_+>{UNMG?)jnSrzNU*Ahc0SpU3iu*B8@I0jV>aMF8oUu8AKP6Mi-Gr z7m-F6kwzE(rHjAQg_r5VzjP5}ba4({#28(~7+vHMUBnn&c$qFDjV>bIE@F%>VvH_w zhc3KK7ha}|ZfqA`ri%=s3op}!m+8XGbm3*X@G@O^nJ&7qUG!nQ@HJgr6ZeWZ(TjG; zX4IP~Fu$o^p*Xs*N70KiZD&uF3(j7O{MB%x*gto6u+Q0}-iWg)=21V-dYP?q!O6eK z5mmwk7pii>X+9_7Ty%GJee)lc;ey)=)7B^LXFi2*c#2Q=+E8h0(77zx$DO>RT#l}I zX7!ko^G~+~7aY3D+W1hF3r^Y;(QUVz%LVsGzV%#i`$4Sz)_eGT`@yaK;MRUJTfUF$HrRe)Qs}Sk=;<+K>xgjb?Lqv5$M0G<%bwfmTLqv5$M0G<%bwlKiL&RJ| z+>0S*?1q@G8)CX{h^TIesBVZ1a)^j*h&2{NWROGTjzi>*L(J6;aYrlh4AP1!7o1z4 zQb*L;v?pqx+URW!7hH(f3ePIyf(uo-;2yTuG2&d-+kgvh9N#pKR~iSo$MH(zpzk=o zX&kRKjz1bF*Br+mjgw`LLjc z<8Z-^!v!}E7u+~paN}^njl%^u4j0@wTyWz)alws~hmE6wmH5Ob?2%P2IM*kBp6e!| zJ*oy+pXlL&lZ%r-tbhwHRE`U7&n_)qEsnez8ur|#TyUyzi3{$JN^rp)!@C?K@;Qc& zIY#7j3{P_mPjd_(a||DI3?FlhnCBRt<`^;0F+9yNJk2pY%`xtCCHA2zTa^pW!v$BQ z*G_IxmJ5zW+H3UuHsyj-jb=R;+_Px-vuOCUX!x^e__JvEvuOCUX!x^e__JvEvuOCU zX!x^W>9gp$CWM^~RzEkI?N$G1^ObArIIZT<`5amAEab?y4i{WrsaNymDi>UF4W~4B z)-TI)!Tkiic2`@f)AIJU)#sl>pFU8L1%BI)s{N5t*^EW z*mv2u#LER2TIGV1DzD{&3zg)8v#z<=J3G%C8usq=PXC;;^&jz6$oB2ZGxM&mrD%?d zon=Hret*j$JM&)VnBv_L_xJeb3&CitOf(v;y|D4tQowj&*^US@e$|=qNGpq97whw#q zWWW*oQ=2>YwmBDEx#`x88KWwjZ*}Kkr2k2x9PjkY-RzflOcLcJv7#hVPLeo2i4}RL zUp~X}>WwFAP&vdWybF2scRv*DuKrKVPb@iBhG^TeJj(Nn~$Gh^MQ{Y6IM ztH22tvai<9x|Tt^2Y2qZ*|;`m*7fJs=4CcFkInn-^_9&x+dCYw58cTI`-s?wHrM9e zSyz`6uH3Zi<`%Ad>_h`UzbjIF zC)~fby?^EXyS80@|FMrEAN|9)Wx)B>37_wuelB_LXZfz>HGYHD$LE9_CN>_%{)dT> zhq0+)yudIPGEAI2Oig2$XnB}yaG02R7_=V-?T118VZ8A$as4nofnja8F#XD5dIH1rD~E|Whv^0k)2|$+ z8!*fi+A#gfVY&gsREvk{1`N}$9HtvEOlNIaj%AH!DLqrO&mLFhgmdfh^2*MpJtaBe z@DY_(HEeA<`-q;{jVXxtI_s}q{jmP(PrugI zx&4(*IN^?B+efkOquBOQvfra*zelm^qgeG(tokTceUupfC{}%xxZx;PeH5!c%DE__ z(6&+4va(vd6JvTOd-P8I1!uD7R^WsSxtwr&s+@4emCA_4z+E0rxP4_g;YxkWkk(_k z-!G)kb-!iEKCQ@qtFpOyW!;Gqy*jFQ7IgGRs#5CAwqB)FFV$9Syqs`otHTMm$K{0M ziCdy^XVY$HPPkn+G$)+wN&ZxINv%InjHTClu1deN!n}DM$R5V;Uq!{FfvC%P|v@VxqQD$8AvtD3a?Gyfm<-9W`YFd`NDfZ89FrkACPQ*ehUAzG$uSv{;}Uxj zQ@e!ix&u{CI9(0zw!T93ZF|5r?o{!SsuE}`Ff@G0*}=YTJpVJ#9!(X>&$%V4@9cl^ zhex0L%O{^Z^5pSvJ$LBI=Zf8(ty-1kgxgc)g!_1$aPB(L-wr3-r42aYE){XYU9y~T z|6n=cg1=KvxS;jEHaW>}bwWu1fbw<_qI-?nYIwQ|gXH@a4Gpfhc!R%9K&#B%E~MsI z>r4ZB|cMYk{6)v@_DE-h3|>w+$IYu^Vb|NP_Ae^ngmd1Q?`ybma+MSA;T>&PKX~t>?Wub{ z+VN;xr)3D}+_AsyBdQx>3Fua}^s%cawq3n>@u37K+$VlhoN!*`2!I>`kRt$c1VD}e z$PoZJ0w6~Kl4W zzzG+C6D|O91VD}eoNxg+;R0~N1>l4WzzG+C6D|O91VD}eoNxgn`Fe3mbTmVkE0Gx0E zbBc2~jXZ;V1^FuSEb<)Eii(itygjbU3FqR<`W!?NjkD>PZ`r3V(iHQ{xR7xzXk)wU zZc%2n_ZG5W?p$hO?7=E0obO=U2fjDkPG18j+|MfFgzL8V+2`xVdb+8lbW=;|ri#){ z{iK`zSvOUbZtCsb)Z4qMqI6S5>85hiO%7{j3QR$|Z(oHR;n~qwyeg9eyP$|EZqW&r;oa+;m zGdY{~))erl;J?p=)580D4 z(ujR%TRSJSE!=k1*ZO8#xkAH9TqU&6jGVcD0c_g&&IT%uNb3H!c;eP5zhdI>AP zgq2^y$}eH%m$33nSotNc!6jbx`SuY#UdP)6NU$j_aIVOa0^3U%Pv}nWJJ)i{6egdaQSo z`ItSTbgFX0Me^6T6gOPc4a^Ofpkn8Kd+K)kzi_`p^$wozK;DUzO(gIK3H(6Y3A!T*x+4jD z25Ws!l^ae~&*IIQeJJ)ls>eE;>w9!B3wu;0wZ2D=q~Lk%tF;+}-L;+@ZcmjPPMKN6 zxtu<6!yWQ)!`-ot8*clSx#6~#;fC8$f*bCT?E>hIyZu<7Yy4!OTtv zh}=QE(Sd*Iz`t}5X>^cDbP#WJ5N~u4Z*-7PbntgN@G>3vmkuJ04$h&2u51U9MhB5b z2UyvGm+A1`Yfr3$u51T6LA=f$;AJ}SG97rC z4!leUUD*!$u^srD4laayMXKCzdBrIDvA##Dj>$Hze9>WCalI}?IKL%sIQbVjqDr{o z_EfpyG^Z2Mjj@}{y7gbmaKmkddFzw*^Y-H#_Vd|Z8!A1=s&iSg4@EEKztiD1;f6yu zSu4M%$_*!NibyH!R?yP*+;ESBSdUx(TfUF$HrQzSbO!DTb3J6s+iZwqGc9tU$M#!xA7_q%L{k6U1@QRt1JrKa6kK4+;IKa zNIy2xkB#(W2mRPcKi1JtY}b$f?kBeECwJ^8!s{ot>nFDBr;5~1Y}Zdz*H2W}PgK`W z<*1*iuAiu`pZah=QC&arTtD$#Kb7HrqPl*fx_+X%exka5qPl*fx_)Adesaft;<Hq=DB@h!+khKx1m84*R~iAiNAOA`pzjF2X#}q{ zfrV)J82pQ)HzG;M9a|GWsf^Qlj;~c?5 zjZobh!B36gp+@jfBY3D0Jk$tvtr2|F2pQ)H8RrNdY6K58LdH3QhZ?~{jo_O`@J%E5 zrV;Ya5o%l`c&HKX{|IxyBlxKiYFs05!;LTjJOVe|2-8C&OaPBC0X)J4@CXyYBXGlw zzzsJ7H{1x^a3gTTjlc~z0yo?U+;Ags!;RSLfX_FA23Fz|pRh+(x#3)&s2LMy(;oHT ztxxoD!^y=dU9Er{ZckZmxIMdUldZVNe*1F6slp|0xc^du8}4bm%hN^V#K@3*g{`^R4V`tDtnT?(b+!cHf* za9)%32Hf0Yubm><^FRqbzfHN}RHIqX4R;s~Ka7SSM#B%IGl$Xe!)W+nH2g3cei#iu zjD{aZ!w-X{htc!H+`&q`zV7|zE7;U=TGiORR_mPwt-f`*;quOUHD9iB!xh(XN^@yl zD$5Ob0=+(gMxQ{JPvAjMkf)v?Lp^~mpFqbd(b-SgBdgqS^34HzC9H4ua>MOe<%W|g zujPi@Q{{$}{zU9UTWNh>%MDjvzfYpyC(-Yd==VwV`y~2(68%1jmp+MqK1l>}lGx)U zS8q6v;obFmmAJeZN=ofN@~8=?5&-jsdB?@&J9;?%5`JrsLJMC z-FX=4e}X6{L6qZ8zue7!S!{wRCxI2Y(=S?`mcWX<(=XzQN>C+8P{&MAD@af)NKh+C zP%Cg}VAP%VPQo}dFvWycW3O%1ym)ZsW3CCxa}<4%fkXbYK%5*m(Il6xq9X8bukkJBK2Bcc)Q=h8^Up zrKV9d^XAT^Xd<%%t1mT;av#5yrFW3)dS_DX?rXGV-3#3Vr@vTk2DU+ez&$3PS?Qg+ zs!qLNpJ}kqSC6@_^#YyQHZ+P;$_wZ2>zswn+A5rZb&Ru6PT=(>_WYygo_9gqtuRzM z;wtK1UgI}gt>uVoZ~M1%Uu^sEF5jt0+rL|D7B)LouOIN!^#xY-^IMu2IgM_liImgm zcN$-iM*Gvm%V}yGX`<#dSz(&bPlNhtK0i(ME{#`C(;-OH8%Wa|NQ3uj@IFo7GL7Y@ z!TU72o2DO-rf-?1E0CrukOt|~bOqA%Ez|TZ)ARW%$0%`h|X}SVwI&5jKjjUYTMpF#??C+}_ajs`+=6XqJk0#b^9>7FHksGl- zqSDHINshP&yft~JK5wg-Ybutv14rD?HsOdnf^8qcwvS-jN63PYkOd#Xs*hmRN3iN6 zSoINN`6F2M5u%49SoIOC`Uv;965FV(ChyEi=j-+*Yx1`ON8BElBW`b%Bd)k&8L@@M zRu4y9v@A!Qm+Md(cod8}3PyPu52d7)=%{8RH?OdlnnKe%^%tBt@D}BWLt7ovq`fXj z98cCpdABo1TAwzAk(7Np366j_iW3sPi3iY$>| z7L3S(5n29Xmi#YE{Ff#E%To2p68~k%L$btwS>nH}ufd*SmMAbw6qqFn%o6`)$^Wv% ze_5tNvc!K`;=e5Qo-DH=S>nGe@n4qNkStMPmf4Ujvmsfcz${TSxGWPQStdlXOo(Ke5XmwjlC__*)*ES$;_^G}qskGd ztKr?&uYVA`)9;WY&T)6PdR3MqZf}(%PBToA{EgcdPTgbKf6i6T0pzX+{q1nXUEF{p z?qU%~+(pX~_m<^|+w(i+h}+}gh^sZq$7^BwsWqCfuQiG-YK{Cut=WN8j9hCJi_{v$ zP_?E8sj6J9A=5XS1*m0)rPe6duQjU5)xz{sYlH)}F#XiR^iylJLao-Q9#?BVixfv( zElfYPMl14bO#|{?WD`>L_gbT>T&>XrO07}mS8G&(sx_*=*P1UOTaY`Esx{Xd&9l~; zAX2NXYmJzGYK>Mu)|x*hHh zPWVuQBkr!>6i1vFIs71pALQ_Z9Db0)4|4cH4!;p{_(2Xo$l(V${6@&(2RZy8hacqd zgB*U4!w+)!K@LC2;RiYVAcr61@PizFBjoUd9Db0)ZyMMmBjoVI5$A^^&JRbNAC5Rb9C3b-!w+)!K@LC2;RiYVAcr61@PizFki!ph_(2Xo z$l(Vw{BXqi;fV9Y5$89jIET~7GsstvuOiPP&mpa-2x-pSI)`Ev1uM zN+-3HPG5snw@zv)ovgFzq?Xc2N3D}uN+%t)PI_sbR8%^trF2qD>7=99iP9<;(YCdD z8TsxiN1W>cgnZ7XJ+1bs?TyK3S6gFy?W+y@>pEclyiAoN&h`*~Wgjj_T)Bz3jX2_D z)6#OcKdy{hnX@XU+xRJQf#(-E@&Yz}0h_)+ee?pBeS!Mu1?>9*_I&}%zCgY20)OEG zpM3%QzJPsSpjLVTE5Cr1U%<*QVC5IE@(Wn`1?>9*_I&}%zCf+?0+xM&TImJs`vT{E zZMLg?zRD5j+O9WqRP5>4t~ExF^=`ruw^!6oYiC^d*snP*USsC=vs-sQnEwJ~hvV@d z?Y!InvZ{FV%)7;GCY#*{C)qNuNp{*20T;mPQ5!XeJ#Qiqa?e>4*ey8dk zJeSYtqO%xqb|B8UEHBA=4HB=m+7KY(nXJ? ziylcAlQLc0$1dh&y6BN~(H-fcJJMzU>blIKRS|)YcW4@Ihp#kWjr2zPau-LJo6S=l zarKz|+<@LGf9LdMA0cC0J?6U3=IP9~ac%9B)$KRK5hu5@He)Es5x2L>5vR;7lE41q zh&$}zi2KAkjySuzxb1_151W0poqyW-GesGn%zSX}VB0z0r8|GQnn%3XcDL_;U%hna zr8_@r-d2Vq?v4^1afi!t#I@sV+L_sDr%Tw5XKBYO+KD&Xi8tEuFYQDc?PL<|#2f9z z8|}m!?Vv_G@kTpdrXBy%j(=$<(rBkE+fJm>PNdOJq|uI-X(y9t$IG-6X|xk*w39=$ z)0J(<%e2##ZO6;BlS#DWW!mvF?Rc4XETJ7Q(~g&Erz_h|KeioT)6QM;MlaeWn^C37 z@gUmsS^H2tUDzYfr;K|eFQe|lVe4h&qsy~msh6>OOy0}rodqwmkE+$`G1t}0=*+Go zN1XhN98o14aeJ#Aahf2C*oQWkee1JjIO4X#!1YP{d5@#lkMr4H8!C;tI+rE;xRZC3 z!(7K!^2g+@!8-@_>%2YXkGZbapfmH~9eI)$wfUd&4cqV?HkS9UoJTiVGrzaW5hrbm zXZ!g-%##-sbiC(SL zI}1Mgf9GS#8$l~|W;TjI7KAqvR9D_=rIfFbU%G4F_d4WHP9C|s%EB&=DxF2{$uFC7 zvdC9$7J1R$BB!=dYu@#>6xnFueAYi}$nR=7WP6|Mf4y!`#6AAN@#E`$Sz^bj{J!GJ zAMN_8eJG23!eX^p!K7d62Sw~d8{eEg@UK@lUS(nV;qJCPao4!YqQDV%`eSj#^TjyDJK`! z#nYas{VDI^U3lTR4TWd?!pk7;?k%j%+*{>{d)Qvbh<#`i6M@q+>KyoB@FDx^A=^QE z$oIXrU;4h^7HRA7{Y6`-?b~e~_ey@?@kbs1@XF1K?ewJsgyhe|- zcHNg&eZANAJ^P(|I-3vd*=P-zp8vajz5_dVBA*{%;clJVI@J6&fNvVWD-D3$19+tY z(02geG=Ntcz#k2eYYyO#2FNl8@J9pqqXBZw0ld-x6|Dh$(*V9{fQ)kh-!wq3Ie>2( zz&8!}8tgd@;GqVnZVhn$19+$b&VK+8HGqd2psqE5ZyF%u93bNyz(Wn-p$5n}2k=k> zc&Gt<(*V9{0N*q~-Z?;xYXA>5!2KV9BW?gcH2@wBz!5jV1n>YHaRW>M4=@2dzy$CB z6TkyZ01vw&Jer~iD?Fsw) zDo32_6F;xZ#il)~23Viy;fRxqlRvD0BW`bjORJ^8onoIfRcnM9gytPjiTv=MbLe5T51`p5{>g z9y|AXBm2msg32wl zX%(0@WnvLMv0Fahz2~7FKWKCDU;15&BklkiegF+WfQBDH!w;b02hi{XX!rp%`~Vt$ z01ZEYh9BT>AK>~O;O|!w3G4r``3g35oL2MbeC0;()L(GACASVoT;5r)=F3%%I8_@W z_Mxpbr`E-?9C1g{>!WD&QFQqz5uv-@QdPF2=<-oMzY?AOls)p-_ObQ4j^0_&*&Auq zrOwQ(tLu2HjrI^?Uj1}(wSfI;;}S1N+}>4=IH~elj<~&5jyPTGh<#`)tzpy zarFB*`h6VzK8{`<=UyJC0&^TMeH{OMoCxGNvBz<;9H+chiQa$Oo^O>SPVsoFy%N%U zFGrlC+KS0{mDGGoL9=dtrpghwcE;7=jjCkI^%CEjdeQyX)cp6Q^4+O-?rN)S&effV zk^XlP<#?xGw8p?Y_o4{Poqkarx(h4vPQQGH{i=hz(=Y1sc2O(nqE^sFt-zguxtHHI zBAbw!x9p-;&_%7Fi&}v@1Eaof7qx;?lQ8y|pp1TQZRS;#X~n=B&#v634|b2qM`Lmv{kAyb_F9vcz1zvw z)wNZ2S5X}j+Nr$NyWNhEO}LA5Zs&PJ!-KamM_jq7*UfEQcUifBW?f6qy|&x?@AI{z zpY0q|ehx+U?wv+a4CKzC$ll#)6ro`|wZT%;C|Z;1&ZPV?&o%Sb?rT8aivPt6BG1OWW9%8}tXYW9Qy%jj(_PQK#4^%ngiYt~8+b`eg;fRZr<%lcw z9W9D!-EU{n=epm~VxO*w49m|(ZeC$`qD1c$ns+wxMygio%(h;wR8Q4W zIN}~~IpTQYmTKH6?{?;h+j&EC#L1rIPnD6C=ZMRI6d8~rgXLt1|1!jX8IU3aQe;4i z3`mgyDKbQU889LPMr8Pl8S=jj@n44cFT-p|hWIZ-y(dHbmm&VkkpE?f0y9K`8KS@p z@n42@j~U{>3{xQ);=c^>Uxs>5hS`t|@n44cFT-p|hA1$@Y)FRLkPJ~^hA1#Y6qsQ) zBm>%JhypXrhGdux$uPr~VL~LsDyR$-A{jX1GE9hMm=MV@A(CN2B*TPAhAZzyOzjf3 zYjs(bBTiStyRENOecK-JJLHIS+?}mnmF0+g;Nx(_y>0vH`>aa*0srlrp`ZSeJyZ45 z|36htY`8DY{dgR4?t0MQ4oBR38*s$ESHuzbp5=)9pOz!;f!`@d+ynO7*$bK9YK)%O z7-dm4M%CLIBY#n2bd_t2qMRC-erk+jks6~|r^aZ_MvYNbuEwZuR%0{^P-Em-YK-cB zHAYpr8kl}+jBua^rk@&^erk-W@HIyDxEiA>e2vlis~VVoYK%DIYD@$2UZkpWHAeOK z8l#Az#;7V+W0d*T7*(KZjOy<-=1WL1{nVJ9NY$EajOJNuOb{7Dim9u{h$F7Xh$F7X zXrimeD1WRm;)ts;5o8p(5BU}3L&%4bUqgN!`3>YZk&hrBMaqlR!1PmNG^JMq(@zad zKQ%D@)WGyp1Jh3pOg}X+{nVKK9De|L5P1msB=RZbVdN3y)5sqppFuv0R4=^-rk@&^ zerjO)se$RI2Bx1Hn0{(t`l*2H^mX>MUEzrqY30_0y&yMjwXwkfRCYXaYH!K#nGmqY30_0y&yMjwX;Kzb01E;TBqx<<;hw>b#c~1OSX|ftdfop@f9tRuby$u%EJq!dqYlea=O#Et zmZJ`ixH>rE>fng0gCnjEj<`BF;_BdttAiu14vx4wIO6Kyh^xbL)L}X5upD(*jyfzy z9hRdG%Tb5rsKav9VL9sHh^upDIqKkut8-;J>fng0gCnjEj<`BF;_BdttAiu14vx4w zIO6KC9CcWZIxI&WmZJ{KQHSNI!*bMNGwR@otAiu14vx4w_Zj~0SDF8m`D@HyXZ{BB zNoJeMvNYec<0>3+fnAaBz?yF^S z#7(lMNwjB@T*@T5lu5EEljKh(sh>@fMVTbuK1sfPl3!wyEXpLAn@O@LlVnjQ$)ZeB zOPi#MHc2jJl3dCpxs*w#*3QBtxs*w+vza89GD$^kl3dCp^_od)X_I7BCds8tl1rJS zqBg0MnTG(stp+a})8_7bxr@TNRsBX4j<^5;>N#hcw8!s}lhS6Bt@f&9zs!C+pu!R7 zB>XcO==d{ML->1p1RQaf!}}WPpS7sEQ9_7eUbb1t>9wk3Iie`_JA00)%N73(5 zG<%eM-zfiKlw9d3`aOz%kCH1LMaxIg@=>&W6fGY`%SX}jQS^Hh{T@ZLM?t<(G<%d> z=_vX=%6Zba(zvu z?kpL*;GU}2**6I8ta?4$%F>;svL4)J^=9^{9(NWzD1Lucd0uBhfD$sBQR z5stX(0vvHqS`|RQxbpIF!uz9jK9lEe^6 zsNN=1VrU<#O<$e#K|v6*h3>=-}*oij<`!<;JV2^?-O9dC;05J4i%2o zwU(FdaRcwT#yR4UO|F^WU*U+8G$oLVTq)hi5qCcp>wd!@$GIQ7bw76Ne&Xc&k*xc% zUdn!M@C}=LI`3q^{!;5-y`=yBqCHAW<&C`0KgRDM)jK8k$6WpK-M|qiQS@ap=Q4|+ z|88%EBd+hcwdZcET7T}y`Na9tMHrbb^D2uhN8B^-h$C(R9a%s}7SNFeq;vrtSwK4$ z@a-1B?*)9j1!BhqJiG<`p9Oro1+qvB_;w3;bqjcP3wU)4WR4c_>K5>r7RV1T;MFbQ z&n@83Ef6&>;MFbQ)h*!FE#TEH;MFbQ)h*!FEf6~{;Lk1K&n?hvw?LQO0$p|scy$YS zbqhq03;1>mTotguwH6D+jtj(&3-s45NLe#paH;Dq?z7`69C1O6sGb^cXiu|kT8x;- z5x1Y$a?i@*h}-{8IO39Gi?IZWdXIFs#H*i)@-bVd>Pg=-dm)}JSuu4LCG4T`?&pYG z2Ah^arDZJlGN`nS^<4&=mO-Uu@MxJ>a~V8ZCdypq_g)5%mWef&L8WDK+sk0nGT5|C z#JLPMEfZ@lgH6j|)3Q@*XM7oiS|-E23{EYBP|G0HG6=N{LM@ZmS_Yezi8z;uIF~`F zWe{qah;tc)S_Yw(!KP)fX&G!T4aBW@XvxMeuvmf?t7c8>5(Kgs+%%nvgUFsr|E*&gL#;$wDP zg(EJHATF|#th)|41hEP_&ft3%>YO<0MbZP%F_>J z+1Bh)I-1z3j|+||cs<(nbV+57xuVy6dznM8YRSTx-sf+6dF8w8m1O_K7Z2~*9cDw{ zpWW%j7T#;3-YgfQb&e7a`(d^pM#3LP!XHM$A4b9- zM#3LP!XHM$A4b9-M#3LP!XL(#K8&2p3X~_+`t2`%1>1Z0yl{-HcV=VccMnILFVvZM zxgbZ}{xE8L2yWONJ79RO;c=>e#XQ;F<_~%rwi!IxTkThsC;PAV_;-8Q;)y5|_N-Bu zQ|kvsIpUt+6P`e#pFozM03Dy;Q=cG0eF9m2g3m7}+o&~aZKaX8P+mvx%*yQ5bk(I+ zcIj7LHrl%ko5LJ&`!gJI66Ji3xcwE5IGyW+Jv0i-b3R90aru4{`F;}leiHe961jX5 z`F;}leiD>^5`2CVEO-*%<4K|%UExt4R{xqESK)}0KOVI+A-NB8#Cf7EpL};g$u|m` z4Lz9C2sK5}YNEd6ry3xcfy{r=2BNaMrnl?d{B7Cye?g&XOxQORnH7xq_ev=EM9| z*BBJ)gt6UN89iTG-<+;-t8l~xF?hIl#n*W$akh8GUP<4rnJycG=W@jDhjyyM5hqc! zk>B&`>ADjgGDgR9?_YPHSwDAV`DB~jE5fOoIr+VB|K+oj7u9iTuIJwtdy@3M zhI>+M_hss`u4X-C?z88I7ORQZ>K_EhT;m*Zp0ZvI#QUHWZEZn;bo54_iFB>4ZINly`@#U+n#4zTc-i%IF?4x`WIXd|NN; z^(a<3zye#YKQ7=SUtskY@RTp0Qy0L33rPP3{N)SeHZI^bUmz;Hz~^7U>R;gVFJSdA z;6Y!YLU4iFzy)dp7qIsiu=f|JTV9|xaDm#u1?LW1(*^1Q7pPlapek?yOMd}Ne*sH> zfx6`d>XsL%4P2mZc>&+^0#$(v)GaSi6}Uh*+6C&C7pMwcAZvVqs=x*6mKUfBT%f{s zfpa75)F@S}lnm&%FCFbF63iUqspcLcC_q1x8u2g zTfR=$Sp;{Y$z@SFiVPn`hL0k{NBNwi*r%hss~nlsdbEzxc#*E{ETtgrX3Pi_0rjPp#T;+M|-4!I_qH$I7OWDp|&_3N+{W=v4_9MZ}$4F%$~v>-I7ts zraHSFr&#o=>xnYQ_+F>pnYFB6azn>lQ54h4s`#a}>R@d5H?m&mM}j}u_mFOS+Uf1o zp8IT5xE7?MdXIkb$Di_`?J5`he?m$5fxZOpf+1RdlF78!0 z;HuVx>pg!t9B|(+!2$RE91ghe8wcE<8wcD+|3f+8K5B?-3hIw)SKHOD)uq+0 zw6NM0K2+mNRKw&`?Sc<3-iE7dOsidG-Kt$>*{fmlsisGz+Laer?JDb54U|FW@H(}%#*EBcrdTLrd?N?sZ(%J z_*MJSCqMnbVQ-(Vxb@z6nH+GV<`;k0AVAlKZw|lso3_q>w#V}ZWnzO8a!Dr=_RzR= z4!F&09|~~5)&8P5;KG(8g5`){IU-n&2$my)<%nQ8B3O1j`X|WjP{PjtG_`;>vPFTgh;39CqMc{yozyTM511w$wOqV zIj|y)hKc?L2;Eg0!*k6 zc7PjEdu0e9rOoui9I#g<>*qS4!U31@DD(Sa0uH!h9d8%YX;~q!a#E}p<}^Be8l66k zPM=1nPm>cpjb@)F>vkIbK8=2#Mzc?o?>o(ZI8A=^H2QrS{XR{8^fX$28ZAGKmY+t; zPow3h(el&i_i6O|G@5;y{OD;k`!xB{)9CkUBu?K-3o2 zZj`gM{))OOpQm-7)kAWxAqy&c(Om~Zm68#Q2>);Mur^Ob*kalqAH#T;-GWbA@_re0^?Ah>ht^=xlpmUkQ6MOFE^3GiS7JScwuRQ;+GAVHx! zrz$@;0R~Kf0TWpI2{2#+4441|f_tXQ)=Yo_6ZFGOVB;sS@e|ni39S1BT^tisN+zh3 zOz;a$P$QY3MlwOpeS%Jy39gTwpgJ-E4o^@WnV>E*L2iA5Yo{k{1^IqMg#%7m&)jk8 zeuL^UhCKq3tlwa-@*@V@wed>U1DC`Bx9fm^Ih0qaea`UbDO2HJ;|pwt-U7v3!k-Sq z9$}F1N0C{=9vb3+I}zf5tIFqqYdF|bTsZzJH$ z2=&(y@@ON()g$;CBlsF4_!=W%%Lrb^2vNiczQzc?#t6Q~2)@P$c4GvOV+3Dg1Ycu> zHH_e8jL>&C0?v$pFeCUHBjC&kI5R>NF@mo#0>X?CMT~$mBjC&kI5R>;c7#}B1hg3e zZAQSE5pZS%oEhPo{1IxgBcRO)=Opa8XqWWmc6)f$Q0>vH#?YR-?3J{{JEm}bRFWZy z5Iz^rR;Z4VImXXc=$+YY#UV0QnPaYKwn8hrg8Xm77J*PX{BH*;{BNqvC+wjS@V`Zh z@V{LOyVgzidG{mN_w(6d9V)C1TFcA!@bhwydl@*rJuB(1uPgpBzBcHc*<=1ae9RTq z2CXdUZD5mWtH0^x?t~p?OT$;iBb#0)UWNZn(vq zOpJUO$vTYnI?Sh)BbEB!FWRHDRNlzvg{4yO%u40Ef&cA5a6S70kJ!nJA%iS$x%_Wm zGY{^E_7kZiU~|+I@3VEvgL}+uwHUu7U#bNq?4eQK6%;?}8^6V_qPY2o=DD4BrcOrJ z$>yGHwpX9(`=JwEKlkn8f6MZ}jlU!Qw^?*#mhUi&j?5yZv*^ey+A)i7Hw%u=;@iy< zH_qbW&Eo&e;@i#gE6(E8&Ek{K;?K?E&&}e`&Eg%+;?K?E&&}e`&5{+KC1RY#pPR*> zn3+|ILmJ_OK;sQ*HO&k$;}cs&f}TQ^H@ z-7L}LEOFy3apNrgbhG@T$EETZ-2M`cNsp)v!~CGJeMfKNO_rvG-Wt;&dK7EuITzf-$QoY=fiyo z`^#@~eV4ZX#kRMg=bq>DC>kE*xD8PKu?RLTf=Y{6?nO{(5$n4MHZ6imi{Q~BvF0Lp zv`Cb>2p%nhM~g(6i=fgXvF0M!vB-UIc%3K7Y7D1>*V$DSmY7vB51e+GYrbV!6k^I&o`K?6| zY7r~5NZ;=wIJHQAYmtuMMfl$q>HA%zb7&F%w?+8h7U6$eg#T?3{&!Qt%t3}HWXx1nP6CbnVD*SH&CVoh#jiEh?j13b*{BMFd;b9s4 zZwInGS$X_#aV5xdG4a~ve^Z7_{BMy0{BK7n;UcpnnphlKYb;eAMW9}?b&g!dugeb~}I z(lPRT^l`y4e&$B+%*M#?9{x8UtTXX)h5s!#hf|m@>-$Cd-;N^Jg|4d9ryeCjJ&G(J zm57xkv$xuD75+E*C8}GPUlQhjJCNajlPKr&za6OXze#=)_RuIS&-wgs#pU}L@_h`% zJ_c4F11FD>hdG9P9|NV2fzQYAK#t*i93#p(#yZOJ&{a3B@V`m!qjn}F_hJ4wPqgKe z?=C3$x?V58cc#MsmfzpHk^ik&hihqWsPcMTgI*ZP{{&u6xbx)}_Df?Y@Ny>5q6xg5 z3H`YAn1Z=;IFFd zPLL}o)CFUI%(G+V_PZ)G-EBz~uO?CKs@psD4}xQSZ%psZdShK~=$I>7N7KrxIG+Sj5|| ztvwJ8-`D)xR_)NWZ=0uIPFGK=+HtqZ&>?#$nviTK?4gn0@0#U*E7tLPaUGY`DHc!% ziu%`n)!)|t_QnY77(qTqIHq_Xiu66)jiS6`p*|E@!$N&1lA~}pimpTrx>0J`);Sp= zD;RX6DBn}48^w0BZarUG|Eqor{RX9VxmF(>9OLV<-kH_qLvF3T&Kz?^by+K`LZVob zKY71?t}g40dn3^0oxu+KW>w@-&3=2zne9U3^+oi#!vAJxGU1=iOR8R8=H09EYXz6i z|2Bt@JO>KQ;VI7{-*aHW9MV6BzdT27V-Bx*j;L@B-+2zJKZn(y17YSsXvg@ra3JA9F~5Ls=yp|%Q@eN zJ?E$j%u%?)A))plz=5mfPH$ znbjk>jcee=nOC07mY2QM=jUhK_0Fu!-pv{^$6QgrP%Cpe>soa%yp92_IY4h+h2jnE zxzjccy~F%)dgbva1?+I}Eam5Iid~l+-M!cNld|&sXC}`#+fVsE{_SRv=U!W>vfxewU-%g-uCtPXT z2{i2lQhvgfrkz03PPme`6RuGGge#mn0mH-zSO4LJtN(cdhKUod@<1nCMT93@$=(SV zCQi8G0zcs@19ZZzWxj)1>pbB~E>F11KAdpxVwTr&!d3Kh!d33)g!>U@aTA?zm4!dy zMw!)1b;8}t9AnhnQQK?`6J^xs|z%`7rZuGj}j| zGT+bqAagf!53@}mhn_uOQ(Mwc{TgBRI3bUBS02+8 z*gWMbt2G5ePl3==VDl8%JmsoiUDT_DVTt!!09OvdJ2S|a&=9` z6gWKv6VMbmJ>}N2{|@FlW+C*H`ypoG^pq={o&u+*!09P)ddd|}Pr198cQXsfroibb zS2#W8iV0{6CZH)-I6dVGr>8)mDG++fO|Yk#SvWlf6VMb)KvOUQO~C{-1ryMe`&%3% zw48GFyG*(IMW$T+7E`XUdCL6+vtphpn1H6-PqN+5tbV>Jn1H5W0-ACkW6x3M$C>qO zPQe5;1^3Mqd_Yt10ZqXNH0Ayt$2`gW`^2XDx3NS0(b!rXGaRI!JSa^P9?geAmvMtjDVcc6Zz9me(VVNZ3Q;TC^T{40AiGo#z@#G0a`Q zU0K1dtYBAGuq!Lrl@;vD3U*}$yRw2^S;4NXU{_YKD=XNQ73|6ic4Y;-vVvV%!LF=e zS5~kqE7+A4?8*vuWd*ykf?Zj`uB>2JR@_?q{a0Msl@(WZWd+ZF1-r6>|G$D=S;4NX zU{_YKD=XNQ73|82E4#Ad%C4+nS5~kqE7+A4?8*vuWd*ykf?Zj`uB>2JR$!Q0fnjb1 zyRw2^S;4NXU{_YKD=XNQ6&U7Luq!Lrl@;vD3U*}$yRrhq+zNJO1-r5W&)f<;b1T@D z73|82`xq;iU0DH7SKygj!LF=eS5~kqE7+A4?8*vuWd)wO6?o=W;F(*2VQvM6xfK}Z zR$SSY6?o=W;F(*2XKuxnU0H!=ZpD>dS%GbC1-7{rS9rSOewF!I=C3h-o%tKg-(>z4 z^S7D5!)#Moc1Y+TR48qSj_c!sV|+WLcV_L-Kft<|Ip&JmA+79sFixuu#((lRvUaF8 z_>+API|VjAykU>LA#doIF53+3P%e87M(2S~T)Hi?giod|ClkrU%;FS^WDe{O*XaM; zY*DQ(-1}ymA-^LpRJLfJ*`h9c=&TEO686vtYV`SiIbq(p$;)7!8|wQ`S-f-2Aayes z-3&T6gUihzax;kB3?es!$j#(pnnC1du(%m4ZU&2+!Qy6eG0h-yGg#aV7B_>%&17Vn zLF8t)*3LpRh};Y!H@kPTN1lE&h}`U|p4L24Hg5H@$gbp`!%oRlht*i=3W7#&*LZfu6jVvO(H~4b~5fqVmL;9~s z%k*DbOUbQ7_l+GB_?Wd>%`S59?EMG)6op@j(4A=BwBKO!Xtq3fY4(R~)vBRLvp;B$ zggrC@&3@)-#}N~Z$2K>0*_tdl^CF94oi{NwIff?3(Bv4J9K*wkq0cdLt1+}XhCav8 z=NNug46Tl#)iJa>Mus(pZpYB=7`h!pw`1sb4Bd{Q)iJa>hCat!=|c>Cj^Ss;@UvoQ zb9OQqd#k6hx%L|6 zEZS^iF`^ivg0f3Sd-oN)JH@X3A+9;yo#NfkHFxkT=9+6E>S_T2T8O$@z=0N`t`^Xs zg{Z3qOlScOT0nyq(4Yky-vTDIfCep~K?`Wm0uHo*11;b{3pmh1yww5%v|!y^(5V); z*5t4S1Zcsow}1mJ;6Muq(1KlW!LGNs4IKXw=0;}OuofyUEyP#$zs9mRLo}fJ)<4_h0h6F7>>-~)5}&Y#h8X6m zLkx3~e1^Flw>y`}F=y{6%rdvF0Lz?e1gZeu#(Ew_V%c=!AWR%=iGwO}@FWhN#PKoW zph_H6iGwF`@Fb3p5eHS`ph_H6iQ{9$!In6v5(ib{co%WJi#XU42V3HJ7jd`NmK4Xw zh=VP0P$iCc5qD)t<6ui1Y>5*y#EBW=#0+t=IB~Eg4z|R>mN?iFcZDr+vN&<_H*pXq zZogPQZfK8uXk~ak+|VBR(9zHy`O&H{l)@HChos_WdoCV_coDmQjE^mPXBJzoCYCv^ zEX*yJ zEtg9zmqDO-5d_Ml#{H;e!Vu^l`^C1h*3E!GzhWyD0%^SLJ%#$G0@kjoBHVI6cccVA z2f2RkT*tQZ>pwS(srd$GS;wE#4fu1U`RDdJUvmoESFKO$(&rS{0Z;nYZ7cyt?#++|*ok>za~GCsMJ?}$^b+ZB3u6D4-z$#oMYb`u|V zd7$#vt&b>qo(6CZZt&voO;b>qo(Q;+M$lk3KZ>&A!c#)s=BGVI2O>&A!cCNk{C zhwH|B>&AQQcJE|W^~}oqcH_f!qWzlkx4wd+Ww~>n57&rUutd4Xzs> zt{We&n<%jxPp%tJuA6#XH?d+jQDQeyVmDD@H#N9!ohr0f&!zA|Qlgl!G(LDSp?^%l znD7xlCiIWF%3?yDg>te{VNWh$?-GWDFWTUxvQZbMmov=CC6~)!&OS481!KhByF)SJ zUmNCho13zEFy}ElW5OJDRQ`=U6eB8Yk+6qGmM47X$LIdXy~Zkjud!0z>pW!leHMq? zS>tev^>z21y+iZ4A8$T(xqeWpAAIU3((DJH`iVFDL8*T5sUKwOC&ugtnfi$?`$49D zkg1;-vmbowCx6usO7(+M{Y0Ampj1CGW?| zAFS#pi`5TG^%H6K6KVE?RsCR9KaplXSk(_!^@CFVpj1C7)elPblhNu2rTWQe_0uoV z4_5VqRsF8er=Na-e)EZqI2ynrEMhFz{KPPr`g);*tX3_7^tRzlk!RUIuC3B@VrUlif{T~mgE z@?bVk1fc9w5CN>|^xBZ^Nod1{9|3H;cgv%FL0|3p9m;2kQ?9B2r`+4b1#jCg=s0f^ z7rc#}y-jrRHqpV`#075?vA*rx!jZQ!tHbqe&fnXt<8AE8+f*yxw!f9%xuRO3m1X?`UfA?Lf5X!Xd32Ka6JI>MXLmTl&F-@!c6+b9 zXg4e6)&jDBk2NdiOSy_u3@^_8fh_%|l5$COAmwlRXG}3y!rv||<;u)#WR!ao`F<1m zeiQkA6Nz~f`F<1meiQkA6Zw7<`F_)pe81^PzTYI?dlM=5RwIeiDCPU=JLu@rGOf?g z9OKKh-kFu@&BiEqr>#CC(?Nvn83e>!fwW0R*yidpg6lJt$=QY%7+jgD ztY2_Vres-}uJX`WYrQxcD}$3Sxq4?-a_=Ty&Kz?^(O4@B?!2LOd&4`cT62(FSGLg` z+M^1T$#R%iE<-D4pq$StmrE*_mFgn-$oMW{w}yw)e`-?w_@m96?c_K=9_ zOegH2QCO<;S>;Me`F2;Ixt)k-I}y)zqz!HYzlT+2j=7@Jua&v{GFo*oJoL=i+@4nb zX8NtXs>HjMTMmcIw9z|HfpydG>WyGe!JgLOl3Y`A>yFD@PL;U=SM?5iQJ|;Q6uOZA zb|7jOO8rN{nGNF|HL*gQ-g&Phc2qYwfYBvmirc3@61~0LvF3T z&Kz?^Ewolv^1N2Y_=%HHKLmi-pYGn_n zM>?)i%FmY!=(jKJ=gSAq9OI*i-kC*_0oI>6=8B?-R#t^1Yt_NHSd^>dgwNg(ihRsA zg(4w7IlU5w=sD{X*o$!Us=-YznOr6cR>wmj-(X*CkLMcrQGo7_JYc_zx9ZK%3!zM} z&_pB1$!qlq?Xa&hjlH zytl|!z6D;qMK=B|BC5AoOF5dM?{o3|kLOGJ+T&}6-kH^mtD8*@4_RDstXWd8Z)8$0 z>GivM_U!U#20Y6c*u|pPe(Vk3=Udl)eAG_I=80$j$j*Qy`5#RGwwUlKt2khfggrDa zogbj~m&z_PQG#1$B8ORK!gyu={^^gsV@{b4I|qRs?((`{ci=F~FZ!7LlTMiyhuQGIF++pvb8x#q}E zU2{IntO$M0xrccdv#j@;qkf(>Jkd2roHA=pocRFrN14^}z2>L~dd>MbbAq{<`4Dpp z^S#Vc(>3lCx5k~~*0@vL8h46Y<67)BeuXve5x3^_a(o~2L(E5*`AYslu-xUv{E#CtV#f7KB6)zJM_L-$t=QC|&FUk&kI4e?%$o8Y~&7&UZ% z)zJM_16xcDovJl-f7Q_aRYUhz4c%Wgbbr;*{Z&KXSB)!+QA5X94Qw$ru*KBC6H^0E zObtj`L*G}8`xwW|V${GBQv**-jVp^$15Zp1JTW!!#MHnOQv**-4LmV5@Wj->6I0{L zV${GEQv+K}4LmV5@Wj->6H^0EObt9SH88}~xL@X7f6V+R%+D}?mHAobuQ7j}`5VkO zf&Y3gWnrZC()Q98=9oSvIL5aydS}+c`~%!MnPaY~h0)5c2fMWDV0a#Su7#0gdn2$p z@^->|I(M=yIJAH_=_#Y-P`R7V?iB)6k@>7%xluleOx&Gg&oH@T6| zC{{Jo+A_!ZSfF=iv7iH+kvZmyVu4mx#hKKqgYjN}BkOJcdhjRv9-cJljC(_SqPA(8 zFJ;YomiDS>!W|FN4#*VH0uQnn+tdC7;YzvKp8nN-jm@LmciB0TZr^FE{+K;<9=F*e zVGoT!x1X`F=NxwTX1^(plF6dHYs==&6UeTvUMgVuUpG5nUXnzu`o&*DuSoNf%>_!r+ zp2VsrvFb@j7A#4_-X}HW;0ZoN?*?g7Tn-Jpz)fzhJNOBLv$OF0J7=%vJ8PKL!ikJXflL%F$AUzfhj|v$q;BVgm*Cn zrVN28LwFZMco#$bYD4_rAuweKzhVev83I{`K$anpWe8*$0$GMYmLV`@2)|+oWEmn} z7y?;_K$anL`$NPFLmK8w z=D?X>v2_Y(G+y?e(9eXw9WZNbE5iPA7`;CXJ{?B;52O8u(SgHYz+o`pFc@$cxjxLN zhjpm1HfViX*A2X*Sp4njihqo+4SHu*8#WvJi~3Vd(nHtAd9o?ijXk@(OX7|<%Ekp! zTI>q=SWuq#t)Z@fe|Pe~Y;!j9zqBBsEl6k!654`5 zQvT4K94}+B8M>boF9;Ruq9yF1aY?Y5cZndNQW*-lp-} zrpXFTJ9pT*o5pXOCL)~1dz;34o5pXO#*>)Fdz;2@nzX}Ik~4j!NK;;syM4ck5GH1;YZM5c~R;YEMG49OMo&( z?_9HckKbhJp^WZaQ{jGjZtb}ntJa@8a`yE3k>?Ws%kGS-2=On!t@-4$J~!1bsJmOe z-9PAisBZ=)nsdfPqfT$J()^2UZ$ZyJZ~0L)+>@%@4zhW$X&zLX$8yhuO7rO0JlHf3 zD$RpO^Td?%;L$wMrvcQ_h1;^I+4wQ)}`( z4?@ioU(U1sc@S!z_0NM)^B~kbk>xztG*4tXPh>d{Ld~O5^W?1NL8y5UY94Hw2b<=> zrg{33=gD8qgHZEWnR(|B>k&@PJJQm5r;WLtSzh)$9YFK+i_Oz7Hc!9UJokf}r)zB9 z>EXyvF!wR5Yi!>6B=heut9NXk9;JDU{I#u7jt~Es9rrgE#YC+?9}^$5Jy}e=y18Gp z`f_q&AJTygVWMo0VPb~+g>Y32GPZG%hI0=MvlJR(evFuy19H2v!~zrUI2S+0wZH-+ z_7}0hhz(|UU)4@8pXL1q-JnZ1o=-Oz(~ZP+gEZYBO*a_R4aRhXG2Qq)-5^ajK2JAD z(+$#egEZa#Z|wb_QqhF6X>0ZZ1s};tO#e*!r7f(Y~j5o z>dnfzU8l7_UO>+Gh2{MFvigQUn zweupG{#SeayFG02M3f18)+o%GF;SEUrk_vfN22?Y<$h$XpHJ;4LhVPE`}zEGWL9g` z+Dgl8p}daXnU&eQ-Ow>tGn2qAQ!ks;0Hquq8n@65iO9Z2B)wkF~@~m^6u!lxrdCup6 zDK6gweBuD|J%D@-K34d8nW5as9!4^JxfT*?E{chPq!E%&$R zV}fJ+tcBj0mHT_>zs?+UMde;Ab2&d+buc{n%9Z=@H5E}iP;!qbXWfwu`AcERx9iL| z^v3M9(oi8JKd?9Kot!kuH-bWbx6M&A(m9gk?>C8gz#g`EGIa@i)(CpqF2?>+ykoUA zOGG(6t3juWWHab)5he$HEt2JMM~h;&psz()=p;H6?rV8J`;`R``dWmV;l392tOngJ zcd)&kxsF-hL6S^Cl1xF+Dklca{E{HTj@9Q>`}4$nbwv$ z#@B4UGppHMZs?dRs@Ymu6%waa2cw+WTW8-JvT^zx({(9tR@3cO={`6(CGxCX%oM$# zuIDkGiRnq|vU&PfciK6UuJ14zO8B~7Yp)ab&nWr84S3QO&CtAFN^|*RMLpp`d5YjnB{8GHjM0y_XHIe5N?lRG@5$-anVUM&u+-o9jFVt%yJr8;?YK-G)^DJ5Us{KSJDFpA9o9RuI(&$0m@>y)Q61LGs+?MzbBFi4Yt4aI8n(_l zR`2wNj)~c(r^BIsR+RK2dMuI$zo9kbt(s{rq{q=+fzkG&FEJKYm|vz&M%U>-KiS-O z-a5*D=tS4gefx*jXLjBx^tUPd%Q+`|_lh4}GV{v}KJg6tKZ9pHgM80`0yAjH4F2&9 zxr`aSqj`vpBLDnP0-ut-j$7 zO$^~klWhq{1PVFMfW0g?6Q4`|65xsW*bCvwzPt>j_}Jg=+%JD}5$=}<(d`G(?FZ5A z2Z?$gL|z|6s~<$GA4IDkM5`YpL-`__LKdNo`CyBwlGl=jCN93-w0kXDdU;Tv5N!%U0@a%Hq!+kQ0T{L_2ao!TGw-Rv~3JBg|566=!uscr5*O>Oz$y5pYT z@qX*G{NSIT`^fb%^^ELVckLcSC+)g|Df0rSobUIYyy5(|@?QPV8zvJs{-0g;e*>MG zx^DU89p*vaYrdkVUCQL?p(_ry+bqP@_Vqk#I_}!nvsvHpxNAR>&HC$ccp{FwH?b`# zKkiDlj+3W6?n>H@yF$d{u5ju&+z`j%hB)r(e;$V$;y7G@$6<nxFoxFL?i1$dme z>bP6W@pmw5oyT3t<#AV8hvV*D%o=cQW74Ec#fDN5*MRHr54mC#FkhSsm=cAWQ1lpU{u1XWbIcXRIIXM-O|*^7ki=+YV_(UKH-c#RK(ND( zs-iPds3%kt>h&J|;*+0!s^{2KpE>rq`=1&-_EZk~nO)a$K7XOT+I@hwJE7v|kN&~# z02Tw!bzdtn zz5Q+9`4Vhz`s?>@2(IYTtC1Vd^o{lX{nK0CG3%Re;~@07E5sNFo5#WCaaa8T<8b(l zgV5uy{@XY>Jq}Kf!{IXyPLG4o;~@07tC(*boF3;&?s0H>+^uE*9n5viLg;ZyD z2tDp5*x$@7oF0e6XB-ZnaX5U&;qV!U!)M(6Eshadj=TC@#$Ej) z_>9BhGwyzpV^sehhskFg4xe%E-8Sw%#{Q$sk2CAn9EY`L944P}n0&@z@)?K8XB;M< zahQC@Ve%P=$!8o6pK&;R#@(m*oX;_Tp7}pBo3mh_{{`kRGXD|tmzclI{Kw2+VYUej z*K?`pO*$=I_9L^$Kdm<~vKGK~^c^$D_*O#i%pNlbqfzFVD{3XQvg^?=tvVQtv!Olm9K0dBAz6~$0Qa-*vR*3LVVB=#Xl^e;2^Uz8fY2jjJ&M#mqnX>K zXZx|wZz}8YT|0NO9+yT`NZ3Q;TC^T{+;BT?be?M{#SM4)c4Y~>vV>h( z!mcb~SC+6VOW2hq?8*{$WeK~ogk4#}t}J0!mar>J*p(&h$`W>E3A?g{U0K4eEMZrc zuq#X0l_l)T5_V+?yRw8`S#oRb_g`{lSC(Aal_ghpWeK~ogk4#}t}J0!mar>J*p(&h z$`W>E$(3DM!mcb~SC+6VOW2hq?8*{$WeK~ogk4#}t}J0!mS6;5f*WoLyRw8`S;DR? zVON&0D@)jwCAi_1uq#X0l_l)T5_V+?yRw8`S;DR?VON%5h+D$0EMZrcuq#XMW2|3x zWeGf8f+21RyRw8`S;DR?VON&0D@)jwCG5%)c4Y~>vV>h(!mcb~SC(LiTY@2O35K{O z7~+<&D@(5I$`U+rORnt7k}Hd{@`mhC zmu&`iD7Sit(Rtt#mu`!4)0LU4VvBK09oVhTVGYj~iCe1He!I;R$;bGN@G@BAhWfs3eVI4f|M2{gM~U_2nJZS%I=pcZq&^5n9|WBb zg3AX%y^}ri^bdl_2VK>Z4}!=CLF9uV@<9;!AQ_p1c5d_azuf*C{YLt2 zbgqiCIc(>z{xLox=$%^JQ<*gTrO!_JH}`$M*B)lj5S zAGAlp9vXpW2VFNFYh1Crsg>f4^E6p<7HIMo+uo?jjc9Tsn%sycH=@ancvy|-b0fLc zMzp#SeQrdb8}YLm(dtIDx)H5zB*WT>Za1Rajp%kGy4{FwH=^5(Xmul6-H1Lny3&V6 z^tll~s}Vn|5v^{tb9T8Jt8=e&URqQA{oHXMy^6Wxnp~+<69~{m z)YSwIG!b<*fd)-PT}@y@6KK!`8Z?0hP1yJ*Frf)FXaWtIK!YZ5pa~pk0tcGFfhOXu zCJ>+r>)wP;HMzB{M+ne_U2g&hn!tf35TFUW-h^FmavL~O8N4PedJ~aWlN)7^;;kkk zttM(LO|EJzO~hDDR9Bi@)yR8yVwr3F9)Tqf1~5b>tXhrQeqCMFTU2I!~L~RSnQ` zi|$`L_v9crJBv)U{{DLgEsiO2Oz!SPaQx$+!+*;CTcPb|{GEp%{QaY!eu7-Ee3Kptb<`5nLE9PGOk-Z;JE!+nL=<05vgZ9aS4jTRgH zx~=3k)|1N~7X@LWU`rHKiGn9l@Fa?l5d~GEph^@xiGn9le2gfl5(QPFph^@UBMP=e zL6s<|62-fS;$1|+mMGW~#k+{QwYIt_K1LL5iGnIoyo;zSOBw}RqF_sum?28c5G7`a zf-O<7B}y(Q3bsVSmMGW~C5sa!e-i~^qJr2w+|VBR(8}<7HB#-74=vov?vWpTFtev{ z9aYjHskqsmi^m~e#O@#Cdo_Az)~h+h_sx7xj!x(cT*tT2f5?tpJ&;TmJSIo>uPbs) zuDokK*OB+~?o}TAH?T!yZ#J^nB7FCTq7IFFy_Ys?&nN8Jutj(wZ1FZbKKt1d(VXqw z{`P%e_zW$9<#5U6QpsfyC|(4CGO2MtYMC$uy2sAvR@S;15J)w8A&|z)-V=5Egufkd z$z4~3OYS8{;`0)}(Myix;3dmEX;w_~5*f3X@VQ^28}KEh`6c_CC!u;SRVC8;w64!&YxX9p;kLE8Dv#mq;!vqvnAZvXZg=;j56(n2c`QR5Geg zpg=}nv~3OTOK8JJRz^26$^8uZ{2B83GvxDU$mh?H&z~VzKSMr$#%D=lG)l>&{W}K1~NcTnF)C z2i{u;-dhKixDIM?9n|1D@Zmb};W~&CJMiQ>@Z>u1OFD=ZJBSiHh!Q)95<95D>5d}h z*(^zkq@y%G?9s;s$N2c5cV_Y75xzy{m@DeHX=UCWyS3_Il#`7LdvXbTt1u*d(MI`n za)vp%WO5nnSBytBx_fshMih@~g-vdAvB~vj#F)L{Q!n|eUQntRl;Rm7KW-sw(FId$JR`rs_>IJ2Gi8OnOG<(6SUa+c{NV6BL>IJKML8)F)suz^%1*Lk) zX!U|py=1g{=@;k)t9rqzURRphOTR!b{Q|w*ORkrGfnM$<*UP=+dg&MFrBk?Zx9!}fd}^nalsqN*&9R$Zx9{4L0s?#5$hYyE%rOT;oQos4%at` z^51Y|1K*(f_6F6;H|%wJT5+2lw`PwU^aiI`pS+h#@Q?AeLhsCK#b)D>lSe0sFTf#} z-DgMa@m_h+ZdS^z1>`_fMm;y$H7QqdDo4u2l-O;Uvw3nclB6KcebcrzgdPcP*eJ{( zr_9Vo2D#Ue@7Iv;*O2emkeJty@7Iv;*O2emknh)!@7Iv;*Br_BYy9umIDfD4|0Qu6 zrI23VL2EB9)B60(F}_UeomrXQYz%UD+Uheh9Yn~UK|stENSj3G(#K_d*J6BI`vSUk zKVBB!)<;dEb*45)eM7&qBwF$#q_f2%Z3%nUD9pE|Dflx_5e_NW47vK;1-%h1RfDCe`t<&wx{rMk%dSK@j6I^yMcd{asF`|SKks;g|( z@3DtOOlLY_4~@c7ozEgyO3H6{^_jO5@!U?tb33ul?a0>cWMOV6|8hG~&h11ww-evo zPJDAa@y+e}n6ji_-$~!4G;T|yGROG1t#@Xn{~lJAIp&H=zgFh*%V^cX@X#|?`osQs zqa7&e53|W-$>a*if9@s9S^2lLd#;D#r#@>B?Dbn^d{h^|)UK+{)aj;-j^tmqNFJ6g z-chbDVGoU<(=ES;)#I63&fLqaSQl$)wyARaScBdd$!5^+qMUrt=^}qV+~Xo&E9i9j zRkr142c0hBmkN4ZR1q)U>7uT`px@;Vwzo6OM+o=3>|oE`%ni)K-X<~yg}Pqsk9pc$ zZcnRzGyPUxRiap|p%rG1@%3Bp%<6ZS8#?BS>bF)_h2&|~8aQ00joQvyw~Y~a!JbxW z@x^*t?U({Rtwkzt2cn9_HN3d{JErM3ZYoWeWJ=TTHpw~UYq}&lVGoT!(}SMYfJv@c zS8F+%Em`w0x)_&SlzK&!N=1}RVDX+4X?f6jA~^{6oJh;VJtwjmg*s2nl7}mW zd&&;kaZlONrTu*Qz?oxw6wy1gD6$#(mt z!20_12iE_jy>I5av5Tc%pC4KGjHAC;rYR1*gCWnVCt~k~#sn<6$ zsSnuXtgB~lg+ngX1DSYQ9CG{fION)ka>#APHf_Z=ZN)ZiC5N+>9L`p3(^hQLR&3K& zY}3}VFFy~ciMp_yCDua zq?br=ug@XJbLL{Ez|Xt3Ipp?VV$AYS00Tgw{m zVBXFwxg5k79CYPl4B`t8;sp-k1rFi`4wC5^#1|aI7aYV39Hb{?5MOW*UvLm#a1dW` z5MOW*UvLm#a1dW`5MOYRo{&L$LI&ZG7^E{~kS?}C`a=fk3>l;|WRT8~L6{^4VUif6 zGh~p?kU=^_)Gd(jUuuu^^Ll$!IOKFT!eisL550E4e;kLLhkoX{7U7WF>v0L?_3l>j8;+BUQ0sBv4$pZ(#se_EgGv+lVg>rYp$2iJc-x5J#? zv2#DZ-q_T|s6O5|bzSdz!0-0`KGlN?|K(677e3K9X?IrbeoF1chZw#Cs1EI%2=rN-8F>rc}4!$vPdd#i0HI5Opj}fzv zfzV?_>to>b7&tu!PLF}pW8m}{I6da>;uDm29s{Sx!09n?dW_z^F?#pL!09n?dJKdf z1EI(0+8YC>$H3_^aC!`!9s{Ar=-nFwp~v9*83UomKt_tEpE0<8#@xqP|54`0nLovRjQP{dzsvjt^JkcUkNHXF-)B~ueGIOj zF}Qxl;QASZ>t_tEpE0<8#^CxHgX?DuuAecue#YSX8FRnP=ln7ASD0-oE1MyHpbCea zqBxCkPE>pLX=3P@-?A-v%OMUq&kS5LZ;$u3pcWGN)J5;`EHDlE$v2u`6lpN*cS8#;&BXD{1UX z8oQFluB5RmY3xcGyOPGPq_Hb$>`EHDlE$v2u`6k}*7PckT}fkC(%6+Wb|sBnNn=;i z*p)PPC5>H4V^`AHl{8u4GH4V^`AHl{9uG zja^A&SJK#(GH4V^`AHl{9uGja^A&SJK#( zv@5%khC?n5hg=#CxilPdX*lH4aLA?MkW0fMmxeH4V^`AHl{9uG zja^A&SJK#(G?aL5&5D$eJS z`>*C@UJD#@#ro(v8OQoU3o+*!4ITJx-(* zr_vH9-ii}x#i_BxsjMC)ft9SwAxwFC{XTMi4 z)OjF8(ChMj1$81B@(4+MU%@sreK@uqZo^UcLWM)l`G}phggrFGA$LoNL+49V>Ey&4WLQ`c+vo#G~i=2fGQ23 zN&~3UfRE7twlsh$4WLQ`-bDl6MFZH<0Jb#XT{O70cCH%mF&e;@22iB|@1lYHO#|4{ z0Jby`Gcb1Iqf}?#uh`#Tw#TLSOX;22Sp40q(5BOUb0<_(gk^ zmPs!&@OkVvQa*{M#vX9Gtw`p*Ny!^EahaB;BLMO>ac^q=aA9ssgiE)`% zVT3v4zV?ndG5?hH6Tk+&t@#I?Zoq*!?ohWwc^9I5*fDQ!?ohWwGtV&;={G#y|v=KwYqoOxopLUYsH6a#fNLfhik=$ zYsH6a#fNJpK5WH%YsGtOr4rXl4X%|MTq{0YD?VH+QDQ5eTq~YjEA_ZmV#QXX#8#rj zR-(jKqQuq$-d^GBG}>(S6%M(;Zwq^J2|G6y6NWkDJQz_niv8iRFxcw_j)plE4mn4c z0O(9=s6*|X^{$#F$;+Qy2NGE>Nlql;k2_h%viBsV-2e%dNE)c7au0uCm!( zAXXPx)df~{fmK~#RTo*TE>NnANVAJbvkR>10;{@+G`qm6F0iT#lxQniVF1iM~ z+&;dSIOMwM8t8JxA=gFMKo?yDU33koMpmB3^q3v@H+FPskLf;rTyTulkZF2Eu8DsjQ9#09Ss7rcs`z3M1Bc$MhjRpNqIiCABCZehQ!b$QhhW6Z0d z)~n#vtB$Tlf7SU<%r@~^dM*`5=-RW3U$y38V>ph`JF{Bx?%|Njk!!`d#X00+lJGn! zzeYLal$qJcA@?%!{W9|XGV=X067w?h{W9|XGV=X0^8GUM{jwwZei`|GnLOspNVzgF z<;k?HcZEal4?gczJXAKx2(cu(!XbyWB_vKZ3bSqL>WN|;a$E5QgX=Se)!{2MmGuj* z$&@UYe`TgH{o-h>3{Jj}qIYJ|_}$4NhvX_klRW2f$nC9g$bpy%iH42BQoWHwuDF!n zhLqn%#B&=F&uzpyw~>pvjV#P<(h%DIgw=QiS-+lX&&Bfhz_)I*m> zF}&>{Ax+yEZuF_L?^8{FI8oFPB43pIxA*wMgad z+U1Zd*40{$W=mg#9H6=16XoHtOfXrNNjKqjzw&xy1==sb~rhkH)++2NiOS+hc& zC*mI}-gzSZF4TE)7yG5jUQ#=THA~s{`M>WDdDDeB(ASpbZbX4J2p-3EHRzwBaYWQ4?sxTW+H= z(1y?4hR@ta&9aTkKpUQO8$NRz)qpmt0d3SQ+o%S#QL}8L8qh{Hpp7~}8x?>y_f8YX zHtGOv)B)P41GG^GXrpG?M$NK~YCsz`%Qor&ZPWqUs9CmA2WX@3tc{vw8+Cv->Huxj z0otfmwowOYqgvTkwx55<#TH#38r0Y!11-6%ILag$e(RZsd>~y$FZg zE95L+A!qptIm=hbR=z?_=oLq~msiLiy+V)LE95L+A@+WSY~?F>4zJ)dyh1kq6;>mk zLgSrhL8Mkdt;@oI`E^UvL0@8$jO%(6j+GZ2(OhK+^`$v;j12055O=FK~d& z=>Y!U0QsH)yubmxzyZ9#0eV6P@C66(0tfH{2k-(1+**^u0ery$SCQZVzTg19;D9S1 zV*p=p055O=FK_@aaKKfj$K&H2z!x0A3ml*)WB^}q0AFwbUvL0lZ~$L$0AFwbUvL0l zZ~$L$fS!;6dO`-^kQksdWPmQV0s2D*=nNU4Gh~3ykO7z^24IpHpfhBE&X55*L&R>I zAGd0cYSXI0R5;{xHp1gdbI5t4bV zzbp>9>5?3B(;*JIX*lHm$~fe1{txAlyE()mHw+#RgU7?*@i6|+FsM9Cggy*54-=;k zgV4hu^f1^w3^otb!8c5VJ`6$+6Q>V@)5GBOFui-j;PfyEJq$t*6Ri(})5CP|4TICe zZms>&!{GEVG5atGJxsJd3{DS&)5GBOFgQI7P7j0A!|pCVLAmr{aC#V=9tNj}>D?Qq zcW)S+9tNj}LFi!+dYG=gVQ_jFoE`?Jhr#J#5PF#2yB$M_M73w1CWekF$RX#M0cA;ZFV4j_WG>a^ zRr}E=KmEYrpbOi3TTlxLeCi5^+_hvq@;T&ce}NowVY`yTuB5OlDeOuLyOP4Lq_8U~ z>`Dr|lESW}uq!F-N(#G@!mgySD=F+s3cHfRuB5OlDeOuLyOP4Lq_8U~>`Dr|lESW} zuq!FI)-)`IT}feAQrMLgb|r;fNnuw~*p(D^C52r{VOLVvl@wXv6m}(rT}feAQrMLg zb|r;fNnuw~*p(D^C52r{VOLVvl@xX*g`Dr| zlESW}uq!F-N(#G@!mgySD=F+s3cHfRuB5OlDeOuLyOP4Lq_8L{IOI}r$fe+rOSxa; z_xd{XH<-W4{4Hj2$fexxFxzD4>Wxyl!|&Q56%M(;4t>}^V_C~o7KdD5QZC&ViH#~K z<7KXgt#HVd=8!XP>-Vp_&#a$2vV5}5uFi3)W=?+Z+kg3NY38YKmc=302vRqK(T$*U zBe>iMA~%A_jUaL(h}=jnrV&JL1dAKN;zqEz5iD*b7t;tLH-g2DU~wZ@+(<^I5kziu zYfShgR32&vj&2>(J*q{H!{(x(=9*Z zh(k_@px5R53XOKORd|IYWpc>HDjagoN9?R6?4cnJxve1%x!>5pA@}}E=8$`T5e~WA z3vkG7Ey^KR55m-w(WxhwQ%@GB9v`C~AEO>0qaIYLCuXR}$Ee50sK>{s$H%D0$Ee50 zs0Ul>@hhUh>@h<9#9P05d>fKs9SM~T9^~4PIph`X7MLqeOdSZrpVupHR zhI+82o|vH?Y^euZ>cN(Ju%#YssRvu?$>P+Lzo`dd>I>k8Erf2S3WuD|#Kt;mlkKfS z#`Sj%u;r@Zkc(9~n}z4jzV&!sZPlH(WcQCcRw?2&)WCgqTmr0Hygx=nL9 zac^q=aA9suKG+ib~Q`bh z$tCdQ5_ob6;==^~TmnxnfhU)s9+$wAOW?yL@Zl2pa0x1L34FK&K3swfQ34+>f%lfc zdrOcZO5npK@Zl2pa0z_41U_5>A1;9pmmoe&;JqdA-V#*e64c-l)Zh~Ma0z_41W{rF zPcDHcm!KY(AXZEeB_@ax6GVv#qQpc2Z?AA?Lz_uLg+ngLMycb*8`_hwO^XS`9C99v zC>vDjlxio^Y$wue2dmn_s&*pHcCe})tZE0P+CiyyP^ul2YA2)B4obC?(Q2n(pdGAg z2dmoY5pJhnpq+k!b~=UI=@)2+L#`bTxpw*m+UXQ-r)!{{u7P&9k8dOnxpuk++ToCE zr)!{{u7P&C2HML;#K-Kjt_==3p_6^tl36n42D~9eyc`a>SaA-yeMTf#o5!xTf4A+^ z@a_USW%p;&oy9$NvaRl4JNJD4*cWj0f`t`%uJ!ldGiYsPMUKhcod}M9{BzV9bN^Oo z`x$>{Zr(tPN@FLOTi$n)65*@rqT<{{%<%^E4Mt{-K^*b**%89?o`FoLdyy)m^^cNjv#uXWq z7f0w@>D!c!BfMWJ97pJ#+1U2o!y%U=*NSs9^jlVm$}%O!j45%ym67wM{2JwuQ)Xr( zhurhX_w&g2^T_w}NX+xd_w&g2^T_w}$oKQe_w&g2^T_w}j{EB@1&a`IlRXa&9Hcxs~|lR^ppmiEnN#+e3e!t-Hb@Cx6_pT6;2`>6hVU zG5I&LnvK0O6%M)l9@cygxnfTwa9LeS|Ve?E#P z1)VP9kc*Ndh>|0SlFuyE=^_rfs9Vc?2eUE-QTI;fdgi;BcQ9}4ce#iClEiS=i|xSD z=()lnr_5rNqw^UIYRRUJdR=~>ihc{rNlJ?^*3$|tRiNv^l~b__hn#f=WmzJNceR$I z+0s`<5#o(gjZT^v=8&tWUQth_qMl4(@tzY!?Lp^>^gG;hqR$TZoX8Fq>O4_bTk*~l z>35;d6G>LM|HO7&rUnZoDjae_RYAz<4ei-$o1O++$9cwPqpYQRTq_)Mj;?h`cqj7G zs+X5}2dw-%%v?H$Tr<9LGZ@f}hujPjG=l`qR0Epvlbf;h&3MbrR0f*ynVa#Mo2gkg zQyFN+b8g0GZl)U0jHPeJ#y3+9Xr^Y_Of{gHYCtn}fM#lz%~Hy8|hwO|tQwM0K z4$w@^vYDD?Gu41*YL?B^0h*};G*h!|rVh|d-&r#?%Vz2T&C~&!sRJ}qt!$xxz?f_a#h%-Dr{2~wyBC7P8B(v zDr{2~wy6r+RE2G-`v2QI6Y!?0w2$AkP#8*;TC~)$q|g={3T+B)O4}$QlmJ=~D_~(z zWK~>1QBh~2gBh2MIvHgQE>Xv*Lqr{y(Q*AmP!tz7Wl>oa&`}f+8BrNP@}2j0bK9g% zOVRIh8FHT|w>PIJHz()5@BdxSd;ho97%q9u1c#g;wnWs*?~CD(LwczywnaGP_-h1h z4fhzA#;zdgYo>CiVrgW#R9`LisnyaBYJpH919>LN&wsUaq#Ea1^}0$))LiuvJUvmp z9O@;Tsj7e2_A}>@6YV-Uhg==LU>*8ahrZRJX?18?9hz2$rq!Wob!b{0USJ(wU>%v$ zI{d#n@;!BUfpvI+b$Eew+k~W@B-^hIciSp@CEBk-8mMytiu!9fb@+mH_=0u#f_3-kObyTs{Q6ExAWk?;BA$3%S)WIZC2a`k{l_7OhhSX6RQWpoC z)WEU#vIdjjkdxVn-J)w4#Q#V(iC!k5iP1epVq|N`S2g8esL;F6D@m(Xe+Bi7gw@Ci zSDZg%=4n%APMdP^DKjTenHhzCYQ?4*4mn$bLr$BdX40WvvK=~yoN@o>{}+ec{1!Rn z=Ercz&4)woHpL;=@kiy5>lni!=L3&@;IR)p_Tm5dKxH2hx({sj5vTh=Xdeje1Dkzd zvyTcs9}&6_g!U1q`@m@*IPIf$&j(KXKxiKb?IT+Efzv)J_`$82TuFIX&*T4GfB3@N3`w(r+whG51jTlO3D%IY}Lf-MD1J^gi`jQr!$lmh_M~|i>`Dl`62h*8 zuqz?#N(j3W!mfm{D|i>`Dl`62h*8uqz?#N(j3W z!mfm{D|i>`Dl`62h*8uqz?#N(j3W!mfm{D`NZ6>FaMiSyL+;Nizmua3sMK!%GV(j(g-U+M zru-z~DHH3Tt6mQElI_KU^ZLJ7keA%J{ze$57F=)C#|OU`hurn8;*hg|)D|$>0yY>g*q&u@XHcIOGf)9ve%Rs<}~-qppoceT}Z1 zE!5Z85*%`x%$!5LWP7ozD@9htqdDZtf5segg+yJ(6I+wjFEF0lDmj1S>8WR0beHI_nRtU^{-3c2I9kQl3w7^{#N ztB~lbkad+pqN~C<$dllZ6X`cLe1#u@L(Z1qkkcA-$aRk4kjrYqA(wf`9CDe>aL64S zheNJ&vmA0}5XMYK$4oBAOcuwCk735gFymvG@iENA3}$=`Gd_kHAHxi)m_ZdYK86`= zG2>mB@h;4G7iPQ*Gv0-n$ia+vVK(I`K{exJn28z8po$sq!c6|gOw3>=W-t>on86k^ zF@qUwF@r5;u*D3vn86k^*kUG&VdkeCPy+oXkYib=3GAa-#Rrzab8h z`vdgN@M@}!2GuJ`8>QYUuSW1fd>Z|*X2y&QOQMeZM2-htKJ60mbyRPjqcUvT^kEY& zk8T+_W6IR2S_c&oB{<|_>Zc5Tu9Rjtj@l=}UbC+}0 z_xZ2okV7_=NZS$|a@3PLxazX{uXD(y#Nm)zr3px{QivgY@q<@s;sLMHlH#Evh72REZ~7i6>WyCs&ClS4n(Wi9c6~Cs&ClSIK%@ zC7xU*K3pX}TqQnSB`a~2_;8i@aFt|;D)Hee@!l%&-YUruRpP@{;=@(q!&TzLRpP@{ z;=@(q!&MR=R^q)?;=NU}5?9F@TqSF8mH2R#_;8g(iIsSAm3VTMtjARnD^?OERuUyv z5+zm=C054q_TpDI3|1PG;E*%?wpdTjq2@+8Yq1=1I*f=v)(Q?eTY^LGFyoMOf>KWK z$w{Q?1fQJ5n@&*52|hVNCMPkb6J&A{T{=M~C&=U^#&m*DPV!eyP|68PIf*o#pp=ss z(+NsBK`EyxN6D`fta6ggc7j+=u*wNmIl(F?Smh*(6O?k2(Q;BR-~_9jV3m^^VJGzhPU;1mR0=z(7jVKM=Y&Jf zNxguRN?|8e15T<2oN&lFsTy!nHQhMH7NUbK zLY=#8$zBeJ?n~?8KNX#bW zdlT}#3HjcHd~ZU&H)$f@n~?8KttHAA;BRR#Ua-q#3IoN4mqUFA>yRA z_-tE`jh^2uhg=fApmBeuWO8Ef%#?hgaZjema_jHR6ih!j8cXh{F&fJ!8_@W_lS2;4 zl?YAbxePCMr)-uVwiq+@pDny53U5C$c5HYvKlr3^>$Fw)j%rltZq0 zDNjMlQ;2v{hzP4A^(y>l#@b~lR|uxLVS}#e3K$WLpJ4aOI5J)o8-5& zoYNGIs_zrYY04)Xq`!z!)%S_wCYGTjGafld!xqg)ELqyPeWEysC5IcYPt&y~8JUSI z)9`JEoXMCC4?Wf&FIJsZh9Z_jP8ad!*)Yf{6S;E-!v!`hfbuDL4KgE39Du8!5H zeG%C->RqBMUBsV{t#Oe^t&mJ+A^CzrG|8xR5e~URas-9s2nxw(#;bG@4!J^84*PEG zyR*+@pU?hy_66*l*1HtZE|M5q^`aUYX>)69S|tlttF%vFl_;7xRZhj$pt~kbMp)k` zqTlk#hCahhF@1hg{g#n6<&d)}ZIoZppx;d+@VGUt#x1$Z$f;sE7K%mTRkMC9tHbI| zoSN1IhukbJhC{Bos@B$Mw#Zt`b**OBE6l7^n8^e-UvnZ_Zd9I#9K_a~NYox%b0Rh) zUge2YwKZRPBKjS#@`Utsi!Xs~>;L4%#99QD4w&rhns zGO{F1Ffw}6uYR-!$69FVE6AyDV#TFaP1$T+JL_v)c`GU$SDi(hFPeEtz2P?QgDh>7 zS*Yh0vBq+XT%-KfIm%%X8Tw`1d*W2%T&rGVl@tk&m>RrhRWFBn$#zJqm*4XVSdBU4 zt{=VN`d*_SYOl?9jDA;TCB(zjGhXBQYaoFdZe**%H?9H$s_>AjK!Pfepo-OiD*WUs z)XmaAA9sKPs~!e_3+(pO>WtMHtw@R_Sv4XDD>S7GC;SPiIR&9aKsfGSo4s!Sre zRjdG1VHc}d2dFajpj~9Nigkc0)-0=7v#eq@po%riD%Jt2SO=(L&9aJhfGX(6w5DvM`MADnVrOo6lH%L?pN{-mq*lhgIpF>V0 zRi-7Tswav=t~|jZ7gGbNbI6r7;*cBEEQj1aBzPYZybsT7A9B18Io^jH??aCF@jd&H z<9)4`RI!o!)hi-}&BSsYIA5%!$|oB59*}WjNmuTG!PJ6*=FF5T5r@i2` z7o7H*BwOMoTK9s}UU1qAPJ5}{^HRI#1*g5>v=@Z-g3w;7_PpS<7o7Hj(_V1e3qpIT z-SdLbUbud|AhZ{R_JYt}5ZVhid#T#&FY%j~A{VFI+!fxPH8F{dnQ}@xt}v zh3m%)*N+#jA1_=#Ubud|aL9RK{PDse=Z#}+;#XQHIONoYQyzVi{ArXEl@^=q*rd-% z>PWoh7!Enz3`mCKkT~S@j~QzrM(#AhA=i2ixnI8ZXv`ru`~Q$bF4nFDu`5CBN)Wpe z#I6LfD?#i^5W5n@t^~0wLF`HpyAs5%1hFeY>`D;362z_qu`5CBN)Wpe#I6LfD?#i^ z5W5n@t^~0wLF`J`D;362z_qu`5CBN)Wpe#I6LfD?#i^5W5n@t^~0wLF`HpyAs5%1hFeY>`D-e5`;r8 z2!~t{4!Iy4azQxcf~M;jt(W~D+26qaM)qn)zC`}ElvTe;{XfAWXV{@$GF@y&ORG5K z43l!`wn(k-)u(qFo)OTf4&GSDtLUTt!KObW;Be)TyZ3u>$X(Ye4!K;AIv0%21)X!j zKf0G5aWPvSN#0*))3|YhsSzt>R*pdad zWPvSNU`rO*l0_CLi~LO%2$K~DH{`-eosm?%idQY3na;yp64N3p%T@I)@iXMYw|0*D z4!s(rxw?NnVvqER#3Ay@hB(B@@2x-2Pa22B=a3VaS7__^9O!y$Jl99?q%;>Mo2&6x{!E?!s`Xxsbass+ZWRzUt*rFWFjm7lz`G>!^6-zUN&Su^e)L zR`+1kjy`?#5>4*G7%}==ZOrITwZ~L`NUAc8{7@%#EH5pl;-eG~u9PfMDSlijxuQ~X zMWy(0rTB5B_;IE9aiv6urFe6t_;IE9aiy%rmEy;h;=z^T!Ik2{m9h?3iU(JU2Ukjd zs1y&b6yL2B->uY?r^Z=|2Um&*SBeK$iU(I}>dAk_>nX*9D<$7sitkp6?^en>Tq!GX zrL4e};=z^T!Icstmg2{i;>VQ|DV7o=ma+m@%Gz5gF=8oT(i&V4=@6-C*;eVEO{}ew zPd3=9Gx!zt=lMx(m5eM28CM7On=V%dE=Y6JyS!pOIEU(^>{%>#oDLt7g=z(NTzP^! z?l9wyvx84|kjYMjX$P6?#F=*R$qq8v!6ZAer5#MN6II&5Bs-X7C$_YMOm^~CcJRp# zKG}&d?ckH0*wPL@*}*5fDM!h#9h9=0x^tY%KA(LL_L6tCgHm>~S9b8pPK0SE!nA`@ zcJ$j$glPw*?4Xn#e6oX2cJRp#KH0%1JDDsyC}jtw>}0a+pp>23U^{gJcIpJ|R0!Lt z6R^V_XNNn^PMv_A3Sm3d0(Pne>~P1~sTQzPEntT`&Q7&}ooWF))dKcbBjQ22aCG{#8D2Pi}oREw;n$<1pm+@>aLYAtZb$sMi*HI@T4~2TW!F1 z-JnTEe1m%FR$TtJ6hCy9|EpKaeuD0=#rg^I$p$~+zlS?6O0FfoZGk(^)`+j+@a2w^ zj7(GRxOK?)I^=sD^1Tj;S%-YDL%!D`-|LX?b;$QR;kIz*B)H>bjY(<@ls_KJ9jA+UbMmi9 zYMR!rCb;7c#vRvO_3FVGrdn6OYSg@lpKR2*NR?(jnSyw=EfT326)uvC&L>k~RJaIt zTs}F1d~yW&WHRGbxCnQgQRmW)W62ccoATI8rogCkkxW6nIv2U4IG=oGY_*GO#*34` zdSubsT2{%z9Uk0q1W^aO0WrMpqBbF^0} z0ErTR8EjLMW0!S~o+{HLyk(NV5Q%oEmu$w9&W-0G>+FzPNpsb#thtawX=SioVP92wkEjaG^?6KM`R`sY1Q(3 zKKbg0bH|mL6cA};U_cpb0%agU8AwpZYCsvQm1S7^GFB_gSQ#i|wX%$rfihMr%UBsG zV`ZR>HGwi#1In=UW!U&KRs+gdtt?|Tpp4akGLv9o8LO3LSobnkE6Z4|EMv8@jCFuA zRx8V>zba!jpbYC?#yUV5>i}h}R+h02P)5C38LO3LtOJy>4p7EAKpA%pmaz^{MlEZZ zOi3eLiC;_RRQ(d%aR!PAKI@yb*wvx({A0M|%H^G4$U&0wDlkrP$B`>^L}s)pcih~A zaL27D>RpeeUr+42p4fLivG00f-}U5=))N7*Cug~yY~_05;PrS8>+u=Z<7cgBG~!dp z_QSLB`f5%~+4!G7cbrJ7%tlN#PZW1tzXW$2^5u|8Qk%{lSK5d>uDV(7xZOzbZX|d& zsJt6F-i;jZMviwQ$GiES-N^B7zNJ^c~iBtKc?Bvt>^MvBpLdqu_`uult z$05CN$MuVF$MM$)+8XXHKCHRpN`L0uaiU!Z=Z>qv7p%b-ticzop+2OB%8(koz#6>3 z8oa<7yucc~z#6>38tOx8@c(Ma_tfA8*5C!!;04x@@2SBTticPc!3(Ux3#>8aD6Oi& z7u4_ctuf`%BAK2VllT}l_<}Wffi-x6HF$wF)P&UF3)bKZ*5C!!P!m#vFIa;wSc5NE zgD+TvFIa;wSc5NEgD+TvFIYoONDVb1HPo-wP#IFgJx(>$htyCRQbT1(4V57^Fi6zE zAW=hQNDY-CHB^Sw#PKiH&%)lz8cc#aPG%!^`>DC(bo5i6Yct$&{Sw@9+9Y+!9Ffa* z=-hF}eV_kd+;O26x#L1H+;Jhe>*C~fY2Tg+5d>$fn4+!lcPWOP*9&p-2?Vbmm_JGhH5ZXhu?g6JgRPcGg zX^$yKU1<+E?IC9O5UqQN);-{~2b}hR(;jfz15SIuX^%;=B_5)64>;`sr#;}bhuS?4 zwR;|L+5=8|KxhvL?V)PV15SIuX%9H<0jE76w1?U~4+!mn_rbeaQt}S`0>E;P96ug7emrpec;NW)!13dOvt^}|v0qjZuyAr^z1h6Xs>`DN;62Ptmuqy%V zN&veOz^(+aD*^0E0J{>vt^}|v0qjZuyAr^z1h6Xs>`DN;5-{bc@dmIf0qjZuyAr^z z1h6Xs>`DN;62Ptmuqy%VN&veOz^(+aD*^0E0J{>vt^}|v0qjZuyAr^z1h6Xs>`DN; z62Ptmuqy%VN&veOz^(+aD*^0E0J{>vt^}|v0qjZuyAr^z1h6Xs>`DN;62Ptmuqy%V zN&veOz^(*LVpjri#|7Yy3t(3Q*p&cwC4gNCU{?azl>l}nfL#e-R|43T0CpvST?t@U z0@#%Rb|rva31C+O*p&cwC4gNCU{L}lu@M2d;{tHU1>lYgz#SKWJ1$`I(nq-C0;U_- z-^gC=$d}09mU4$TssAUq;|x30OQws>XsI+BuvNp=JHrks3u3I-87Ae>ZIQ50HFkH<81Ia z8$8YikF&|dWP``qAaOQ1m~4spJHh7#39%sk#KU-U8BiBZ*NqhCTdCs_Q{5R4ka-X_< zvLQFC=acHs^ON5DCnHNj!Wg#N2@gy^rFHWDkn3zjTMtraBj+}J%LHd!gGL*5HloQ| zNptmc2iIYdGs6>$Ut^Pw4yU8T>F97eI-HJYm5wH-lT%GcpVQIgbTl~~|0*4QPDh{9 z@vPF(>U6X^9j#7BtJCqa($VU4v^pJqPDh{9@vPF(=X8@~R@2evbo4nL|0?|lXskp{ z3C=jfQp;@Uo3xawLuILTZLGJ`yltVbreA_Hj+t{rW-=aUT-ncEHe?7nY9%&Yb$1AD>JJq zX702#6I+>yt<1z$W}+%H>nUcUDsvpHj#K%ZEHxUrA4Mv7#p}?w3=k%ROil(loD8xz8Tc3( z_!t@Z7#a8&8AJ;i_!t@Z7#a8&8Tc3(_!t@Z7#Uzo2Hr&m-bDu9MF!qQ2Hr&mF+&F4 zMTRLy4JiX3BZFum160YtyT~9~$N*b1z?KZMHyL0{2GK$W*pdOZWPmLhU`qzrk^#14 zkiE$uZ<7JSWW>P@nVTck>p1liuUb5_1ZSMgfk;j=`K}~nT-syM#`Q~Z#%X=ktT<$n)YiJYFBD%~N5vcWJ@3AV=8W@={vn)kMR;&UWQmIK zn=8VPE5eT}Vim3kKduN5t_TmV2oJ7^tZxw> zToE2z5&5AaJh&o!w<3JEB9p|0MR;&UcyL8{a7B1aC%5guF-9$XPIViA5^5q?||kzx@sVi7BEMXb3M5hE7G@$%wVGDtyof-}y@ zLdo5#`X((7btu>ob7O`MACiS?1!r8p1ZUh~#u;Y=pKKtLjR?~QGTDeTZQzp)WU_%t zHeyQ~m}DcWw1G)BFv&)2X#<&T zIG4TD2irg?8z^N1rEFxcY~YiP2-8M{X#=Hfpp=aW(*{b}Kq(veWCNdU;FAq}vVl)F zGFdiI$_7f=$Yj|-DH}DxHtGXx)Cbt847O1pV1qNx24|d&`T!f1!8WP{Y*Y!@;Ec0T zC19gUzy@cWjVb{fRRT7u1Z=HF#Iw}w93Gr;f==qks))nDKk=6I&1jLFKtoH3I#h^w zNStx~THuT;uSjsl$(r~h1(L@S&ban*IOEn553E%dN!H&b9#~71xR$73Em6T*;(@h9 zs%y25^pU%6)@qUqU#m$i)LKo}-qvbT=d_l(16j>)UHl-qw1cx0$+y(Uy^-~0`D8;( z``^PE7bVvc-?qRRSJAJDl-nXi)Hyms!~LojL|8KP`Rio5TPuoMd1q3a+2usqizch` z%4YgRH#>~}6E9{JJ^Fv~j%P<2qwgw^CS8*Be+uuKY=RyRIZ#_9zU^9_GJdpC`61FB zk27vH^1T}QUX6UOMq*YY->Z@D)yVg19bUX6UO=DSxjf2;X^kvQ2}%G1bi zNN~nQamF%a$)jBj5 zOg}gpAFiBnNUlU^BF~LDW_}M?y$6)ugYDRZ|FMTPx;>iQaj9F8*5LLrs&|4jPCWEtH51Ao zkL8ThMZ7ur7q+P;HLJ~X#`W!+qi?#O@<-*T6eu@TswtGW@(b`&Bw`USx1aK^MyQwg z(2}cjsF!Tb)vW4_QU|MAJs7W4>*`jGiWiZ6qsm2UG|l7*;#IbYr)AW)h&OL0PY|!N zMb^R1WC-Hbw+LgLQRUK&W62PhO)^7fG6eCeT%>N*sB$UdSme;Cby0_SZ}M07zFJ$u zD%VP`QKUX~Vtjr98DV{&NQ@z$l-bkQ&4!bct?v`%Nvo5q^<1@Uv_*T*A|Y}6M0v~- zgT?C;?Ip{2lF6MUA#ui6vUaSrP~Nu`dH>q@fa;Z`9k1RgO&9GwSPd)mQ-+QkcSt3; z;*1(rgDbAND%RHMv|L+>9;CV?ejRHDD-;>5O=OS(Y`(@sqIILvL^M0L#zgcxw#G#4 zU%W~asbXus(xf~8743Sk%rbm!dwwCfTA_EDoI0HolpY=^z;&H|GYc*F~ zzXVqt8taJ6Xj85@|3SFo))4Kk0hiVg^R6N0T|>;fhM0E^d80K%zH7);t|8`LL;Sl2 z&tVOiyoN|>4Wns|X0$E~FFr)eS@@qnSDZ+y{0iMemS3d2-zcuQiUe0&OwFUt71y^B zSKPp6x#D&p!8?%P9e8^?kmDW5@ebs82XefF@7aMI?~qH<$Ty5%S0ee$1Xr9Ow%A-H zyU45I_94Ag5m!XG;`nO>ZHLSi_b27&bx=X6LU3h^myg(PVATE4C7ha$XFVKY-=rZM~Id$O+x=h_U7P)lc3%X3=W4Q1I zU3h^myg(OTpvxpV9v8l#3t!NM7wDoE#Dy>D!WVSm3%c+HUHF17d_fn!pbKBng)iu$ z7Q{s@h>N;47Zo8c?rm~W7viEK#6?Aji;55zj1evvBV1I3xTpwmQ4!*b<6o+QWAA0{ zCBYRZvk|*B%~y$DCZUPZJw;+hw68&q}^p}WCmH*vZfgm#0_Zm`)6HoK|Z za}%MvL1;H|x*ME!gVSzm_T1pK8-#X)&~Bo2H#qI4a?cG;yG=Q2jBaq+O%~e?Lc599 z-QctvoOXlLZgAQSPP@Trw@I=kZlZNJIPC_f-QcvFnmso)dv0*r4Nkj3Xg3J$HaR%M z0QOGy1KEpCyFq9-HG6Il+6||V8-#X)&~6ag4MMxYW;fM(Za971RO`8^)^o$@A2*ynZa971aQe96^l`)Kf^Cy zRyE`|*7u35YRD(ssF%K~@dVsP^?iQQRSg+gTaZZ|)NgtoEZR!MRu4+Y*qo@e*ks2h zcH<;L_^~T~?1~?|;>WJ|u`7P;iXXe;$FBIXD}L;XAG_kmuK2Mle(Z`L zyW+>L_^~T~?1~?|;>WJ|u`7O4j?ybXcEyif@ncu~*cCr^#gAR_V^{px6+d>xk6rO& zSNzx&KX%2BUGZaA{MZ#gcEyif@ncu~*cCr^#gAR_xk6rO&SNzx&KX%2BUGZaA{MZ#gcEyif@xvA82T%QQ#rd%- ze(Z`LyW+>L_^~T~?1~?|;>WJ|u`7P;iXXe;$FBIXD}L;XAG_kmuK2Mle(Z`LyW+>L z_^~K{li;Zzt~ftjaelbs{BXtj;fnLa73VhzSDYWNIKSyej@7PJ8JU|@zXVsD5v??h zUs}Z#XPA^jw?)D}Wh~=0@*#dXbvNRLN`6P~yBMxsYVcaF zdO6ffw&vw~=ck*QVuqo9?PteV>SDDxYldO!cP^)c5&GJyRK3 z5|SpPmQCtyDwOugaYOz>Un9}mL^gH43l3DT`g$AD+Jn^F$hi$4vo)M?#`B1E&Avrx z_Lu4!{Bkr~a)qMVd1};l^^(~Wwj_so$!2J_QE#Jj#(iHs7AZ5<*W*{(q@u^E=y57~ zoQfW&;$Nkr&8cKoQ_<#Bv^f=RPQ}Yg#lK2Lr&H1CRPw8-Xm%=^or-3s;$@|x*{SGs zDmtBN%2DG?MVnL6=2Wyf6)!6lolaGA)!0(ER#RopWv*M+)NJ_zqfbOr<&zDX>R`8F?+FHS*);R5ocu)VP&zllEvCe z7O_aK(xA8yh~tkH8gIk>HBcMB*Kh zi5IT8oEWaSW14Wqbv|USxX#UR#bw6fipx=J1M#`y(m>rguSg?rlSZtNMy!xVtdK^mkVdSKM)oERY)J!K(!iE9uq6#_Nh5oc zM&2e3gh`8o8*<^qcb3eqc+=vOCAi{b4#dl9jw?>|UhiY%ANt5!HlwB5Xi#TL(nhIw z%BvB)5T8arteG+6!jh=tK9S==mrvtav8wmT2@}tsGHlxPVG}MF@5g8vIAhAxsagjW z2_?AVV(O+09BUPqRTyYf%t~jl)njnWvlG<8#_l4q#>!|qRzUSQ+ z(Ohvi{UENm0z9|^@X> zk1N1~E5L&*z=JCwGgN>FSAYjsKxU`_53T^;tpMMxz?7$EvH%aR01vJJ53T?Yt^g0N z01vJJ53YbbZvnnr0lr%S>u&|DycMwWR)7arfCpDVj97plSAZW^K%`hej99?RTLEis z1;mI2alE|vl?*O5?gUqy;jhJda1J#$%1Mjmiqqjk{IFJV#Z@G@;tn&eI4k&M1(~cw zm{yRcDZ>I1CQ2Uw{Lwo)Hpg)7bqSDcml z04tTjR;mQ7R0&w&inCHBV5LgH3Rj$!Dgi510#>R7tgS}Gv(!u-9$ayPPU^?1h{M3Y zrYmT%)m|m4w?f22;)<(io-3}T#MXpGt6waO);zVAHd$S}PBPG61Up4%HBMPelTG-1 zWRn#Tha9LaK8u#*v4kt`S8=%FRuT`aRNkzntt1{;NtC#fs9+^g!AjzRl|-s5wT|?Z z`*l`ok_%tS{Hb=ucqOZoE7ei!;s^Ov@@ra-Y4xiV=@W@*<&zCD?SBtfT$Ef( zeA_%%TuI+X6(Kn}w!@SwPBJp{=l2;cPjdy3m27C*a*mfH-^-EjE;94G!0KI~^e()RUHBinH1Q60X>!NqE=JTE z=|4vGOmM}C&n`6v${&yAiql2BIr*2H_nOqKHp>-PT9Tu04P0?n<%a%pD%&KZBi?wW zayNvHSA6Jv^>V0}Y(`~UgxMb4Og}tnVXOYQ_SK(sjzd7u?vG2}4kG;%Pmg#u*1?-#FxfIbZl9)xl zz^Han4R~?#_s}@wDqsS|m+kh~^pN(paZRV}&A(JYe&cCZgkqQfVSq@L=^OQpIM}n}~L& znMAwOOrjUD^(La@M%9Tr{GOUC*FfgJWz7}LsqYifT=`^!<~qq>*7x~IHCINKq~)l6 z^rm0;Xw8kylu2JfOnnnuU8)Y1t=6@&zNVG8VyjhgD|H@ntQz%W<-#Vo;xwz8Ifp)x zhqhYzJ)dm#!@1%tCZzH9WN9c&mXj87ZTMxn& zw}NPQg}M@&wt|><1u^dmV%`0Ku>$30?8`Nj&<7VN1{#Ta!) zvc8R1mC7r`@0CsWZm(3{?JN}}>HIc7N6vHk?UEHSwh<~>DBf-3O}s5*yZMMWwDCvJ zF+JAtH%SY&=O(ZC`}XAgA^&WX{M40gANy=j%FNAa?dJYvO}n%A+||Ck{p4Sbd7)>A z?j3e@*tz}b)UM;)9WzD@NGn^^_K2@SZyd2;|4m08@$4y`CcTrM-oJWPdU49FN4?T% zWX7%IGCDiAyxn=$oqs-hJgfSOomqvi&pWn5r!#*2 z-q53tyJPxm$Bnz}itK)86m~r=YeUx!58P-z@;?~tmfH! ztZTI^N`~C=ZOLD%FX{97cVG0mdEwc8Ke+ybz5`A@?qZeejiP_sNb|>R`heu?OCyP^B*d+<5t`=@y- zx4!&N$SoKE}P)z{eHPk+^Z`nO3ZJnA{|ggH-KcEXCQ zA3b5nt}Q2g`(5V~cmA#V#4(>8uirSL|4IKY?tkE+;r&1Q z_qqMIynappeT8@RAM)!b`v1rOO8>EeRsG-Uxw-$6f!q6U`q%FMi#qM=-+S?a{z?WM z@>kwVyZm4JNq_mAd|u8Y=aciw`Q>}$`{aA&`(+$59vPR6PsS4f1 zPktxASN(4J{W1^Chng4WN6nMWm&}{YpUk7or_8I&ugtT|x6HfDzg!2o9&%me`p9*X z>m}DsuAf{-xt?-e<@(BXmg_CoU9P{#fyjf%g~*4S zoyecap~$1irO2nqsmQCyt;ny)vByjp&c) zk?51?mFSn~ndqD7o#>zFq3EONrRb;VspzZdt>~}lvFNktwdl9#x#+v-y=)imvW0`6 zUvS{muO9f$nXzGiNo~gd_0OEN@4J&ddrv*)`TzL3{(H~4=l9%mN4rVizVU6~n^5(d zuRr+uh_BN#hVI^S{~x~E@z{cYzjfl?U1@c;UC!i-zx?;$$9LY{`-?9Yz0m86xBqkA zjuUo1y#4(9w{KgJU9|0nDHnd8>v{6C6~Fy<>x$9#tz)u1pWe0R^-uoix=x?0DIfE% zZ+71Ialz9&K05oBijN-fUbp4-`&MuM`zN`Z^L}&5rd=toeYpI~E+0-YU+_WQ9WQU} zHzjN1pZ<8!hUFdKT0iyc{Pj-_^{h+jwCVkOhWCH}(bRk28#65Fy{EILzWc_kx7K>k z?X!0M-aFUa*1PSRKeWGS_2^qZSoPGhVXOMSvf!Q3mzBJ8^UlA$?JPO&?H2~zy0W6j z5i7TT^v4yOf8TCJ&+v82pPkx%`2{cBxa^pu^koG4P2dUHp`TaWgA z(wjFPHru^ZJS^qiqjXn=Q^?K;45wAaa*%wQ)@ANIX?KA6=1=H5N)}^ca zwJsgAJAue=-*49GkkZ z|IRiGS5=u7s>{z`c`xnqf9WUv<#Y0RIggxA&MW7a?~(75@0IVDamaXNTrxfxr;Jy| zE#sHpA-_j{m;65Yo%~+)yXE)GJTM<>UYH*>PcmOJZ!&)}k20S!uQIk0O^MpCYFsuOhc1zaqyX&mz|%-y-KC?;`gi|Dp$?526>M zAEGCsFQPZ1KcYvXPoh_%U!rHCZ=!dif1-z?kD`~NpQ5LtucEi2zoN&Y&!X3&-=gQD z@1pmj{|Wnlc-wy^0`>0Tfp8d^5V=r?953v@u>Z&kXa6zXUOUmd{p1sO{dv_1Uu$Qa zaB|sJ`|j?S+U*OI?aw9OTIKpUzsfY`xym79hF3nf;p2*4>)jPk*Bn!EpXG^uGtV8? zZ)3Y{>PY zTSuzm$&S|hPg-1@clMRV?~W`l&h7N?qHFwrFS>E_w4(K2_9!Y^_;K%HHTU;Edd|e& zm-@Q*KL5mzdUg2g1HCT#`_x`5r&@ZQ^ZNEe?~2C@|8&Krg!EKGhxE4;LLNzY{` z`+ENUz^I-t59-?UwXUC9uDbql%L`Zj*7BQhwWYd4C(E?E))&0?WT;@m@JkAYojai5 zzP3jeT-$Zy@wrbveEdHa{r32ahMaVKXwb38Kk&@wJzl!&g&t$Sx~a$d=g#c$k1wn} zM&F#=qx$Z(`AMB0%Fq7l%KRP`wfWC{+#~;@-TU(PPJKJ?yUI{r(Tpqe1|^NmGkw)F zFVB&bcg5ECbC-YqMDCtJH{`C|GcmU`$)4M8!qK^XI`8a$-?49WA9C^i-H*+_s(a_m zG2Q!~RodPC?UCKTUcar|!yRAm_K5d^ZfU1n-RW$CdG;ZUW|FUgdzOB>7|J?KWhNa)VvccN!?hWmqzjQ;Nqla&} zKC{P$4KIDSKHPE5`WL=?c>Oy!d)6nvTDLysj-vH{PHnS(=&#>jx9+vSuluN@XWfBq zqt^Y;M9aE|X6%1|c>0R>^IgIB=XJdJ{Q;Az-yb*R==aAw|F8G{{LDY!8-C)o?`^CZ z`QGm~cYp89yPXAxOlYiv_O0 zaJy&a8UL(W8Q%ZZito;Qc*XAyOjvQ<!Y6k&F@Bet}Y(+&Ww*oo{)Rz z$n$O=G4hzD?M5E)!b_)>O}zZHs~41<_RZ35wU6E~ulDWT6KZd7-?etwE9*`j(*5>R zzwAEx)E8gwd}>K})rie&{xagc>X9RUH{|FMOFvwDN^bi*PN{wAH>Z>(n@@S>?JdLK zEC>yso^t;1htDY)?jQE;upv*rIBdsl*9?2|KPL}cy*6XmUwUt-soMWQjd{TIn!ERw z*JK`_RI`8a(vx3&=eCpI8$Rje<>kdE_q=J}N$!(gKWW@W{*$JKC!RF;E9*)3pBx_A ztKIUUcjetZ^wImyA6hWmK6K>^9fw{va^sMlLmnNHe*5o-yy!S}$eIDULk8UW_28XD zULU-oCNTK@2c{2hKf*b9?66}7uL^wb`d#Hqt}_a5b=^35nk(~*6J5tH?(BN(U!M>9 z`qV{(I<>!jP=31^gT@bc4cfjTd(gfozOH_G>9Xp}dd;gIx$>&&+n+hT+OyeOefqEt z)#LVlG;rOgFAg*xefz-6uAVv2)@#_n$2u1b>{ppQu;*PLI6ta*-nrnYxz4UVW;!Qd zJly%se|kEro@?j4`|*zlT>s&s0p|?*>ww2My9caza_j*63;hP1`|U9UR-gT~V^`{G zNB@uh;i%eii(|6oB1hG2BOKK>t0Ot3lgNTY?l_Y>&7>wtR*xm~J4L-D%9x|_4SA}= z5Y^!pwPe*@b*NSyypvURuIiAZI`mf^ey=(lxVfXYuUnS(?Z7_Tj_W6D>yLax`=@!1 z={(h8%~eBE9{TR)jw4lv`QHrebEmCZ{eYASuRjc0r z^66Xd2?witRiAP3iCow@S zt@nTN!Qajae|FiGgT8#S_ZJ=Jjt!r&;H^R1UtPE(|CXBYKd(Q=_0RTa>?nQl#PCyf zXSi0Mk+j1$pd@_bOMi8}bkF14U#ZRu+eU75&AI#R?T_uu48Qs8(SujyAHV(4X&uA< zJBAEC?z=CxrK~fB3;urT;P6Kaw)H!E&w&w7-8K03xpTKIuzh*p(<@#aT)XVjZA;Go z?7+S6ygT?$Cyd(`F8uhwGk0wpJowI`+s61e9hm#lp21JvdcwAkmV9tvT48wbn;Xiv z{cY0+2OfU!z~I&0`fdBe-c1J{TJr7S%}1TMEw|`js!;9o!6%F#x^2rX+YY4Pyk_v4 zr^jqtT(SGWZ*O{j@U3r7-!`i}eBh=d?-=}4jd$BgcXkZF)bFCf?RNcbn`6dt;lf@6 z2bWy1WLw&zqOf+Y+8gp{-pJt@NWyiiL--Nf` z)P7LTKTg=OH#b{bvj3s#Q;TQq7(3ae%_?g`HQPoCY#Qia+kB?*89F#+o{4d^MeAX@8->4r&d%#<9x|1jRxv;uc-GE87Jg!y{_Km6e;je|&d%NQlHOU>-|>pJY3Hpu zlat>x$#CKDhS&r4VNxdkt)|u3eAHHhW*NpY=tslN>XZVr+^}|=~3_sFdKYZ1$AM59de68vg8NS~C_mTG5s@sN4?CjTqlO>OiE57;emF9G&L1`Wus-{`JVXsYtk1sQ9yR>1KKpum)bPW` zv5Ye^1inj-jdSTM9MMlhmro@dA2mLv{{CM*!%AJV&*B9Mk7-s-?XeS3{p?Rm;|2 zMYo6zK1yAnhCc79mfbOZwyTz2G3Sv>ae2&lWvJQi64P?LYDtP2q3}GaFN*rEL8|4h zm`{ySE%um}3slR(n3k(m%ULlke$|qvM6Tgi%u_92#`JkkwZ#6?6{@9k%9N#%M{hpJ?2`>Y;qotYI!i` zQ*%|zkeHT-R7>oySfE;BfBP!cvNYyXpQ@JF>$Oj{?2qYlgs7~Vk%rkgR<*>Axj?n# z#LPyOYB@jVJg2CZjxjBhREy|P!wud^gg$#clxs_BI|ZK2TH?2o>ab+ z*cz2=tF}I+P1{QPHf`%u(zLC_+O#d2Z@h7Zxca&{BY?S_Q4g9vS%ztxBJ#FRoYTY^ zU`gX=m&=cf^L0ikP~_}JHBjVjNm#AEoUe>? zx`z3b$&52jIt-a`{?rje85yEc9_Qq7h9Jcd^&hH#V@zHgS?UvK0Da?3l$@(}#--CI zpEjZ43rgY$osy0w{o)MXxXkk78ZLsoi!;cQI3m_3&PikE$oSQ) zpD_6>ZRg3Sv>j_z&$LqhxR{w|j(RNy$`(D=Jf>wl5WcUQhV%z4dy8sN!q!cpKF`^_%WuOJ1;eD{cMr>%(OO| zx5H;C8?&zu&v>>n>GJt=&0X(qr=4;08SQs0o&H_^#p9BXKH^mKwI8KvmtWkg!>gCx zxwp&nZQFj>c1zbyuXNGYZ@9Q){?!Y=xqscPc7J-Kr0cV17i!&3KJ&=JdoSH}?j`A| zmtJ~o_PyOs)~2i~$S}K){rt1;=XZMl<1>GK`rg@UX2cHYo9_QzI75-LsM(ZFEJTV% zi~7yV&_uVW?1Fv|X?-76gw{2-k1DQ|*^fF;nVz?ZYEiD7R8K{@;j+U1Q}`f8p=Ev4E`jatgIxs6(E+P(EHKdr|sTGMpP zk2J||Pa;zkgC~t`eC>n_1bylON2+=ZJ~K+y>nnK_`b6W7fj$*hRouhYP|5R!(lI@j z`MIJ`Zq&rdHD4R`-Z*p!q^PZ@dP(#oa=2Ih4XD36)!#z(|JCa60EM-;sK29>I(?&- zc}`Wn?O(nNhj*zdxI}$mwo;Ajz6ysc6#2dD<8b&>C7PyJ!r^D$QF)l(s?Yz~q=h~_ z5YGR1lD2Ekci~%ZY^xP4+Z%ptN(b%3t-Hg&J10YXfBM#N@6IDXu3(otZcf5 z$dSb9#+cQ`RNHCnqx(!zEe3+=Vr&RUX7{6&(y=7JiO89Q{l^ z8RSy+5*?ndE{!~kT@7BVQZI*k$#(1kSJ&z*2f9ZWo?ciz?wUFIwbkx6+mr6x8D5|* zo>NrYW``Uhv9U9u}!b7_5*m3%tl*sdhNQ?7atDsH1_pMR?_Ye|kXJ(~eZup)hElBIdF@oc4$^PO#DU`$ z7ml8D=YbSWb;sh%9XlR%JV?Fd_$jp?9645(GqNRtH|?nJZO@8G26ep0fI69El)7l# zYo~QlpZPVbCE1#=Nq5x*?95u8+II)jb79HNhkLDurW_5;Lj7q^@SqUc>7_YUdv9%^ z+86V@#S+HYN2^gSeYI26-lmOI`*OUJ3QclPcKi{iHdP&0Ytz(zkanKh57%a>{i)ha zwXfAKR{PP~Rce2__ItIj)2>(hvDzQiew_9vwLe4isr^~nEowheo1^xVv|H7Fs&>2D zpQGKQ_S3Zc)P9EcfZAWIJ*f7VX!F(nGVL+7|E>0<+Pk$E)c#8C6}7(#-puP*JGx$b zQ?=Znxx}=oO=enuf~P_v zgwaPIwBUr%q7VAXhL%41n3qJg=wlXy&_7iaxpP5uzCpWRSMM6OAJgB9_5ox($tD?D zGIrk>(Wsidyy~H&BX1=ll9pko$n}#=T4WPx(l=@8t`5h`?Z5(pJljSN#-BaqlJUaq zJbsck?V{r9OZr+ELhn1p`M#sHhf`^r&=45STja|+EwyT$1(e~<ReFZTeYFT91fl zB=aTnbQJ%H_KZX$bkFEGCDkIKdY|zF=*ljvo_eo)MmY_Q>S+83{TW-j2ayu-Xd3ky zu3PMHu%gZMiF}vt(I}0TL20q)F)Xe46ecy!6fN4)>Me#%kY6jO(0^B+I%?RWB}w`u mbFXZYu|QA9Xz7t_6nE`8N@9|m>Ek*rFK^(m5u8&;_x}aq6Dnf> diff --git a/Source/External/v120/DSP2833x_common/lib/IQmath_fpu32.lib b/Source/External/v120/DSP2833x_common/lib/IQmath_fpu32.lib deleted file mode 100644 index 426802a7c95c2a6dcb2dfc71db83049aaa03df96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 861356 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 diff --git a/Source/External/v120/DSP2833x_common/lib/SFO_TI_Build.lib b/Source/External/v120/DSP2833x_common/lib/SFO_TI_Build.lib deleted file mode 100644 index 1956f36aa57077f5e0b6397d302e1f41bff4a68e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5822 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 diff --git a/Source/External/v120/DSP2833x_common/lib/SFO_TI_Build_V5_fpu.lib b/Source/External/v120/DSP2833x_common/lib/SFO_TI_Build_V5_fpu.lib deleted file mode 100644 index e35f7f812d4edf7db050bf37ffd74221ebede393..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26016 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 Gm;Da_e(M@UpV`^D5@f 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 IvIpn?0GB_0e*gdg diff --git a/Source/External/v120/DSP2833x_common/source/DSP2833x_Adc.c b/Source/External/v120/DSP2833x_common/source/DSP2833x_Adc.c index 70c3011..730415b 100644 --- a/Source/External/v120/DSP2833x_common/source/DSP2833x_Adc.c +++ b/Source/External/v120/DSP2833x_common/source/DSP2833x_Adc.c @@ -53,6 +53,7 @@ void InitAdc(void) // CPU_RATE define statement in the DSP2833x_Examples.h file must // contain the correct CPU clock period in nanoseconds. + AdcRegs.ADCREFSEL.bit.REF_SEL = 0x01; AdcRegs.ADCTRL3.all = 0x00E0; // Power up bandgap/reference/ADC circuits DELAY_US(ADC_usDELAY); // Delay before converting ADC channels //pause_us(50L); diff --git a/Source/External/v120/DSP2833x_common/source/DSP2833x_CSMPasswords.asm b/Source/External/v120/DSP2833x_common/source/DSP2833x_CSMPasswords.asm deleted file mode 100644 index 27eb60a..0000000 --- a/Source/External/v120/DSP2833x_common/source/DSP2833x_CSMPasswords.asm +++ /dev/null @@ -1,67 +0,0 @@ -;// TI File $Revision: /main/3 $ -;// Checkin $Date: June 26, 2007 16:41:07 $ -;//########################################################################### -;// -;// FILE: DSP2833x_CSMPasswords.asm -;// -;// TITLE: DSP2833x Code Security Module Passwords. -;// -;// DESCRIPTION: -;// -;// This file is used to specify password values to -;// program into the CSM password locations in Flash -;// at 0x33FFF8 - 0x33FFFF. -;// -;// In addition, the reserved locations 0x33FF80 - 0X33fff5 are -;// all programmed to 0x0000 -;// -;//########################################################################### -;// -;// Original source based on D.A. -;// -;// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -;// $Release Date: August 1, 2008 $ -;//########################################################################### - -; The "csmpasswords" section contains the actual CSM passwords that will be -; linked and programmed into to the CSM password locations (PWL) in flash. -; These passwords must be known in order to unlock the CSM module. -; All 0xFFFF's (erased) is the default value for the password locations (PWL). - -; It is recommended that all passwords be left as 0xFFFF during code -; development. Passwords of 0xFFFF do not activate code security and dummy -; reads of the CSM PWL registers is all that is required to unlock the CSM. -; When code development is complete, modify the passwords to activate the -; code security module. - - .sect "csmpasswds" - - .int 0xFFFF ;PWL0 (LSW of 128-bit password) - .int 0xFFFF ;PWL1 - .int 0xFFFF ;PWL2 - .int 0xFFFF ;PWL3 - .int 0xFFFF ;PWL4 - .int 0xFFFF ;PWL5 - .int 0xFFFF ;PWL6 - .int 0xFFFF ;PWL7 (MSW of 128-bit password) - -;---------------------------------------------------------------------- - -; For code security operation, all addresses between 0x33FF80 and -; 0X33fff5 cannot be used as program code or data. These locations -; must be programmed to 0x0000 when the code security password locations -; (PWL) are programmed. If security is not a concern, then these addresses -; can be used for code or data. - -; The section "csm_rsvd" can be used to program these locations to 0x0000. - - .sect "csm_rsvd" - .loop (33FFF5h - 33FF80h + 1) - .int 0x0000 - .endloop - -;//=========================================================================== -;// End of file. -;//=========================================================================== - - diff --git a/Source/External/v120/DSP2833x_common/source/DSP2833x_CodeStartBranch.asm b/Source/External/v120/DSP2833x_common/source/DSP2833x_CodeStartBranch.asm deleted file mode 100644 index 430efa3..0000000 --- a/Source/External/v120/DSP2833x_common/source/DSP2833x_CodeStartBranch.asm +++ /dev/null @@ -1,86 +0,0 @@ -;// TI File $Revision: /main/1 $ -;// Checkin $Date: August 18, 2006 13:45:55 $ -;//########################################################################### -;// -;// FILE: DSP2833x_CodeStartBranch.asm -;// -;// TITLE: Branch for redirecting code execution after boot. -;// -;// For these examples, code_start is the first code that is executed after -;// exiting the boot ROM code. -;// -;// The codestart section in the linker cmd file is used to physically place -;// this code at the correct memory location. This section should be placed -;// at the location the BOOT ROM will re-direct the code to. For example, -;// for boot to FLASH this code will be located at 0x3f7ff6. -;// -;// In addition, the example DSP2833x projects are setup such that the codegen -;// entry point is also set to the code_start label. This is done by linker -;// option -e in the project build options. When the debugger loads the code, -;// it will automatically set the PC to the "entry point" address indicated by -;// the -e linker option. In this case the debugger is simply assigning the PC, -;// it is not the same as a full reset of the device. -;// -;// The compiler may warn that the entry point for the project is other then -;// _c_init00. _c_init00 is the C environment setup and is run before -;// main() is entered. The code_start code will re-direct the execution -;// to _c_init00 and thus there is no worry and this warning can be ignored. -;// -;//########################################################################### -;// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -;// $Release Date: August 1, 2008 $ -;//########################################################################### - - -*********************************************************************** - -WD_DISABLE .set 1 ;set to 1 to disable WD, else set to 0 - - .ref _c_int00 - .global code_start - -*********************************************************************** -* Function: codestart section -* -* Description: Branch to code starting point -*********************************************************************** - - .sect "codestart" - -code_start: - .if WD_DISABLE == 1 - LB wd_disable ;Branch to watchdog disable code - .else - LB _c_int00 ;Branch to start of boot.asm in RTS library - .endif - -;end codestart section - - -*********************************************************************** -* Function: wd_disable -* -* Description: Disables the watchdog timer -*********************************************************************** - .if WD_DISABLE == 1 - - .text -wd_disable: - SETC OBJMODE ;Set OBJMODE for 28x object code - EALLOW ;Enable EALLOW protected register access - MOVZ DP, #7029h>>6 ;Set data page for WDCR register - MOV @7029h, #0068h ;Set WDDIS bit in WDCR to disable WD - EDIS ;Disable EALLOW protected register access - LB _c_int00 ;Branch to start of boot.asm in RTS library - - .endif - -;end wd_disable - - - - .end - -;//=========================================================================== -;// End of file. -;//=========================================================================== diff --git a/Source/External/v120/DSP2833x_common/source/DSP2833x_DBGIER.asm b/Source/External/v120/DSP2833x_common/source/DSP2833x_DBGIER.asm deleted file mode 100644 index 7c226ce..0000000 --- a/Source/External/v120/DSP2833x_common/source/DSP2833x_DBGIER.asm +++ /dev/null @@ -1,28 +0,0 @@ -;// TI File $Revision: /main/1 $ -;// Checkin $Date: August 18, 2006 13:46:03 $ -;//########################################################################### -;// -;// FILE: DSP2833x_DBGIER.asm -;// -;// TITLE: Set the DBGIER register -;// -;// DESCRIPTION: -;// -;// Function to set the DBGIER register (for realtime emulation). -;// Function Prototype: void SetDBGIER(Uint16) -;// Useage: SetDBGIER(value); -;// Input Parameters: Uint16 value = value to put in DBGIER register. -;// Return Value: none -;// -;//########################################################################### -;// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -;// $Release Date: August 1, 2008 $ -;//########################################################################### - .global _SetDBGIER - .text - -_SetDBGIER: - MOV *SP++,AL - POP DBGIER - LRETR - diff --git a/Source/External/v120/DSP2833x_common/source/DSP2833x_DMA.c b/Source/External/v120/DSP2833x_common/source/DSP2833x_DMA.c deleted file mode 100644 index 83c4f3c..0000000 --- a/Source/External/v120/DSP2833x_common/source/DSP2833x_DMA.c +++ /dev/null @@ -1,590 +0,0 @@ -//########################################################################### -// -// FILE: DSP2833x_DMA.c -// -// TITLE: DSP2833x Device DMA Initialization & Support Functions. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP2833x_Device.h" // Headerfile Include File -#include "DSP2833x_Examples.h" // Examples Include File - -// This function initializes the DMA to a known state. -// -void DMAInitialize(void) -{ - EALLOW; - - // Perform a hard reset on DMA - DmaRegs.DMACTRL.bit.HARDRESET = 1; - asm (" nop"); // one NOP required after HARDRESET - - // Allow DMA to run free on emulation suspend - DmaRegs.DEBUGCTRL.bit.FREE = 1; - - EDIS; -} - - -void DMACH1AddrConfig(volatile Uint16 *DMA_Dest,volatile Uint16 *DMA_Source) -{ - EALLOW; - // Set up SOURCE address: - DmaRegs.CH1.SRC_BEG_ADDR_SHADOW = (Uint32)DMA_Source; // Point to beginning of source buffer - DmaRegs.CH1.SRC_ADDR_SHADOW = (Uint32)DMA_Source; - - // Set up DESTINATION address: - DmaRegs.CH1.DST_BEG_ADDR_SHADOW = (Uint32)DMA_Dest; // Point to beginning of destination buffer - DmaRegs.CH1.DST_ADDR_SHADOW = (Uint32)DMA_Dest; - - - EDIS; -} - -void DMACH1BurstConfig(Uint16 bsize, int16 srcbstep, int16 desbstep) -{ - EALLOW; - - // Set up BURST registers: - DmaRegs.CH1.BURST_SIZE.all = bsize; // Number of words(X-1) x-ferred in a burst - DmaRegs.CH1.SRC_BURST_STEP = srcbstep; // Increment source addr between each word x-ferred - DmaRegs.CH1.DST_BURST_STEP = desbstep; // Increment dest addr between each word x-ferred - - - EDIS; -} - -void DMACH1TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep) -{ - EALLOW; - - // Set up TRANSFER registers: - DmaRegs.CH1.TRANSFER_SIZE = tsize; // Number of bursts per transfer, DMA interrupt will occur after completed transfer - DmaRegs.CH1.SRC_TRANSFER_STEP = srctstep; // TRANSFER_STEP is ignored when WRAP occurs - DmaRegs.CH1.DST_TRANSFER_STEP = deststep; // TRANSFER_STEP is ignored when WRAP occurs - - EDIS; -} - -void DMACH1WrapConfig(Uint16 srcwsize, int16 srcwstep, Uint16 deswsize, int16 deswstep) -{ - EALLOW; - - // Set up WRAP registers: - DmaRegs.CH1.SRC_WRAP_SIZE = srcwsize; // Wrap source address after N bursts - DmaRegs.CH1.SRC_WRAP_STEP = srcwstep; // Step for source wrap - - DmaRegs.CH1.DST_WRAP_SIZE = deswsize; // Wrap destination address after N bursts - DmaRegs.CH1.DST_WRAP_STEP = deswstep; // Step for destination wrap - - EDIS; -} - - -void DMACH1ModeConfig(Uint16 persel, Uint16 perinte, Uint16 oneshot, Uint16 cont, Uint16 synce, Uint16 syncsel, Uint16 ovrinte, Uint16 datasize, Uint16 chintmode, Uint16 chinte) -{ - EALLOW; - - // Set up MODE Register: - DmaRegs.CH1.MODE.bit.PERINTSEL = persel; // Passed DMA channel as peripheral interrupt source - DmaRegs.CH1.MODE.bit.PERINTE = perinte; // Peripheral interrupt enable - DmaRegs.CH1.MODE.bit.ONESHOT = oneshot; // Oneshot enable - DmaRegs.CH1.MODE.bit.CONTINUOUS = cont; // Continous enable - DmaRegs.CH1.MODE.bit.SYNCE = synce; // Peripheral sync enable/disable - DmaRegs.CH1.MODE.bit.SYNCSEL = syncsel; // Sync effects source or destination - DmaRegs.CH1.MODE.bit.OVRINTE = ovrinte; // Enable/disable the overflow interrupt - DmaRegs.CH1.MODE.bit.DATASIZE = datasize; // 16-bit/32-bit data size transfers - DmaRegs.CH1.MODE.bit.CHINTMODE = chintmode; // Generate interrupt to CPU at beginning/end of transfer - DmaRegs.CH1.MODE.bit.CHINTE = chinte; // Channel Interrupt to CPU enable - - // Clear any spurious flags: - DmaRegs.CH1.CONTROL.bit.PERINTCLR = 1; // Clear any spurious interrupt flags - DmaRegs.CH1.CONTROL.bit.SYNCCLR = 1; // Clear any spurious sync flags - DmaRegs.CH1.CONTROL.bit.ERRCLR = 1; // Clear any spurious sync error flags - - // Initialize PIE vector for CPU interrupt: - PieCtrlRegs.PIEIER7.bit.INTx1 = 1; // Enable DMA CH1 interrupt in PIE - - EDIS; -} - -// This function starts DMA Channel 1. -void StartDMACH1(void) -{ - EALLOW; - DmaRegs.CH1.CONTROL.bit.RUN = 1; - EDIS; -} - -void DMACH2AddrConfig(volatile Uint16 *DMA_Dest,volatile Uint16 *DMA_Source) -{ - EALLOW; - - // Set up SOURCE address: - DmaRegs.CH2.SRC_BEG_ADDR_SHADOW = (Uint32)DMA_Source; // Point to beginning of source buffer - DmaRegs.CH2.SRC_ADDR_SHADOW = (Uint32)DMA_Source; - - // Set up DESTINATION address: - DmaRegs.CH2.DST_BEG_ADDR_SHADOW = (Uint32)DMA_Dest; // Point to beginning of destination buffer - DmaRegs.CH2.DST_ADDR_SHADOW = (Uint32)DMA_Dest; - - - EDIS; -} - -void DMACH2BurstConfig(Uint16 bsize, int16 srcbstep, int16 desbstep) -{ - EALLOW; - - // Set up BURST registers: - DmaRegs.CH2.BURST_SIZE.all = bsize; // Number of words(X-1) x-ferred in a burst - DmaRegs.CH2.SRC_BURST_STEP = srcbstep; // Increment source addr between each word x-ferred - DmaRegs.CH2.DST_BURST_STEP = desbstep; // Increment dest addr between each word x-ferred - - - EDIS; -} - -void DMACH2TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep) -{ - EALLOW; - - // Set up TRANSFER registers: - DmaRegs.CH2.TRANSFER_SIZE = tsize; // Number of bursts per transfer, DMA interrupt will occur after completed transfer - DmaRegs.CH2.SRC_TRANSFER_STEP = srctstep; // TRANSFER_STEP is ignored when WRAP occurs - DmaRegs.CH2.DST_TRANSFER_STEP = deststep; // TRANSFER_STEP is ignored when WRAP occurs - - EDIS; -} - -void DMACH2WrapConfig(Uint16 srcwsize, int16 srcwstep, Uint16 deswsize, int16 deswstep) -{ - EALLOW; - - // Set up WRAP registers: - DmaRegs.CH2.SRC_WRAP_SIZE = srcwsize; // Wrap source address after N bursts - DmaRegs.CH2.SRC_WRAP_STEP = srcwstep; // Step for source wrap - - DmaRegs.CH2.DST_WRAP_SIZE = deswsize; // Wrap destination address after N bursts - DmaRegs.CH2.DST_WRAP_STEP = deswstep; // Step for destination wrap - - EDIS; -} - - -void DMACH2ModeConfig(Uint16 persel, Uint16 perinte, Uint16 oneshot, Uint16 cont, Uint16 synce, Uint16 syncsel, Uint16 ovrinte, Uint16 datasize, Uint16 chintmode, Uint16 chinte) -{ - EALLOW; - - // Set up MODE Register: - DmaRegs.CH2.MODE.bit.PERINTSEL = persel; // Passed DMA channel as peripheral interrupt source - DmaRegs.CH2.MODE.bit.PERINTE = perinte; // Peripheral interrupt enable - DmaRegs.CH2.MODE.bit.ONESHOT = oneshot; // Oneshot enable - DmaRegs.CH2.MODE.bit.CONTINUOUS = cont; // Continous enable - DmaRegs.CH2.MODE.bit.SYNCE = synce; // Peripheral sync enable/disable - DmaRegs.CH2.MODE.bit.SYNCSEL = syncsel; // Sync effects source or destination - DmaRegs.CH2.MODE.bit.OVRINTE = ovrinte; // Enable/disable the overflow interrupt - DmaRegs.CH2.MODE.bit.DATASIZE = datasize; // 16-bit/32-bit data size transfers - DmaRegs.CH2.MODE.bit.CHINTMODE = chintmode; // Generate interrupt to CPU at beginning/end of transfer - DmaRegs.CH2.MODE.bit.CHINTE = chinte; // Channel Interrupt to CPU enable - - // Clear any spurious flags: - DmaRegs.CH2.CONTROL.bit.PERINTCLR = 1; // Clear any spurious interrupt flags - DmaRegs.CH2.CONTROL.bit.SYNCCLR = 1; // Clear any spurious sync flags - DmaRegs.CH2.CONTROL.bit.ERRCLR = 1; // Clear any spurious sync error flags - - // Initialize PIE vector for CPU interrupt: - PieCtrlRegs.PIEIER7.bit.INTx2 = 1; // Enable DMA CH2 interrupt in PIE - - EDIS; -} - - - -// This function starts DMA Channel 2. -void StartDMACH2(void) -{ - EALLOW; - DmaRegs.CH2.CONTROL.bit.RUN = 1; - EDIS; -} - - - -void DMACH3AddrConfig(volatile Uint16 *DMA_Dest,volatile Uint16 *DMA_Source) -{ - EALLOW; - - // Set up SOURCE address: - DmaRegs.CH3.SRC_BEG_ADDR_SHADOW = (Uint32)DMA_Source; // Point to beginning of source buffer - DmaRegs.CH3.SRC_ADDR_SHADOW = (Uint32)DMA_Source; - - // Set up DESTINATION address: - DmaRegs.CH3.DST_BEG_ADDR_SHADOW = (Uint32)DMA_Dest; // Point to beginning of destination buffer - DmaRegs.CH3.DST_ADDR_SHADOW = (Uint32)DMA_Dest; - - - EDIS; -} - -void DMACH3BurstConfig(Uint16 bsize, int16 srcbstep, int16 desbstep) -{ - EALLOW; - - // Set up BURST registers: - DmaRegs.CH3.BURST_SIZE.all = bsize; // Number of words(X-1) x-ferred in a burst - DmaRegs.CH3.SRC_BURST_STEP = srcbstep; // Increment source addr between each word x-ferred - DmaRegs.CH3.DST_BURST_STEP = desbstep; // Increment dest addr between each word x-ferred - - - EDIS; -} - -void DMACH3TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep) -{ - EALLOW; - - // Set up TRANSFER registers: - DmaRegs.CH3.TRANSFER_SIZE = tsize; // Number of bursts per transfer, DMA interrupt will occur after completed transfer - DmaRegs.CH3.SRC_TRANSFER_STEP = srctstep; // TRANSFER_STEP is ignored when WRAP occurs - DmaRegs.CH3.DST_TRANSFER_STEP = deststep; // TRANSFER_STEP is ignored when WRAP occurs - - EDIS; -} - -void DMACH3WrapConfig(Uint16 srcwsize, int16 srcwstep, Uint16 deswsize, int16 deswstep) -{ - EALLOW; - - // Set up WRAP registers: - DmaRegs.CH3.SRC_WRAP_SIZE = srcwsize; // Wrap source address after N bursts - DmaRegs.CH3.SRC_WRAP_STEP = srcwstep; // Step for source wrap - - DmaRegs.CH3.DST_WRAP_SIZE = deswsize; // Wrap destination address after N bursts - DmaRegs.CH3.DST_WRAP_STEP = deswstep; // Step for destination wrap - - EDIS; -} - - -void DMACH3ModeConfig(Uint16 persel, Uint16 perinte, Uint16 oneshot, Uint16 cont, Uint16 synce, Uint16 syncsel, Uint16 ovrinte, Uint16 datasize, Uint16 chintmode, Uint16 chinte) -{ - EALLOW; - - // Set up MODE Register: - DmaRegs.CH3.MODE.bit.PERINTSEL = persel; // Passed DMA channel as peripheral interrupt source - DmaRegs.CH3.MODE.bit.PERINTE = perinte; // Peripheral interrupt enable - DmaRegs.CH3.MODE.bit.ONESHOT = oneshot; // Oneshot enable - DmaRegs.CH3.MODE.bit.CONTINUOUS = cont; // Continous enable - DmaRegs.CH3.MODE.bit.SYNCE = synce; // Peripheral sync enable/disable - DmaRegs.CH3.MODE.bit.SYNCSEL = syncsel; // Sync effects source or destination - DmaRegs.CH3.MODE.bit.OVRINTE = ovrinte; // Enable/disable the overflow interrupt - DmaRegs.CH3.MODE.bit.DATASIZE = datasize; // 16-bit/32-bit data size transfers - DmaRegs.CH3.MODE.bit.CHINTMODE = chintmode; // Generate interrupt to CPU at beginning/end of transfer - DmaRegs.CH3.MODE.bit.CHINTE = chinte; // Channel Interrupt to CPU enable - - // Clear any spurious flags: - DmaRegs.CH3.CONTROL.bit.PERINTCLR = 1; // Clear any spurious interrupt flags - DmaRegs.CH3.CONTROL.bit.SYNCCLR = 1; // Clear any spurious sync flags - DmaRegs.CH3.CONTROL.bit.ERRCLR = 1; // Clear any spurious sync error flags - - // Initialize PIE vector for CPU interrupt: - PieCtrlRegs.PIEIER7.bit.INTx3 = 1; // Enable DMA CH3 interrupt in PIE - - EDIS; -} - -// This function starts DMA Channel 3. -void StartDMACH3(void) -{ - EALLOW; - DmaRegs.CH3.CONTROL.bit.RUN = 1; - EDIS; -} - - -void DMACH4AddrConfig(volatile Uint16 *DMA_Dest,volatile Uint16 *DMA_Source) -{ - EALLOW; - - // Set up SOURCE address: - DmaRegs.CH4.SRC_BEG_ADDR_SHADOW = (Uint32)DMA_Source; // Point to beginning of source buffer - DmaRegs.CH4.SRC_ADDR_SHADOW = (Uint32)DMA_Source; - - // Set up DESTINATION address: - DmaRegs.CH4.DST_BEG_ADDR_SHADOW = (Uint32)DMA_Dest; // Point to beginning of destination buffer - DmaRegs.CH4.DST_ADDR_SHADOW = (Uint32)DMA_Dest; - - - EDIS; -} - -void DMACH4BurstConfig(Uint16 bsize, int16 srcbstep, int16 desbstep) -{ - EALLOW; - - // Set up BURST registers: - DmaRegs.CH4.BURST_SIZE.all = bsize; // Number of words(X-1) x-ferred in a burst - DmaRegs.CH4.SRC_BURST_STEP = srcbstep; // Increment source addr between each word x-ferred - DmaRegs.CH4.DST_BURST_STEP = desbstep; // Increment dest addr between each word x-ferred - - - EDIS; -} - -void DMACH4TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep) -{ - EALLOW; - - // Set up TRANSFER registers: - DmaRegs.CH4.TRANSFER_SIZE = tsize; // Number of bursts per transfer, DMA interrupt will occur after completed transfer - DmaRegs.CH4.SRC_TRANSFER_STEP = srctstep; // TRANSFER_STEP is ignored when WRAP occurs - DmaRegs.CH4.DST_TRANSFER_STEP = deststep; // TRANSFER_STEP is ignored when WRAP occurs - - EDIS; -} - -void DMACH4WrapConfig(Uint16 srcwsize, int16 srcwstep, Uint16 deswsize, int16 deswstep) -{ - EALLOW; - - // Set up WRAP registers: - DmaRegs.CH4.SRC_WRAP_SIZE = srcwsize; // Wrap source address after N bursts - DmaRegs.CH4.SRC_WRAP_STEP = srcwstep; // Step for source wrap - - DmaRegs.CH4.DST_WRAP_SIZE = deswsize; // Wrap destination address after N bursts - DmaRegs.CH4.DST_WRAP_STEP = deswstep; // Step for destination wrap - - EDIS; -} - - -void DMACH4ModeConfig(Uint16 persel, Uint16 perinte, Uint16 oneshot, Uint16 cont, Uint16 synce, Uint16 syncsel, Uint16 ovrinte, Uint16 datasize, Uint16 chintmode, Uint16 chinte) -{ - EALLOW; - - // Set up MODE Register: - DmaRegs.CH4.MODE.bit.PERINTSEL = persel; // Passed DMA channel as peripheral interrupt source - DmaRegs.CH4.MODE.bit.PERINTE = perinte; // Peripheral interrupt enable - DmaRegs.CH4.MODE.bit.ONESHOT = oneshot; // Oneshot enable - DmaRegs.CH4.MODE.bit.CONTINUOUS = cont; // Continous enable - DmaRegs.CH4.MODE.bit.SYNCE = synce; // Peripheral sync enable/disable - DmaRegs.CH4.MODE.bit.SYNCSEL = syncsel; // Sync effects source or destination - DmaRegs.CH4.MODE.bit.OVRINTE = ovrinte; // Enable/disable the overflow interrupt - DmaRegs.CH4.MODE.bit.DATASIZE = datasize; // 16-bit/32-bit data size transfers - DmaRegs.CH4.MODE.bit.CHINTMODE = chintmode; // Generate interrupt to CPU at beginning/end of transfer - DmaRegs.CH4.MODE.bit.CHINTE = chinte; // Channel Interrupt to CPU enable - - // Clear any spurious flags: - DmaRegs.CH4.CONTROL.bit.PERINTCLR = 1; // Clear any spurious interrupt flags - DmaRegs.CH4.CONTROL.bit.SYNCCLR = 1; // Clear any spurious sync flags - DmaRegs.CH4.CONTROL.bit.ERRCLR = 1; // Clear any spurious sync error flags - - // Initialize PIE vector for CPU interrupt: - PieCtrlRegs.PIEIER7.bit.INTx4 = 1; // Enable DMA CH4 interrupt in PIE - - EDIS; -} - - -// This function starts DMA Channel 4. -void StartDMACH4(void) -{ - EALLOW; - DmaRegs.CH4.CONTROL.bit.RUN = 1; - EDIS; -} - - -void DMACH5AddrConfig(volatile Uint16 *DMA_Dest,volatile Uint16 *DMA_Source) -{ - EALLOW; - - // Set up SOURCE address: - DmaRegs.CH5.SRC_BEG_ADDR_SHADOW = (Uint32)DMA_Source; // Point to beginning of source buffer - DmaRegs.CH5.SRC_ADDR_SHADOW = (Uint32)DMA_Source; - - // Set up DESTINATION address: - DmaRegs.CH5.DST_BEG_ADDR_SHADOW = (Uint32)DMA_Dest; // Point to beginning of destination buffer - DmaRegs.CH5.DST_ADDR_SHADOW = (Uint32)DMA_Dest; - - - EDIS; -} - -void DMACH5BurstConfig(Uint16 bsize, int16 srcbstep, int16 desbstep) -{ - EALLOW; - - - // Set up BURST registers: - DmaRegs.CH5.BURST_SIZE.all = bsize; // Number of words(X-1) x-ferred in a burst - DmaRegs.CH5.SRC_BURST_STEP = srcbstep; // Increment source addr between each word x-ferred - DmaRegs.CH5.DST_BURST_STEP = desbstep; // Increment dest addr between each word x-ferred - - EDIS; -} - -void DMACH5TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep) -{ - EALLOW; - - - // Set up TRANSFER registers: - DmaRegs.CH5.TRANSFER_SIZE = tsize; // Number of bursts per transfer, DMA interrupt will occur after completed transfer - DmaRegs.CH5.SRC_TRANSFER_STEP = srctstep; // TRANSFER_STEP is ignored when WRAP occurs - DmaRegs.CH5.DST_TRANSFER_STEP = deststep; // TRANSFER_STEP is ignored when WRAP occurs - - EDIS; -} - -void DMACH5WrapConfig(Uint16 srcwsize, int16 srcwstep, Uint16 deswsize, int16 deswstep) -{ - EALLOW; - - - // Set up WRAP registers: - DmaRegs.CH5.SRC_WRAP_SIZE = srcwsize; // Wrap source address after N bursts - DmaRegs.CH5.SRC_WRAP_STEP = srcwstep; // Step for source wrap - - DmaRegs.CH5.DST_WRAP_SIZE = deswsize; // Wrap destination address after N bursts - DmaRegs.CH5.DST_WRAP_STEP = deswstep; // Step for destination wrap - - EDIS; -} - - -void DMACH5ModeConfig(Uint16 persel, Uint16 perinte, Uint16 oneshot, Uint16 cont, Uint16 synce, Uint16 syncsel, Uint16 ovrinte, Uint16 datasize, Uint16 chintmode, Uint16 chinte) -{ - EALLOW; - - // Set up MODE Register: - DmaRegs.CH5.MODE.bit.PERINTSEL = persel; // Passed DMA channel as peripheral interrupt source - DmaRegs.CH5.MODE.bit.PERINTE = perinte; // Peripheral interrupt enable - DmaRegs.CH5.MODE.bit.ONESHOT = oneshot; // Oneshot enable - DmaRegs.CH5.MODE.bit.CONTINUOUS = cont; // Continous enable - DmaRegs.CH5.MODE.bit.SYNCE = synce; // Peripheral sync enable/disable - DmaRegs.CH5.MODE.bit.SYNCSEL = syncsel; // Sync effects source or destination - DmaRegs.CH5.MODE.bit.OVRINTE = ovrinte; // Enable/disable the overflow interrupt - DmaRegs.CH5.MODE.bit.DATASIZE = datasize; // 16-bit/32-bit data size transfers - DmaRegs.CH5.MODE.bit.CHINTMODE = chintmode; // Generate interrupt to CPU at beginning/end of transfer - DmaRegs.CH5.MODE.bit.CHINTE = chinte; // Channel Interrupt to CPU enable - - // Clear any spurious flags: - DmaRegs.CH5.CONTROL.bit.PERINTCLR = 1; // Clear any spurious interrupt flags - DmaRegs.CH5.CONTROL.bit.SYNCCLR = 1; // Clear any spurious sync flags - DmaRegs.CH5.CONTROL.bit.ERRCLR = 1; // Clear any spurious sync error flags - - // Initialize PIE vector for CPU interrupt: - PieCtrlRegs.PIEIER7.bit.INTx5 = 1; // Enable DMA CH5 interrupt in PIE - - EDIS; -} - -// This function starts DMA Channel 5. -void StartDMACH5(void) -{ - EALLOW; - DmaRegs.CH5.CONTROL.bit.RUN = 1; - EDIS; -} - - - -void DMACH6AddrConfig(volatile Uint16 *DMA_Dest,volatile Uint16 *DMA_Source) -{ - EALLOW; - - // Set up SOURCE address: - DmaRegs.CH6.SRC_BEG_ADDR_SHADOW = (Uint32)DMA_Source; // Point to beginning of source buffer - DmaRegs.CH6.SRC_ADDR_SHADOW = (Uint32)DMA_Source; - - // Set up DESTINATION address: - DmaRegs.CH6.DST_BEG_ADDR_SHADOW = (Uint32)DMA_Dest; // Point to beginning of destination buffer - DmaRegs.CH6.DST_ADDR_SHADOW = (Uint32)DMA_Dest; - - - EDIS; -} - -void DMACH6BurstConfig(Uint16 bsize,Uint16 srcbstep, int16 desbstep) -{ - EALLOW; - - // Set up BURST registers: - DmaRegs.CH6.BURST_SIZE.all = bsize; // Number of words(X-1) x-ferred in a burst - DmaRegs.CH6.SRC_BURST_STEP = srcbstep; // Increment source addr between each word x-ferred - DmaRegs.CH6.DST_BURST_STEP = desbstep; // Increment dest addr between each word x-ferred - - - EDIS; -} - -void DMACH6TransferConfig(Uint16 tsize, int16 srctstep, int16 deststep) -{ - EALLOW; - - // Set up TRANSFER registers: - DmaRegs.CH6.TRANSFER_SIZE = tsize; // Number of bursts per transfer, DMA interrupt will occur after completed transfer - DmaRegs.CH6.SRC_TRANSFER_STEP = srctstep; // TRANSFER_STEP is ignored when WRAP occurs - DmaRegs.CH6.DST_TRANSFER_STEP = deststep; // TRANSFER_STEP is ignored when WRAP occurs - - EDIS; -} - -void DMACH6WrapConfig(Uint16 srcwsize, int16 srcwstep, Uint16 deswsize, int16 deswstep) -{ - EALLOW; - - // Set up WRAP registers: - DmaRegs.CH6.SRC_WRAP_SIZE = srcwsize; // Wrap source address after N bursts - DmaRegs.CH6.SRC_WRAP_STEP = srcwstep; // Step for source wrap - - DmaRegs.CH6.DST_WRAP_SIZE = deswsize; // Wrap destination address after N bursts - DmaRegs.CH6.DST_WRAP_STEP = deswstep; // Step for destination wrap - - EDIS; -} - - -void DMACH6ModeConfig(Uint16 persel, Uint16 perinte, Uint16 oneshot, Uint16 cont, Uint16 synce, Uint16 syncsel, Uint16 ovrinte, Uint16 datasize, Uint16 chintmode, Uint16 chinte) -{ - EALLOW; - - // Set up MODE Register: - DmaRegs.CH6.MODE.bit.PERINTSEL = persel; // Passed DMA channel as peripheral interrupt source - DmaRegs.CH6.MODE.bit.PERINTE = perinte; // Peripheral interrupt enable - DmaRegs.CH6.MODE.bit.ONESHOT = oneshot; // Oneshot enable - DmaRegs.CH6.MODE.bit.CONTINUOUS = cont; // Continous enable - DmaRegs.CH6.MODE.bit.SYNCE = synce; // Peripheral sync enable/disable - DmaRegs.CH6.MODE.bit.SYNCSEL = syncsel; // Sync effects source or destination - DmaRegs.CH6.MODE.bit.OVRINTE = ovrinte; // Enable/disable the overflow interrupt - DmaRegs.CH6.MODE.bit.DATASIZE = datasize; // 16-bit/32-bit data size transfers - DmaRegs.CH6.MODE.bit.CHINTMODE = chintmode; // Generate interrupt to CPU at beginning/end of transfer - DmaRegs.CH6.MODE.bit.CHINTE = chinte; // Channel Interrupt to CPU enable - - // Clear any spurious flags: - DmaRegs.CH6.CONTROL.bit.PERINTCLR = 1; // Clear any spurious interrupt flags - DmaRegs.CH6.CONTROL.bit.SYNCCLR = 1; // Clear any spurious sync flags - DmaRegs.CH6.CONTROL.bit.ERRCLR = 1; // Clear any spurious sync error flags - - // Initialize PIE vector for CPU interrupt: - PieCtrlRegs.PIEIER7.bit.INTx6 = 1; // Enable DMA CH6 interrupt in PIE - - EDIS; -} - -// This function starts DMA Channel 6. -void StartDMACH6(void) -{ - EALLOW; - DmaRegs.CH6.CONTROL.bit.RUN = 1; - EDIS; -} - -//=========================================================================== -// No more. -//=========================================================================== diff --git a/Source/External/v120/DSP2833x_common/source/DSP2833x_DefaultIsr.c b/Source/External/v120/DSP2833x_common/source/DSP2833x_DefaultIsr.c deleted file mode 100644 index df76fda..0000000 --- a/Source/External/v120/DSP2833x_common/source/DSP2833x_DefaultIsr.c +++ /dev/null @@ -1,1187 +0,0 @@ -// TI File $Revision: /main/2 $ -// Checkin $Date: January 14, 2008 11:17:46 $ -//########################################################################### -// -// FILE: DSP2833x_DefaultIsr.c -// -// TITLE: DSP2833x Device Default Interrupt Service Routines. -// -// This file contains shell ISR routines for the 2833x PIE vector table. -// Typically these shell ISR routines can be used to populate the entire PIE -// vector table during device debug. In this manner if an interrupt is taken -// during firmware development, there will always be an ISR to catch it. -// -// As develpment progresses, these ISR rotuines can be eliminated and replaced -// with the user's own ISR routines for each interrupt. Since these shell ISRs -// include infinite loops they will typically not be included as-is in the final -// production firmware. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File -#include "DSP2833x_Examples.h" // DSP2833x Examples Include File - - -// Connected to INT13 of CPU (use MINT13 mask): -// Note CPU-Timer1 is reserved for TI use, however XINT13 -// ISR can be used by the user. -interrupt void INT13_ISR(void) // INT13 or CPU-Timer1 -{ - // Insert ISR Code here - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -// Note CPU-Timer2 is reserved for TI use. -interrupt void INT14_ISR(void) // CPU-Timer2 -{ - // Insert ISR Code here - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -interrupt void DATALOG_ISR(void) // Datalogging interrupt -{ - // Insert ISR Code here - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -interrupt void RTOSINT_ISR(void) // RTOS interrupt -{ - // Insert ISR Code here - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -interrupt void EMUINT_ISR(void) // Emulation interrupt -{ - // Insert ISR Code here - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -interrupt void NMI_ISR(void) // Non-maskable interrupt -{ - // Insert ISR Code here - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -interrupt void ILLEGAL_ISR(void) // Illegal operation TRAP -{ - // Insert ISR Code here - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm(" ESTOP0"); - for(;;); - -} - - -interrupt void USER1_ISR(void) // User Defined trap 1 -{ - // Insert ISR Code here - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); - -} - -interrupt void USER2_ISR(void) // User Defined trap 2 -{ - // Insert ISR Code here - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); - - -} - -interrupt void USER3_ISR(void) // User Defined trap 3 -{ - // Insert ISR Code here - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -interrupt void USER4_ISR(void) // User Defined trap 4 -{ - // Insert ISR Code here - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -interrupt void USER5_ISR(void) // User Defined trap 5 -{ - // Insert ISR Code here - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -interrupt void USER6_ISR(void) // User Defined trap 6 -{ - // Insert ISR Code here - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -interrupt void USER7_ISR(void) // User Defined trap 7 -{ - // Insert ISR Code here - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -interrupt void USER8_ISR(void) // User Defined trap 8 -{ - // Insert ISR Code here - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -interrupt void USER9_ISR(void) // User Defined trap 9 -{ - // Insert ISR Code here - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -interrupt void USER10_ISR(void) // User Defined trap 10 -{ - // Insert ISR Code here - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -interrupt void USER11_ISR(void) // User Defined trap 11 -{ - // Insert ISR Code here - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -interrupt void USER12_ISR(void) // User Defined trap 12 -{ - // Insert ISR Code here - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); - -} - -// ----------------------------------------------------------- -// PIE Group 1 - MUXed into CPU INT1 -// ----------------------------------------------------------- - -// INT1.1 -interrupt void SEQ1INT_ISR(void) //SEQ1 ADC -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - - asm (" ESTOP0"); - for(;;); - -} - -// INT1.2 -interrupt void SEQ2INT_ISR(void) //SEQ2 ADC -{ - - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - - asm(" ESTOP0"); - for(;;); - -} -// INT1.3 - Reserved - -// INT1.4 -interrupt void XINT1_ISR(void) -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); - -} - -// INT1.5 -interrupt void XINT2_ISR(void) -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); - -} - -// INT1.6 -interrupt void ADCINT_ISR(void) // ADC -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -// INT1.7 -interrupt void TINT0_ISR(void) // CPU-Timer 0 -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - - -// INT1.8 -interrupt void WAKEINT_ISR(void) // WD, LOW Power -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - - -// ----------------------------------------------------------- -// PIE Group 2 - MUXed into CPU INT2 -// ----------------------------------------------------------- - -// INT2.1 -interrupt void EPWM1_TZINT_ISR(void) // EPWM-1 -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP2; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -// INT2.2 -interrupt void EPWM2_TZINT_ISR(void) // EPWM-2 -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP2; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -// INT2.3 -interrupt void EPWM3_TZINT_ISR(void) // EPWM-3 -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP2; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - - -// INT2.4 -interrupt void EPWM4_TZINT_ISR(void) // EPWM-4 -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP2; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - - -// INT2.5 -interrupt void EPWM5_TZINT_ISR(void) // EPWM-5 -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP2; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -// INT2.6 -interrupt void EPWM6_TZINT_ISR(void) // EPWM-6 -{ - // Insert ISR Code here - - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP2; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -// INT2.7 - Reserved -// INT2.8 - Reserved - -// ----------------------------------------------------------- -// PIE Group 3 - MUXed into CPU INT3 -// ----------------------------------------------------------- - -// INT 3.1 -interrupt void EPWM1_INT_ISR(void) // EPWM-1 -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -// INT3.2 -interrupt void EPWM2_INT_ISR(void) // EPWM-2 -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -// INT3.3 -interrupt void EPWM3_INT_ISR(void) // EPWM-3 -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -// INT3.4 -interrupt void EPWM4_INT_ISR(void) // EPWM-4 -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -// INT3.5 -interrupt void EPWM5_INT_ISR(void) // EPWM-5 -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -// INT3.6 -interrupt void EPWM6_INT_ISR(void) // EPWM-6 -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -// INT3.7 - Reserved -// INT3.8 - Reserved - - -// ----------------------------------------------------------- -// PIE Group 4 - MUXed into CPU INT4 -// ----------------------------------------------------------- - -// INT 4.1 -interrupt void ECAP1_INT_ISR(void) // ECAP-1 -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP4; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -// INT4.2 -interrupt void ECAP2_INT_ISR(void) // ECAP-2 -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP4; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -// INT4.3 -interrupt void ECAP3_INT_ISR(void) // ECAP-3 -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP4; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -// INT4.4 -interrupt void ECAP4_INT_ISR(void) // ECAP-4 -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP4; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -// INT4.5 -interrupt void ECAP5_INT_ISR(void) // ECAP-5 -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP4; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} -// INT4.6 -interrupt void ECAP6_INT_ISR(void) // ECAP-6 -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP4; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} -// INT4.7 - Reserved -// INT4.8 - Reserved - -// ----------------------------------------------------------- -// PIE Group 5 - MUXed into CPU INT5 -// ----------------------------------------------------------- - -// INT 5.1 -interrupt void EQEP1_INT_ISR(void) // EQEP-1 -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP5; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -// INT5.2 -interrupt void EQEP2_INT_ISR(void) // EQEP-2 -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP5; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -// INT5.3 - Reserved -// INT5.4 - Reserved -// INT5.5 - Reserved -// INT5.6 - Reserved -// INT5.7 - Reserved -// INT5.8 - Reserved - -// ----------------------------------------------------------- -// PIE Group 6 - MUXed into CPU INT6 -// ----------------------------------------------------------- - -// INT6.1 -interrupt void SPIRXINTA_ISR(void) // SPI-A -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP6; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -// INT6.2 -interrupt void SPITXINTA_ISR(void) // SPI-A -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP6; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -// INT6.3 -interrupt void MRINTB_ISR(void) // McBSP-B -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP6; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -// INT6.4 -interrupt void MXINTB_ISR(void) // McBSP-B -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP6; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -// INT6.5 -interrupt void MRINTA_ISR(void) // McBSP-A -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP6; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -// INT6.6 -interrupt void MXINTA_ISR(void) // McBSP-A -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP6; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -// INT6.7 - Reserved -// INT6.8 - Reserved - - - - -// ----------------------------------------------------------- -// PIE Group 7 - MUXed into CPU INT7 -// ----------------------------------------------------------- - -// INT7.1 -interrupt void DINTCH1_ISR(void) // DMA -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP7; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -// INT7.2 -interrupt void DINTCH2_ISR(void) // DMA -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP7; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -// INT7.3 -interrupt void DINTCH3_ISR(void) // DMA -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP7; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -// INT7.4 -interrupt void DINTCH4_ISR(void) // DMA -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP7; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -// INT7.5 -interrupt void DINTCH5_ISR(void) // DMA -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP7; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -// INT7.6 -interrupt void DINTCH6_ISR(void) // DMA -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP7; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -// INT7.7 - Reserved -// INT7.8 - Reserved - -// ----------------------------------------------------------- -// PIE Group 8 - MUXed into CPU INT8 -// ----------------------------------------------------------- - -// INT8.1 -interrupt void I2CINT1A_ISR(void) // I2C-A -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP8; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -// INT8.2 -interrupt void I2CINT2A_ISR(void) // I2C-A -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP8; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); -} - -// INT8.3 - Reserved -// INT8.4 - Reserved - -// INT8.5 -interrupt void SCIRXINTC_ISR(void) // SCI-C -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP8; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); - -} - -// INT8.6 -interrupt void SCITXINTC_ISR(void) // SCI-C -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP8; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); - -} - -// INT8.7 - Reserved -// INT8.8 - Reserved - - -// ----------------------------------------------------------- -// PIE Group 9 - MUXed into CPU INT9 -// ----------------------------------------------------------- - -// INT9.1 -interrupt void SCIRXINTA_ISR(void) // SCI-A -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP9; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); - -} - -// INT9.2 -interrupt void SCITXINTA_ISR(void) // SCI-A -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP9; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); - -} - - -// INT9.3 -interrupt void SCIRXINTB_ISR(void) // SCI-B -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP9; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); - -} - -// INT9.4 -interrupt void SCITXINTB_ISR(void) // SCI-B -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP9; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); - -} - -// INT9.5 -interrupt void ECAN0INTA_ISR(void) // eCAN-A -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP9; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); - -} - -// INT9.6 -interrupt void ECAN1INTA_ISR(void) // eCAN-A -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP9; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); - -} - -// INT9.7 -interrupt void ECAN0INTB_ISR(void) // eCAN-B -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP9; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); - -} - -// INT9.8 -interrupt void ECAN1INTB_ISR(void) // eCAN-B -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP9; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); - -} - -// ----------------------------------------------------------- -// PIE Group 10 - MUXed into CPU INT10 -// ----------------------------------------------------------- - -// INT10.1 - Reserved -// INT10.2 - Reserved -// INT10.3 - Reserved -// INT10.4 - Reserved -// INT10.5 - Reserved -// INT10.6 - Reserved -// INT10.7 - Reserved -// INT10.8 - Reserved - - -// ----------------------------------------------------------- -// PIE Group 11 - MUXed into CPU INT11 -// ----------------------------------------------------------- - -// INT11.1 - Reserved -// INT11.2 - Reserved -// INT11.3 - Reserved -// INT11.4 - Reserved -// INT11.5 - Reserved -// INT11.6 - Reserved -// INT11.7 - Reserved -// INT11.8 - Reserved - -// ----------------------------------------------------------- -// PIE Group 12 - MUXed into CPU INT12 -// ----------------------------------------------------------- - -// INT12.1 -interrupt void XINT3_ISR(void) // External Interrupt -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP12; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); - -} - -// INT12.2 -interrupt void XINT4_ISR(void) // External Interrupt -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP12; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); - -} - -// INT12.3 -interrupt void XINT5_ISR(void) // External Interrupt -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP12; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); - -} -// INT12.4 -interrupt void XINT6_ISR(void) // External Interrupt -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP12; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); - -} - -// INT12.5 -interrupt void XINT7_ISR(void) // External Interrupt -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP12; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); - -} - -// INT12.6 - Reserved -// INT12.7 -interrupt void LVF_ISR(void) // Latched overflow -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP12; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); - -} -// INT12.8 -interrupt void LUF_ISR(void) // Latched underflow -{ - // Insert ISR Code here - - // To receive more interrupts from this PIE group, acknowledge this interrupt - // PieCtrlRegs.PIEACK.all = PIEACK_GROUP12; - - // Next two lines for debug only to halt the processor here - // Remove after inserting ISR Code - asm (" ESTOP0"); - for(;;); - -} - -//--------------------------------------------------------------------------- -// Catch All Default ISRs: -// - -interrupt void PIE_RESERVED(void) // Reserved space. For test. -{ - asm (" ESTOP0"); - for(;;); -} - -interrupt void rsvd_ISR(void) // For test -{ - asm (" ESTOP0"); - for(;;); -} - -//=========================================================================== -// End of file. -//=========================================================================== - diff --git a/Source/External/v120/DSP2833x_common/source/DSP2833x_DisInt.asm b/Source/External/v120/DSP2833x_common/source/DSP2833x_DisInt.asm deleted file mode 100644 index 2e8e35c..0000000 --- a/Source/External/v120/DSP2833x_common/source/DSP2833x_DisInt.asm +++ /dev/null @@ -1,65 +0,0 @@ -;// TI File $Revision: /main/1 $ -;// Checkin $Date: August 18, 2006 13:46:09 $ -;//########################################################################### -;// -;// FILE: DSP2833x_DisInt.asm -;// -;// TITLE: Disable and Restore INTM and DBGM -;// -;// Function Prototypes: -;// -;// Uint16 DSP28x_DisableInt(); -;// and void DSP28x_RestoreInt(Uint16 Stat0); -;// -;// Usage: -;// -;// DSP28x_DisableInt() sets both the INTM and DBGM -;// bits to disable maskable interrupts. Before doing -;// this, the current value of ST1 is stored on the stack -;// so that the values can be restored later. The value -;// of ST1 before the masks are set is returned to the -;// user in AL. This is then used to restore their state -;// via the DSP28x_RestoreInt(Uint16 ST1) function. -;// -;// Example -;// -;// Uint16 StatusReg1 -;// StatusReg1 = DSP28x_DisableInt(); -;// -;// ... May also want to disable INTM here -;// -;// ... code here -;// -;// DSP28x_RestoreInt(StatusReg1); -;// -;// ... Restore INTM enable -;// -;//########################################################################### -;// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -;// $Release Date: August 1, 2008 $ -;//########################################################################### - - - - - .def _DSP28x_DisableInt - .def _DSP28x_RestoreInt - - -_DSP28x_DisableInt: - PUSH ST1 - SETC INTM,DBGM - MOV AL, *--SP - LRETR - -_DSP28x_RestoreInt: - MOV *SP++, AL - POP ST1 - LRETR - - -;//=========================================================================== -;// End of file. -;//=========================================================================== - - diff --git a/Source/External/v120/DSP2833x_common/source/DSP2833x_ECan.c b/Source/External/v120/DSP2833x_common/source/DSP2833x_ECan.c deleted file mode 100644 index 612ccb1..0000000 --- a/Source/External/v120/DSP2833x_common/source/DSP2833x_ECan.c +++ /dev/null @@ -1,404 +0,0 @@ -// TI File $Revision: /main/8 $ -// Checkin $Date: June 25, 2008 15:19:07 $ -//########################################################################### -// -// FILE: DSP2833x_ECan.c -// -// TITLE: DSP2833x Enhanced CAN Initialization & Support Functions. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File -#include "DSP2833x_Examples.h" // DSP2833x Examples Include File - - -//--------------------------------------------------------------------------- -// InitECan: -//--------------------------------------------------------------------------- -// This function initializes the eCAN module to a known state. -// -void InitECan(void) -{ - InitECana(); -#if DSP28_ECANB - InitECanb(); -#endif // if DSP28_ECANB -} - -void InitECana(void) // Initialize eCAN-A module -{ -/* Create a shadow register structure for the CAN control registers. This is - needed, since only 32-bit access is allowed to these registers. 16-bit access - to these registers could potentially corrupt the register contents or return - false data. This is especially true while writing to/reading from a bit - (or group of bits) among bits 16 - 31 */ - -struct ECAN_REGS ECanaShadow; - - EALLOW; // EALLOW enables access to protected bits - -/* Configure eCAN RX and TX pins for CAN operation using eCAN regs*/ - - ECanaShadow.CANTIOC.all = ECanaRegs.CANTIOC.all; - ECanaShadow.CANTIOC.bit.TXFUNC = 1; - ECanaRegs.CANTIOC.all = ECanaShadow.CANTIOC.all; - - ECanaShadow.CANRIOC.all = ECanaRegs.CANRIOC.all; - ECanaShadow.CANRIOC.bit.RXFUNC = 1; - ECanaRegs.CANRIOC.all = ECanaShadow.CANRIOC.all; - -/* Configure eCAN for HECC mode - (reqd to access mailboxes 16 thru 31) */ - // HECC mode also enables time-stamping feature - - ECanaShadow.CANMC.all = ECanaRegs.CANMC.all; - ECanaShadow.CANMC.bit.SCB = 1; - ECanaRegs.CANMC.all = ECanaShadow.CANMC.all; - -/* Initialize all bits of 'Master Control Field' to zero */ -// Some bits of MSGCTRL register come up in an unknown state. For proper operation, -// all bits (including reserved bits) of MSGCTRL must be initialized to zero - - ECanaMboxes.MBOX0.MSGCTRL.all = 0x00000000; - ECanaMboxes.MBOX1.MSGCTRL.all = 0x00000000; - ECanaMboxes.MBOX2.MSGCTRL.all = 0x00000000; - ECanaMboxes.MBOX3.MSGCTRL.all = 0x00000000; - ECanaMboxes.MBOX4.MSGCTRL.all = 0x00000000; - ECanaMboxes.MBOX5.MSGCTRL.all = 0x00000000; - ECanaMboxes.MBOX6.MSGCTRL.all = 0x00000000; - ECanaMboxes.MBOX7.MSGCTRL.all = 0x00000000; - ECanaMboxes.MBOX8.MSGCTRL.all = 0x00000000; - ECanaMboxes.MBOX9.MSGCTRL.all = 0x00000000; - ECanaMboxes.MBOX10.MSGCTRL.all = 0x00000000; - ECanaMboxes.MBOX11.MSGCTRL.all = 0x00000000; - ECanaMboxes.MBOX12.MSGCTRL.all = 0x00000000; - ECanaMboxes.MBOX13.MSGCTRL.all = 0x00000000; - ECanaMboxes.MBOX14.MSGCTRL.all = 0x00000000; - ECanaMboxes.MBOX15.MSGCTRL.all = 0x00000000; - ECanaMboxes.MBOX16.MSGCTRL.all = 0x00000000; - ECanaMboxes.MBOX17.MSGCTRL.all = 0x00000000; - ECanaMboxes.MBOX18.MSGCTRL.all = 0x00000000; - ECanaMboxes.MBOX19.MSGCTRL.all = 0x00000000; - ECanaMboxes.MBOX20.MSGCTRL.all = 0x00000000; - ECanaMboxes.MBOX21.MSGCTRL.all = 0x00000000; - ECanaMboxes.MBOX22.MSGCTRL.all = 0x00000000; - ECanaMboxes.MBOX23.MSGCTRL.all = 0x00000000; - ECanaMboxes.MBOX24.MSGCTRL.all = 0x00000000; - ECanaMboxes.MBOX25.MSGCTRL.all = 0x00000000; - ECanaMboxes.MBOX26.MSGCTRL.all = 0x00000000; - ECanaMboxes.MBOX27.MSGCTRL.all = 0x00000000; - ECanaMboxes.MBOX28.MSGCTRL.all = 0x00000000; - ECanaMboxes.MBOX29.MSGCTRL.all = 0x00000000; - ECanaMboxes.MBOX30.MSGCTRL.all = 0x00000000; - ECanaMboxes.MBOX31.MSGCTRL.all = 0x00000000; - -// TAn, RMPn, GIFn bits are all zero upon reset and are cleared again -// as a matter of precaution. - - ECanaRegs.CANTA.all = 0xFFFFFFFF; /* Clear all TAn bits */ - - ECanaRegs.CANRMP.all = 0xFFFFFFFF; /* Clear all RMPn bits */ - - ECanaRegs.CANGIF0.all = 0xFFFFFFFF; /* Clear all interrupt flag bits */ - ECanaRegs.CANGIF1.all = 0xFFFFFFFF; - - -/* Configure bit timing parameters for eCANA*/ - ECanaShadow.CANMC.all = ECanaRegs.CANMC.all; - ECanaShadow.CANMC.bit.CCR = 1 ; // Set CCR = 1 - ECanaRegs.CANMC.all = ECanaShadow.CANMC.all; - - ECanaShadow.CANES.all = ECanaRegs.CANES.all; - - do - { - ECanaShadow.CANES.all = ECanaRegs.CANES.all; - } while(ECanaShadow.CANES.bit.CCE != 1 ); // Wait for CCE bit to be set.. - - ECanaShadow.CANBTC.all = 0; - - #if (CPU_FRQ_150MHZ) // CPU_FRQ_150MHz is defined in DSP2833x_Examples.h - /* The following block for all 150 MHz SYSCLKOUT (75 MHz CAN clock) - default. Bit rate = 1 Mbps - See Note at End of File */ - ECanaShadow.CANBTC.bit.BRPREG = 4; - ECanaShadow.CANBTC.bit.TSEG2REG = 2; - ECanaShadow.CANBTC.bit.TSEG1REG = 10; - #endif - #if (CPU_FRQ_100MHZ) // CPU_FRQ_100MHz is defined in DSP2833x_Examples.h - /* The following block is only for 100 MHz SYSCLKOUT (50 MHz CAN clock). Bit rate = 1 Mbps - See Note at End of File */ - ECanaShadow.CANBTC.bit.BRPREG = 4; - ECanaShadow.CANBTC.bit.TSEG2REG = 1; - ECanaShadow.CANBTC.bit.TSEG1REG = 6; - #endif - - - ECanaShadow.CANBTC.bit.SAM = 1; - ECanaRegs.CANBTC.all = ECanaShadow.CANBTC.all; - - ECanaShadow.CANMC.all = ECanaRegs.CANMC.all; - ECanaShadow.CANMC.bit.CCR = 0 ; // Set CCR = 0 - ECanaRegs.CANMC.all = ECanaShadow.CANMC.all; - - ECanaShadow.CANES.all = ECanaRegs.CANES.all; - - do - { - ECanaShadow.CANES.all = ECanaRegs.CANES.all; - } while(ECanaShadow.CANES.bit.CCE != 0 ); // Wait for CCE bit to be cleared.. - -/* Disable all Mailboxes */ - ECanaRegs.CANME.all = 0; // Required before writing the MSGIDs - - EDIS; -} - - -#if (DSP28_ECANB) -void InitECanb(void) // Initialize eCAN-B module -{ -/* Create a shadow register structure for the CAN control registers. This is - needed, since only 32-bit access is allowed to these registers. 16-bit access - to these registers could potentially corrupt the register contents or return - false data. This is especially true while writing to/reading from a bit - (or group of bits) among bits 16 - 31 */ - -struct ECAN_REGS ECanbShadow; - - EALLOW; // EALLOW enables access to protected bits - -/* Configure eCAN RX and TX pins for CAN operation using eCAN regs*/ - - ECanbShadow.CANTIOC.all = ECanbRegs.CANTIOC.all; - ECanbShadow.CANTIOC.bit.TXFUNC = 1; - ECanbRegs.CANTIOC.all = ECanbShadow.CANTIOC.all; - - ECanbShadow.CANRIOC.all = ECanbRegs.CANRIOC.all; - ECanbShadow.CANRIOC.bit.RXFUNC = 1; - ECanbRegs.CANRIOC.all = ECanbShadow.CANRIOC.all; - -/* Configure eCAN for HECC mode - (reqd to access mailboxes 16 thru 31) */ - - ECanbShadow.CANMC.all = ECanbRegs.CANMC.all; - ECanbShadow.CANMC.bit.SCB = 1; - ECanbRegs.CANMC.all = ECanbShadow.CANMC.all; - -/* Initialize all bits of 'Master Control Field' to zero */ -// Some bits of MSGCTRL register come up in an unknown state. For proper operation, -// all bits (including reserved bits) of MSGCTRL must be initialized to zero - - ECanbMboxes.MBOX0.MSGCTRL.all = 0x00000000; - ECanbMboxes.MBOX1.MSGCTRL.all = 0x00000000; - ECanbMboxes.MBOX2.MSGCTRL.all = 0x00000000; - ECanbMboxes.MBOX3.MSGCTRL.all = 0x00000000; - ECanbMboxes.MBOX4.MSGCTRL.all = 0x00000000; - ECanbMboxes.MBOX5.MSGCTRL.all = 0x00000000; - ECanbMboxes.MBOX6.MSGCTRL.all = 0x00000000; - ECanbMboxes.MBOX7.MSGCTRL.all = 0x00000000; - ECanbMboxes.MBOX8.MSGCTRL.all = 0x00000000; - ECanbMboxes.MBOX9.MSGCTRL.all = 0x00000000; - ECanbMboxes.MBOX10.MSGCTRL.all = 0x00000000; - ECanbMboxes.MBOX11.MSGCTRL.all = 0x00000000; - ECanbMboxes.MBOX12.MSGCTRL.all = 0x00000000; - ECanbMboxes.MBOX13.MSGCTRL.all = 0x00000000; - ECanbMboxes.MBOX14.MSGCTRL.all = 0x00000000; - ECanbMboxes.MBOX15.MSGCTRL.all = 0x00000000; - ECanbMboxes.MBOX16.MSGCTRL.all = 0x00000000; - ECanbMboxes.MBOX17.MSGCTRL.all = 0x00000000; - ECanbMboxes.MBOX18.MSGCTRL.all = 0x00000000; - ECanbMboxes.MBOX19.MSGCTRL.all = 0x00000000; - ECanbMboxes.MBOX20.MSGCTRL.all = 0x00000000; - ECanbMboxes.MBOX21.MSGCTRL.all = 0x00000000; - ECanbMboxes.MBOX22.MSGCTRL.all = 0x00000000; - ECanbMboxes.MBOX23.MSGCTRL.all = 0x00000000; - ECanbMboxes.MBOX24.MSGCTRL.all = 0x00000000; - ECanbMboxes.MBOX25.MSGCTRL.all = 0x00000000; - ECanbMboxes.MBOX26.MSGCTRL.all = 0x00000000; - ECanbMboxes.MBOX27.MSGCTRL.all = 0x00000000; - ECanbMboxes.MBOX28.MSGCTRL.all = 0x00000000; - ECanbMboxes.MBOX29.MSGCTRL.all = 0x00000000; - ECanbMboxes.MBOX30.MSGCTRL.all = 0x00000000; - ECanbMboxes.MBOX31.MSGCTRL.all = 0x00000000; - -// TAn, RMPn, GIFn bits are all zero upon reset and are cleared again -// as a matter of precaution. - - ECanbRegs.CANTA.all = 0xFFFFFFFF; /* Clear all TAn bits */ - - ECanbRegs.CANRMP.all = 0xFFFFFFFF; /* Clear all RMPn bits */ - - ECanbRegs.CANGIF0.all = 0xFFFFFFFF; /* Clear all interrupt flag bits */ - ECanbRegs.CANGIF1.all = 0xFFFFFFFF; - - -/* Configure bit timing parameters for eCANB*/ - - ECanbShadow.CANMC.all = ECanbRegs.CANMC.all; - ECanbShadow.CANMC.bit.CCR = 1 ; // Set CCR = 1 - ECanbRegs.CANMC.all = ECanbShadow.CANMC.all; - - ECanbShadow.CANES.all = ECanbRegs.CANES.all; - - do - { - ECanbShadow.CANES.all = ECanbRegs.CANES.all; - } while(ECanbShadow.CANES.bit.CCE != 1 ); // Wait for CCE bit to be cleared.. - - - ECanbShadow.CANBTC.all = 0; - - #if (CPU_FRQ_150MHZ) // CPU_FRQ_150MHz is defined in DSP2833x_Examples.h - /* The following block for all 150 MHz SYSCLKOUT (75 MHz CAN clock) - default. Bit rate = 1 Mbps - See Note at end of file */ - ECanbShadow.CANBTC.bit.BRPREG = 4; - ECanbShadow.CANBTC.bit.TSEG2REG = 2; - ECanbShadow.CANBTC.bit.TSEG1REG = 10; - #endif - #if (CPU_FRQ_100MHZ) // CPU_FRQ_100MHz is defined in DSP2833x_Examples.h - /* The following block is only for 100 MHz SYSCLKOUT (50 MHz CAN clock). Bit rate = 1 Mbps - See Note at end of file */ - ECanbShadow.CANBTC.bit.BRPREG = 4; - ECanbShadow.CANBTC.bit.TSEG2REG = 1; - ECanbShadow.CANBTC.bit.TSEG1REG = 6; - #endif - - ECanbShadow.CANBTC.bit.SAM = 1; - ECanbRegs.CANBTC.all = ECanbShadow.CANBTC.all; - - ECanbShadow.CANMC.all = ECanbRegs.CANMC.all; - ECanbShadow.CANMC.bit.CCR = 0 ; // Set CCR = 0 - ECanbRegs.CANMC.all = ECanbShadow.CANMC.all; - - ECanbShadow.CANES.all = ECanbRegs.CANES.all; - - do - { - ECanbShadow.CANES.all = ECanbRegs.CANES.all; - } while(ECanbShadow.CANES.bit.CCE != 0 ); // Wait for CCE bit to be cleared.. - - -/* Disable all Mailboxes */ - ECanbRegs.CANME.all = 0; // Required before writing the MSGIDs - - EDIS; -} -#endif // if DSP28_ECANB - - -//--------------------------------------------------------------------------- -// Example: InitECanGpio: -//--------------------------------------------------------------------------- -// This function initializes GPIO pins to function as eCAN pins -// -// Each GPIO pin can be configured as a GPIO pin or up to 3 different -// peripheral functional pins. By default all pins come up as GPIO -// inputs after reset. -// -// Caution: -// Only one GPIO pin should be enabled for CANTXA/B operation. -// Only one GPIO pin shoudl be enabled for CANRXA/B operation. -// Comment out other unwanted lines. - - -void InitECanGpio(void) -{ - InitECanaGpio(); -#if (DSP28_ECANB) - InitECanbGpio(); -#endif // if DSP28_ECANB -} - -void InitECanaGpio(void) -{ - EALLOW; - -/* Enable internal pull-up for the selected CAN pins */ -// Pull-ups can be enabled or disabled by the user. -// This will enable the pullups for the specified pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAPUD.bit.GPIO30 = 0; // Enable pull-up for GPIO30 (CANRXA) -// GpioCtrlRegs.GPAPUD.bit.GPIO18 = 0; // Enable pull-up for GPIO18 (CANRXA) - - GpioCtrlRegs.GPAPUD.bit.GPIO31 = 0; // Enable pull-up for GPIO31 (CANTXA) -// GpioCtrlRegs.GPAPUD.bit.GPIO19 = 0; // Enable pull-up for GPIO19 (CANTXA) - -/* Set qualification for selected CAN pins to asynch only */ -// Inputs are synchronized to SYSCLKOUT by default. -// This will select asynch (no qualification) for the selected pins. - - GpioCtrlRegs.GPAQSEL2.bit.GPIO30 = 3; // Asynch qual for GPIO30 (CANRXA) -// GpioCtrlRegs.GPAQSEL2.bit.GPIO18 = 3; // Asynch qual for GPIO18 (CANRXA) - - -/* Configure eCAN-A pins using GPIO regs*/ -// This specifies which of the possible GPIO pins will be eCAN functional pins. - - GpioCtrlRegs.GPAMUX2.bit.GPIO30 = 1; // Configure GPIO30 for CANRXA operation -// GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 3; // Configure GPIO18 for CANRXA operation - GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 1; // Configure GPIO31 for CANTXA operation -// GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 3; // Configure GPIO19 for CANTXA operation - - EDIS; -} - -#if (DSP28_ECANB) -void InitECanbGpio(void) -{ - EALLOW; - -/* Enable internal pull-up for the selected CAN pins */ -// Pull-ups can be enabled or disabled by the user. -// This will enable the pullups for the specified pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAPUD.bit.GPIO8 = 0; // Enable pull-up for GPIO8 (CANTXB) -// GpioCtrlRegs.GPAPUD.bit.GPIO12 = 0; // Enable pull-up for GPIO12 (CANTXB) -// GpioCtrlRegs.GPAPUD.bit.GPIO16 = 0; // Enable pull-up for GPIO16 (CANTXB) -// GpioCtrlRegs.GPAPUD.bit.GPIO20 = 0; // Enable pull-up for GPIO20 (CANTXB) - - GpioCtrlRegs.GPAPUD.bit.GPIO10 = 0; // Enable pull-up for GPIO10 (CANRXB) -// GpioCtrlRegs.GPAPUD.bit.GPIO13 = 0; // Enable pull-up for GPIO13 (CANRXB) -// GpioCtrlRegs.GPAPUD.bit.GPIO17 = 0; // Enable pull-up for GPIO17 (CANRXB) -// GpioCtrlRegs.GPAPUD.bit.GPIO21 = 0; // Enable pull-up for GPIO21 (CANRXB) - -/* Set qualification for selected CAN pins to asynch only */ -// Inputs are synchronized to SYSCLKOUT by default. -// This will select asynch (no qualification) for the selected pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAQSEL1.bit.GPIO10 = 3; // Asynch qual for GPIO10 (CANRXB) -// GpioCtrlRegs.GPAQSEL1.bit.GPIO13 = 3; // Asynch qual for GPIO13 (CANRXB) -// GpioCtrlRegs.GPAQSEL2.bit.GPIO17 = 3; // Asynch qual for GPIO17 (CANRXB) -// GpioCtrlRegs.GPAQSEL2.bit.GPIO21 = 3; // Asynch qual for GPIO21 (CANRXB) - -/* Configure eCAN-B pins using GPIO regs*/ -// This specifies which of the possible GPIO pins will be eCAN functional pins. - - GpioCtrlRegs.GPAMUX1.bit.GPIO8 = 2; // Configure GPIO8 for CANTXB operation -// GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 2; // Configure GPIO12 for CANTXB operation -// GpioCtrlRegs.GPAMUX2.bit.GPIO16 = 2; // Configure GPIO16 for CANTXB operation -// GpioCtrlRegs.GPAMUX2.bit.GPIO20 = 3; // Configure GPIO20 for CANTXB operation - - GpioCtrlRegs.GPAMUX1.bit.GPIO10 = 2; // Configure GPIO10 for CANRXB operation -// GpioCtrlRegs.GPAMUX1.bit.GPIO13 = 2; // Configure GPIO13 for CANRXB operation -// GpioCtrlRegs.GPAMUX2.bit.GPIO17 = 2; // Configure GPIO17 for CANRXB operation -// GpioCtrlRegs.GPAMUX2.bit.GPIO21 = 3; // Configure GPIO21 for CANRXB operation - - EDIS; -} -#endif // if DSP28_ECANB - -/* -Note: Bit timing parameters must be chosen based on the network parameters such -as the sampling point desired and the propagation delay of the network. -The propagation delay is a function of length of the cable, delay introduced by -the transceivers and opto/galvanic-isolators (if any). - -The parameters used in this file must be changed taking into account the above -mentioned factors in order to arrive at the bit-timing parameters suitable -for a network. - -*/ diff --git a/Source/External/v120/DSP2833x_common/source/DSP2833x_ECap.c b/Source/External/v120/DSP2833x_common/source/DSP2833x_ECap.c deleted file mode 100644 index cd1d24d..0000000 --- a/Source/External/v120/DSP2833x_common/source/DSP2833x_ECap.c +++ /dev/null @@ -1,255 +0,0 @@ -// TI File $Revision: /main/2 $ -// Checkin $Date: March 15, 2007 16:54:36 $ -//########################################################################### -// -// FILE: DSP2833x_ECap.c -// -// TITLE: DSP2833x eCAP Initialization & Support Functions. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File -#include "DSP2833x_Examples.h" // DSP2833x Examples Include File - -//--------------------------------------------------------------------------- -// InitECap: -//--------------------------------------------------------------------------- -// This function initializes the eCAP(s) to a known state. -// -void InitECap(void) -{ - // Initialize eCAP1/2/3 - - //tbd... - -} - -//--------------------------------------------------------------------------- -// Example: InitECapGpio: -//--------------------------------------------------------------------------- -// This function initializes GPIO pins to function as ECAP pins -// -// Each GPIO pin can be configured as a GPIO pin or up to 3 different -// peripheral functional pins. By default all pins come up as GPIO -// inputs after reset. -// -// Caution: -// For each eCAP peripheral -// Only one GPIO pin should be enabled for ECAP operation. -// Comment out other unwanted lines. - -void InitECapGpio() -{ - - InitECap1Gpio(); -#if (DSP28_ECAP2) - InitECap2Gpio(); -#endif // endif DSP28_ECAP2 -#if (DSP28_ECAP3) - InitECap3Gpio(); -#endif // endif DSP28_ECAP3 -#if (DSP28_ECAP4) - InitECap4Gpio(); -#endif // endif DSP28_ECAP4 -#if (DSP28_ECAP5) - InitECap5Gpio(); -#endif // endif DSP28_ECAP5 -#if (DSP28_ECAP6) - InitECap6Gpio(); -#endif // endif DSP28_ECAP6 -} - -void InitECap1Gpio(void) -{ - EALLOW; -/* Enable internal pull-up for the selected pins */ -// Pull-ups can be enabled or disabled by the user. -// This will enable the pullups for the specified pins. -// Comment out other unwanted lines. - -// GpioCtrlRegs.GPAPUD.bit.GPIO5 = 0; // Enable pull-up on GPIO5 (CAP1) - GpioCtrlRegs.GPAPUD.bit.GPIO24 = 0; // Enable pull-up on GPIO24 (CAP1) -// GpioCtrlRegs.GPBPUD.bit.GPIO34 = 0; // Enable pull-up on GPIO34 (CAP1) - - -// Inputs are synchronized to SYSCLKOUT by default. -// Comment out other unwanted lines. - -// GpioCtrlRegs.GPAQSEL1.bit.GPIO5 = 0; // Synch to SYSCLKOUT GPIO5 (CAP1) - GpioCtrlRegs.GPAQSEL2.bit.GPIO24 = 0; // Synch to SYSCLKOUT GPIO24 (CAP1) -// GpioCtrlRegs.GPBQSEL1.bit.GPIO34 = 0; // Synch to SYSCLKOUT GPIO34 (CAP1) - -/* Configure eCAP-1 pins using GPIO regs*/ -// This specifies which of the possible GPIO pins will be eCAP1 functional pins. -// Comment out other unwanted lines. - -// GpioCtrlRegs.GPAMUX1.bit.GPIO5 = 3; // Configure GPIO5 as CAP1 - GpioCtrlRegs.GPAMUX2.bit.GPIO24 = 1; // Configure GPIO24 as CAP1 -// GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 1; // Configure GPIO24 as CAP1 - - EDIS; -} - -#if DSP28_ECAP2 -void InitECap2Gpio(void) -{ - EALLOW; -/* Enable internal pull-up for the selected pins */ -// Pull-ups can be enabled or disabled by the user. -// This will enable the pullups for the specified pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAPUD.bit.GPIO7 = 0; // Enable pull-up on GPIO7 (CAP2) -// GpioCtrlRegs.GPAPUD.bit.GPIO25 = 0; // Enable pull-up on GPIO25 (CAP2) -// GpioCtrlRegs.GPBPUD.bit.GPIO37 = 0; // Enable pull-up on GPIO37 (CAP2) - -// Inputs are synchronized to SYSCLKOUT by default. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAQSEL1.bit.GPIO7 = 0; // Synch to SYSCLKOUT GPIO7 (CAP2) -// GpioCtrlRegs.GPAQSEL2.bit.GPIO25 = 0; // Synch to SYSCLKOUT GPIO25 (CAP2) -// GpioCtrlRegs.GPBQSEL1.bit.GPIO37 = 0; // Synch to SYSCLKOUT GPIO37 (CAP2) - -/* Configure eCAP-2 pins using GPIO regs*/ -// This specifies which of the possible GPIO pins will be eCAP2 functional pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAMUX1.bit.GPIO7 = 3; // Configure GPIO7 as CAP2 -// GpioCtrlRegs.GPAMUX2.bit.GPIO25 = 1; // Configure GPIO25 as CAP2 -// GpioCtrlRegs.GPBMUX1.bit.GPIO37 = 3; // Configure GPIO37 as CAP2 - - EDIS; -} -#endif // endif DSP28_ECAP2 - -#if DSP28_ECAP3 -void InitECap3Gpio(void) -{ - EALLOW; - -/* Enable internal pull-up for the selected pins */ -// Pull-ups can be enabled or disabled by the user. -// This will enable the pullups for the specified pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAPUD.bit.GPIO9 = 0; // Enable pull-up on GPIO9 (CAP3) -// GpioCtrlRegs.GPAPUD.bit.GPIO26 = 0; // Enable pull-up on GPIO26 (CAP3) - -// Inputs are synchronized to SYSCLKOUT by default. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAQSEL1.bit.GPIO9 = 0; // Synch to SYSCLKOUT GPIO9 (CAP3) -// GpioCtrlRegs.GPAQSEL2.bit.GPIO26 = 0; // Synch to SYSCLKOUT GPIO26 (CAP3) - -/* Configure eCAP-3 pins using GPIO regs*/ -// This specifies which of the possible GPIO pins will be eCAP3 functional pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAMUX1.bit.GPIO9 = 3; // Configure GPIO9 as CAP3 -// GpioCtrlRegs.GPAMUX2.bit.GPIO26 = 1; // Configure GPIO26 as CAP3 - - EDIS; -} -#endif // endif DSP28_ECAP3 - - -#if DSP28_ECAP4 -void InitECap4Gpio(void) -{ - EALLOW; - -/* Enable internal pull-up for the selected pins */ -// Pull-ups can be enabled or disabled by the user. -// This will enable the pullups for the specified pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAPUD.bit.GPIO11 = 0; // Enable pull-up on GPIO11 (CAP4) -// GpioCtrlRegs.GPAPUD.bit.GPIO27 = 0; // Enable pull-up on GPIO27 (CAP4) - -// Inputs are synchronized to SYSCLKOUT by default. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAQSEL1.bit.GPIO11 = 0; // Synch to SYSCLKOUT GPIO11 (CAP4) -// GpioCtrlRegs.GPAQSEL2.bit.GPIO27 = 0; // Synch to SYSCLKOUT GPIO27 (CAP4) - -/* Configure eCAP-4 pins using GPIO regs*/ -// This specifies which of the possible GPIO pins will be eCAP4 functional pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAMUX1.bit.GPIO11 = 3; // Configure GPIO11 as CAP4 -// GpioCtrlRegs.GPAMUX2.bit.GPIO27 = 1; // Configure GPIO27 as CAP4 - - EDIS; -} -#endif // endif DSP28_ECAP4 - - -#if DSP28_ECAP5 -void InitECap5Gpio(void) -{ - EALLOW; - -/* Enable internal pull-up for the selected pins */ -// Pull-ups can be enabled or disabled by the user. -// This will enable the pullups for the specified pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAPUD.bit.GPIO3 = 0; // Enable pull-up on GPIO3 (CAP5) -// GpioCtrlRegs.GPBPUD.bit.GPIO48 = 0; // Enable pull-up on GPIO48 (CAP5) - -// Inputs are synchronized to SYSCLKOUT by default. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAQSEL1.bit.GPIO3 = 0; // Synch to SYSCLKOUT GPIO3 (CAP5) -// GpioCtrlRegs.GPBQSEL2.bit.GPIO48 = 0; // Synch to SYSCLKOUT GPIO48 (CAP5) - -/* Configure eCAP-5 pins using GPIO regs*/ -// This specifies which of the possible GPIO pins will be eCAP5 functional pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAMUX1.bit.GPIO3 = 2; // Configure GPIO3 as CAP5 -// GpioCtrlRegs.GPBMUX2.bit.GPIO48 = 1; // Configure GPIO48 as CAP5 - - EDIS; -} -#endif // endif DSP28_ECAP5 - - -#if DSP28_ECAP6 -void InitECap6Gpio(void) -{ - EALLOW; - -/* Enable internal pull-up for the selected pins */ -// Pull-ups can be enabled or disabled by the user. -// This will enable the pullups for the specified pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAPUD.bit.GPIO1 = 0; // Enable pull-up on GPIO1 (CAP6) -// GpioCtrlRegs.GPBPUD.bit.GPIO49 = 0; // Enable pull-up on GPIO49 (CAP6) - -// Inputs are synchronized to SYSCLKOUT by default. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAQSEL1.bit.GPIO1 = 0; // Synch to SYSCLKOUT GPIO1 (CAP6) -// GpioCtrlRegs.GPBQSEL2.bit.GPIO49 = 0; // Synch to SYSCLKOUT GPIO49 (CAP6) - -/* Configure eCAP-5 pins using GPIO regs*/ -// This specifies which of the possible GPIO pins will be eCAP6 functional pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 2; // Configure GPIO1 as CAP6 -// GpioCtrlRegs.GPBMUX2.bit.GPIO49 = 1; // Configure GPIO49 as CAP6 - - EDIS; -} -#endif // endif DSP28_ECAP6 - - - -//=========================================================================== -// End of file. -//=========================================================================== diff --git a/Source/External/v120/DSP2833x_common/source/DSP2833x_EPwm.c b/Source/External/v120/DSP2833x_common/source/DSP2833x_EPwm.c deleted file mode 100644 index 64f0e0f..0000000 --- a/Source/External/v120/DSP2833x_common/source/DSP2833x_EPwm.c +++ /dev/null @@ -1,316 +0,0 @@ -// TI File $Revision: /main/1 $ -// Checkin $Date: August 18, 2006 13:46:19 $ -//########################################################################### -// -// FILE: DSP2833x_EPwm.c -// -// TITLE: DSP2833x ePWM Initialization & Support Functions. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File -#include "DSP2833x_Examples.h" // DSP2833x Examples Include File - -//--------------------------------------------------------------------------- -// InitEPwm: -//--------------------------------------------------------------------------- -// This function initializes the ePWM(s) to a known state. -// -void InitEPwm(void) -{ - // Initialize ePWM1/2/3/4/5/6 - - //tbd... - -} - -//--------------------------------------------------------------------------- -// Example: InitEPwmGpio: -//--------------------------------------------------------------------------- -// This function initializes GPIO pins to function as ePWM pins -// -// Each GPIO pin can be configured as a GPIO pin or up to 3 different -// peripheral functional pins. By default all pins come up as GPIO -// inputs after reset. -// - -void InitEPwmGpio(void) -{ - InitEPwm1Gpio(); - InitEPwm2Gpio(); - InitEPwm3Gpio(); -#if DSP28_EPWM4 - InitEPwm4Gpio(); -#endif // endif DSP28_EPWM4 -#if DSP28_EPWM5 - InitEPwm5Gpio(); -#endif // endif DSP28_EPWM5 -#if DSP28_EPWM6 - InitEPwm6Gpio(); -#endif // endif DSP28_EPWM6 -} - -void InitEPwm1Gpio(void) -{ - EALLOW; - -/* Enable internal pull-up for the selected pins */ -// Pull-ups can be enabled or disabled by the user. -// This will enable the pullups for the specified pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAPUD.bit.GPIO0 = 0; // Enable pull-up on GPIO0 (EPWM1A) - GpioCtrlRegs.GPAPUD.bit.GPIO1 = 0; // Enable pull-up on GPIO1 (EPWM1B) - -/* Configure ePWM-1 pins using GPIO regs*/ -// This specifies which of the possible GPIO pins will be ePWM1 functional pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1; // Configure GPIO0 as EPWM1A - GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 1; // Configure GPIO1 as EPWM1B - - EDIS; -} - -void InitEPwm2Gpio(void) -{ - EALLOW; - -/* Enable internal pull-up for the selected pins */ -// Pull-ups can be enabled or disabled by the user. -// This will enable the pullups for the specified pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAPUD.bit.GPIO2 = 0; // Enable pull-up on GPIO2 (EPWM2A) - GpioCtrlRegs.GPAPUD.bit.GPIO3 = 0; // Enable pull-up on GPIO3 (EPWM3B) - -/* Configure ePWM-2 pins using GPIO regs*/ -// This specifies which of the possible GPIO pins will be ePWM2 functional pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 1; // Configure GPIO2 as EPWM2A - GpioCtrlRegs.GPAMUX1.bit.GPIO3 = 1; // Configure GPIO3 as EPWM2B - - EDIS; -} - -void InitEPwm3Gpio(void) -{ - EALLOW; - -/* Enable internal pull-up for the selected pins */ -// Pull-ups can be enabled or disabled by the user. -// This will enable the pullups for the specified pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAPUD.bit.GPIO4 = 0; // Enable pull-up on GPIO4 (EPWM3A) - GpioCtrlRegs.GPAPUD.bit.GPIO5 = 0; // Enable pull-up on GPIO5 (EPWM3B) - -/* Configure ePWM-3 pins using GPIO regs*/ -// This specifies which of the possible GPIO pins will be ePWM3 functional pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAMUX1.bit.GPIO4 = 1; // Configure GPIO4 as EPWM3A - GpioCtrlRegs.GPAMUX1.bit.GPIO5 = 1; // Configure GPIO5 as EPWM3B - - EDIS; -} - - -#if DSP28_EPWM4 -void InitEPwm4Gpio(void) -{ - EALLOW; -/* Enable internal pull-up for the selected pins */ -// Pull-ups can be enabled or disabled by the user. -// This will enable the pullups for the specified pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAPUD.bit.GPIO6 = 0; // Enable pull-up on GPIO6 (EPWM4A) - GpioCtrlRegs.GPAPUD.bit.GPIO7 = 0; // Enable pull-up on GPIO7 (EPWM4B) - -/* Configure ePWM-4 pins using GPIO regs*/ -// This specifies which of the possible GPIO pins will be ePWM4 functional pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 1; // Configure GPIO6 as EPWM4A - GpioCtrlRegs.GPAMUX1.bit.GPIO7 = 1; // Configure GPIO7 as EPWM4B - - EDIS; -} -#endif // endif DSP28_EPWM4 - - -#if DSP28_EPWM5 -void InitEPwm5Gpio(void) -{ - EALLOW; -/* Enable internal pull-up for the selected pins */ -// Pull-ups can be enabled or disabled by the user. -// This will enable the pullups for the specified pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAPUD.bit.GPIO8 = 0; // Enable pull-up on GPIO8 (EPWM5A) - GpioCtrlRegs.GPAPUD.bit.GPIO9 = 0; // Enable pull-up on GPIO9 (EPWM5B) - -/* Configure ePWM-5 pins using GPIO regs*/ -// This specifies which of the possible GPIO pins will be ePWM5 functional pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAMUX1.bit.GPIO8 = 1; // Configure GPIO8 as EPWM5A - GpioCtrlRegs.GPAMUX1.bit.GPIO9 = 1; // Configure GPIO9 as EPWM5B - - EDIS; -} -#endif // endif DSP28_EPWM5 - - -#if DSP28_EPWM6 -void InitEPwm6Gpio(void) -{ - EALLOW; - -/* Enable internal pull-up for the selected pins */ -// Pull-ups can be enabled or disabled by the user. -// This will enable the pullups for the specified pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAPUD.bit.GPIO10 = 0; // Enable pull-up on GPIO10 (EPWM6A) - GpioCtrlRegs.GPAPUD.bit.GPIO11 = 0; // Enable pull-up on GPIO11 (EPWM6B) - -/* Configure ePWM-6 pins using GPIO regs*/ -// This specifies which of the possible GPIO pins will be ePWM6 functional pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAMUX1.bit.GPIO10 = 1; // Configure GPIO10 as EPWM6A - GpioCtrlRegs.GPAMUX1.bit.GPIO11 = 1; // Configure GPIO11 as EPWM6B - - EDIS; -} -#endif // endif DSP28_EPWM6 - -//--------------------------------------------------------------------------- -// Example: InitEPwmSyncGpio: -//--------------------------------------------------------------------------- -// This function initializes GPIO pins to function as ePWM Synch pins -// - -void InitEPwmSyncGpio(void) -{ - - EALLOW; - -/* Configure EPWMSYNCI */ - -/* Enable internal pull-up for the selected pins */ -// Pull-ups can be enabled or disabled by the user. -// This will enable the pullups for the specified pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAPUD.bit.GPIO6 = 0; // Enable pull-up on GPIO6 (EPWMSYNCI) -// GpioCtrlRegs.GPBPUD.bit.GPIO32 = 0; // Enable pull-up on GPIO32 (EPWMSYNCI) - -/* Set qualification for selected pins to asynch only */ -// This will select synch to SYSCLKOUT for the selected pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAQSEL1.bit.GPIO6 = 0; // Synch to SYSCLKOUT GPIO6 (EPWMSYNCI) -// GpioCtrlRegs.GPBQSEL1.bit.GPIO32 = 0; // Synch to SYSCLKOUT GPIO32 (EPWMSYNCI) - -/* Configure EPwmSync pins using GPIO regs*/ -// This specifies which of the possible GPIO pins will be EPwmSync functional pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 2; // Enable pull-up on GPIO6 (EPWMSYNCI) -// GpioCtrlRegs.GPBMUX1.bit.GPIO32 = 2; // Enable pull-up on GPIO32 (EPWMSYNCI) - - - -/* Configure EPWMSYNC0 */ - -/* Enable internal pull-up for the selected pins */ -// Pull-ups can be enabled or disabled by the user. -// This will enable the pullups for the specified pins. -// Comment out other unwanted lines. - -// GpioCtrlRegs.GPAPUD.bit.GPIO6 = 0; // Enable pull-up on GPIO6 (EPWMSYNC0) - GpioCtrlRegs.GPBPUD.bit.GPIO33 = 0; // Enable pull-up on GPIO33 (EPWMSYNC0) - -// GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 3; // Enable pull-up on GPIO6 (EPWMSYNC0) - GpioCtrlRegs.GPBMUX1.bit.GPIO33 = 2; // Enable pull-up on GPIO33 (EPWMSYNC0) - -} - - - -//--------------------------------------------------------------------------- -// Example: InitTzGpio: -//--------------------------------------------------------------------------- -// This function initializes GPIO pins to function as Trip Zone (TZ) pins -// -// Each GPIO pin can be configured as a GPIO pin or up to 3 different -// peripheral functional pins. By default all pins come up as GPIO -// inputs after reset. -// - -void InitTzGpio(void) -{ - EALLOW; - -/* Enable internal pull-up for the selected pins */ -// Pull-ups can be enabled or disabled by the user. -// This will enable the pullups for the specified pins. -// Comment out other unwanted lines. - GpioCtrlRegs.GPAPUD.bit.GPIO12 = 0; // Enable pull-up on GPIO12 (TZ1) - GpioCtrlRegs.GPAPUD.bit.GPIO13 = 0; // Enable pull-up on GPIO13 (TZ2) - GpioCtrlRegs.GPAPUD.bit.GPIO14 = 0; // Enable pull-up on GPIO14 (TZ3) - GpioCtrlRegs.GPAPUD.bit.GPIO15 = 0; // Enable pull-up on GPIO15 (TZ4) - - GpioCtrlRegs.GPAPUD.bit.GPIO16 = 0; // Enable pull-up on GPIO16 (TZ5) -// GpioCtrlRegs.GPAPUD.bit.GPIO28 = 0; // Enable pull-up on GPIO28 (TZ5) - - GpioCtrlRegs.GPAPUD.bit.GPIO17 = 0; // Enable pull-up on GPIO17 (TZ6) -// GpioCtrlRegs.GPAPUD.bit.GPIO29 = 0; // Enable pull-up on GPIO29 (TZ6) - -/* Set qualification for selected pins to asynch only */ -// Inputs are synchronized to SYSCLKOUT by default. -// This will select asynch (no qualification) for the selected pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAQSEL1.bit.GPIO12 = 3; // Asynch input GPIO12 (TZ1) - GpioCtrlRegs.GPAQSEL1.bit.GPIO13 = 3; // Asynch input GPIO13 (TZ2) - GpioCtrlRegs.GPAQSEL1.bit.GPIO14 = 3; // Asynch input GPIO14 (TZ3) - GpioCtrlRegs.GPAQSEL1.bit.GPIO15 = 3; // Asynch input GPIO15 (TZ4) - - GpioCtrlRegs.GPAQSEL2.bit.GPIO16 = 3; // Asynch input GPIO16 (TZ5) -// GpioCtrlRegs.GPAQSEL2.bit.GPIO28 = 3; // Asynch input GPIO28 (TZ5) - - GpioCtrlRegs.GPAQSEL2.bit.GPIO17 = 3; // Asynch input GPIO17 (TZ6) -// GpioCtrlRegs.GPAQSEL2.bit.GPIO29 = 3; // Asynch input GPIO29 (TZ6) - - -/* Configure TZ pins using GPIO regs*/ -// This specifies which of the possible GPIO pins will be TZ functional pins. -// Comment out other unwanted lines. - GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 1; // Configure GPIO12 as TZ1 - GpioCtrlRegs.GPAMUX1.bit.GPIO13 = 1; // Configure GPIO13 as TZ2 - GpioCtrlRegs.GPAMUX1.bit.GPIO14 = 1; // Configure GPIO14 as TZ3 - GpioCtrlRegs.GPAMUX1.bit.GPIO15 = 1; // Configure GPIO15 as TZ4 - - GpioCtrlRegs.GPAMUX2.bit.GPIO16 = 3; // Configure GPIO16 as TZ5 -// GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 3; // Configure GPIO28 as TZ5 - - GpioCtrlRegs.GPAMUX2.bit.GPIO17 = 3; // Configure GPIO17 as TZ6 -// GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 3; // Configure GPIO29 as TZ6 - - EDIS; -} - - - -//=========================================================================== -// End of file. -//=========================================================================== diff --git a/Source/External/v120/DSP2833x_common/source/DSP2833x_EQep.c b/Source/External/v120/DSP2833x_common/source/DSP2833x_EQep.c deleted file mode 100644 index cb6ad92..0000000 --- a/Source/External/v120/DSP2833x_common/source/DSP2833x_EQep.c +++ /dev/null @@ -1,154 +0,0 @@ -// TI File $Revision: /main/3 $ -// Checkin $Date: July 27, 2007 11:55:20 $ -//########################################################################### -// -// FILE: DSP2833x_EQep.c -// -// TITLE: DSP2833x eQEP Initialization & Support Functions. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File -#include "DSP2833x_Examples.h" // DSP2833x Examples Include File - -//--------------------------------------------------------------------------- -// InitEQep: -//--------------------------------------------------------------------------- -// This function initializes the eQEP(s) to a known state. -// -void InitEQep(void) -{ - // Initialize eQEP1/2 - - //tbd... - -} - -//--------------------------------------------------------------------------- -// Example: InitEQepGpio: -//--------------------------------------------------------------------------- -// This function initializes GPIO pins to function as eQEP pins -// -// Each GPIO pin can be configured as a GPIO pin or up to 3 different -// peripheral functional pins. By default all pins come up as GPIO -// inputs after reset. -// -// Caution: -// For each eQEP peripheral -// Only one GPIO pin should be enabled for EQEPxA operation. -// Only one GPIO pin should be enabled for EQEPxB operation. -// Only one GPIO pin should be enabled for EQEPxS operation. -// Only one GPIO pin should be enabled for EQEPxI operation. -// Comment out other unwanted lines. - -void InitEQepGpio() -{ -#if DSP28_EQEP1 - InitEQep1Gpio(); -#endif // endif DSP28_EQEP1 -#if DSP28_EQEP2 - InitEQep2Gpio(); -#endif // endif DSP28_EQEP2 -} - -#if DSP28_EQEP1 -void InitEQep1Gpio(void) -{ - EALLOW; - -/* Enable internal pull-up for the selected pins */ -// Pull-ups can be enabled or disabled by the user. -// This will enable the pullups for the specified pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAPUD.bit.GPIO20 = 0; // Enable pull-up on GPIO20 (EQEP1A) - GpioCtrlRegs.GPAPUD.bit.GPIO21 = 0; // Enable pull-up on GPIO21 (EQEP1B) - GpioCtrlRegs.GPAPUD.bit.GPIO22 = 0; // Enable pull-up on GPIO22 (EQEP1S) - GpioCtrlRegs.GPAPUD.bit.GPIO23 = 0; // Enable pull-up on GPIO23 (EQEP1I) - -// GpioCtrlRegs.GPBPUD.bit.GPIO50 = 0; // Enable pull-up on GPIO50 (EQEP1A) -// GpioCtrlRegs.GPBPUD.bit.GPIO51 = 0; // Enable pull-up on GPIO51 (EQEP1B) -// GpioCtrlRegs.GPBPUD.bit.GPIO52 = 0; // Enable pull-up on GPIO52 (EQEP1S) -// GpioCtrlRegs.GPBPUD.bit.GPIO53 = 0; // Enable pull-up on GPIO53 (EQEP1I) - - -// Inputs are synchronized to SYSCLKOUT by default. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAQSEL2.bit.GPIO20 = 0; // Sync to SYSCLKOUT GPIO20 (EQEP1A) - GpioCtrlRegs.GPAQSEL2.bit.GPIO21 = 0; // Sync to SYSCLKOUT GPIO21 (EQEP1B) - GpioCtrlRegs.GPAQSEL2.bit.GPIO22 = 0; // Sync to SYSCLKOUT GPIO22 (EQEP1S) - GpioCtrlRegs.GPAQSEL2.bit.GPIO23 = 0; // Sync to SYSCLKOUT GPIO23 (EQEP1I) - -// GpioCtrlRegs.GPBQSEL2.bit.GPIO50 = 0; // Sync to SYSCLKOUT GPIO50 (EQEP1A) -// GpioCtrlRegs.GPBQSEL2.bit.GPIO51 = 0; // Sync to SYSCLKOUT GPIO51 (EQEP1B) -// GpioCtrlRegs.GPBQSEL2.bit.GPIO52 = 0; // Sync to SYSCLKOUT GPIO52 (EQEP1S) -// GpioCtrlRegs.GPBQSEL2.bit.GPIO53 = 0; // Sync to SYSCLKOUT GPIO53 (EQEP1I) - -/* Configure eQEP-1 pins using GPIO regs*/ -// This specifies which of the possible GPIO pins will be eQEP1 functional pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAMUX2.bit.GPIO20 = 1; // Configure GPIO20 as EQEP1A - GpioCtrlRegs.GPAMUX2.bit.GPIO21 = 1; // Configure GPIO21 as EQEP1B - GpioCtrlRegs.GPAMUX2.bit.GPIO22 = 1; // Configure GPIO22 as EQEP1S - GpioCtrlRegs.GPAMUX2.bit.GPIO23 = 1; // Configure GPIO23 as EQEP1I - -// GpioCtrlRegs.GPBMUX2.bit.GPIO50 = 1; // Configure GPIO50 as EQEP1A -// GpioCtrlRegs.GPBMUX2.bit.GPIO51 = 1; // Configure GPIO51 as EQEP1B -// GpioCtrlRegs.GPBMUX2.bit.GPIO52 = 1; // Configure GPIO52 as EQEP1S -// GpioCtrlRegs.GPBMUX2.bit.GPIO53 = 1; // Configure GPIO53 as EQEP1I - - - EDIS; -} -#endif // if DSP28_EQEP1 - - - -#if DSP28_EQEP2 -void InitEQep2Gpio(void) -{ - EALLOW; - -/* Enable internal pull-up for the selected pins */ -// Pull-ups can be enabled or disabled by the user. -// This will enable the pullups for the specified pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAPUD.bit.GPIO24 = 0; // Enable pull-up on GPIO24 (EQEP2A) - GpioCtrlRegs.GPAPUD.bit.GPIO25 = 0; // Enable pull-up on GPIO25 (EQEP2B) - GpioCtrlRegs.GPAPUD.bit.GPIO26 = 0; // Enable pull-up on GPIO26 (EQEP2I) - GpioCtrlRegs.GPAPUD.bit.GPIO27 = 0; // Enable pull-up on GPIO27 (EQEP2S) - -// Inputs are synchronized to SYSCLKOUT by default. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAQSEL2.bit.GPIO24 = 0; // Sync to SYSCLKOUT GPIO24 (EQEP2A) - GpioCtrlRegs.GPAQSEL2.bit.GPIO25 = 0; // Sync to SYSCLKOUT GPIO25 (EQEP2B) - GpioCtrlRegs.GPAQSEL2.bit.GPIO26 = 0; // Sync to SYSCLKOUT GPIO26 (EQEP2I) - GpioCtrlRegs.GPAQSEL2.bit.GPIO27 = 0; // Sync to SYSCLKOUT GPIO27 (EQEP2S) - -/* Configure eQEP-2 pins using GPIO regs*/ -// This specifies which of the possible GPIO pins will be eQEP2 functional pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAMUX2.bit.GPIO24 = 2; // Configure GPIO24 as EQEP2A - GpioCtrlRegs.GPAMUX2.bit.GPIO25 = 2; // Configure GPIO25 as EQEP2B - GpioCtrlRegs.GPAMUX2.bit.GPIO26 = 2; // Configure GPIO26 as EQEP2I - GpioCtrlRegs.GPAMUX2.bit.GPIO27 = 2; // Configure GPIO27 as EQEP2S - - - EDIS; -} -#endif // endif DSP28_EQEP2 - - - - -//=========================================================================== -// End of file. -//=========================================================================== diff --git a/Source/External/v120/DSP2833x_common/source/DSP2833x_Gpio.c b/Source/External/v120/DSP2833x_common/source/DSP2833x_Gpio.c deleted file mode 100644 index c615f0d..0000000 --- a/Source/External/v120/DSP2833x_common/source/DSP2833x_Gpio.c +++ /dev/null @@ -1,69 +0,0 @@ -// TI File $Revision: /main/1 $ -// Checkin $Date: August 18, 2006 13:46:25 $ -//########################################################################### -// -// FILE: DSP2833x_Gpio.c -// -// TITLE: DSP2833x General Purpose I/O Initialization & Support Functions. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File -#include "DSP2833x_Examples.h" // DSP2833x Examples Include File - -//--------------------------------------------------------------------------- -// InitGpio: -//--------------------------------------------------------------------------- -// This function initializes the Gpio to a known (default) state. -// -// For more details on configuring GPIO's as peripheral functions, -// refer to the individual peripheral examples and/or GPIO setup example. -void InitGpio(void) -{ - EALLOW; - - // Each GPIO pin can be: - // a) a GPIO input/output - // b) peripheral function 1 - // c) peripheral function 2 - // d) peripheral function 3 - // By default, all are GPIO Inputs - GpioCtrlRegs.GPAMUX1.all = 0x0000; // GPIO functionality GPIO0-GPIO15 - GpioCtrlRegs.GPAMUX2.all = 0x0000; // GPIO functionality GPIO16-GPIO31 - GpioCtrlRegs.GPBMUX1.all = 0x0000; // GPIO functionality GPIO32-GPIO39 - GpioCtrlRegs.GPBMUX2.all = 0x0000; // GPIO functionality GPIO48-GPIO63 - GpioCtrlRegs.GPCMUX1.all = 0x0000; // GPIO functionality GPIO64-GPIO79 - GpioCtrlRegs.GPCMUX2.all = 0x0000; // GPIO functionality GPIO80-GPIO95 - - GpioCtrlRegs.GPADIR.all = 0x0000; // GPIO0-GPIO31 are inputs - GpioCtrlRegs.GPBDIR.all = 0x0000; // GPIO32-GPIO63 are inputs - GpioCtrlRegs.GPCDIR.all = 0x0000; // GPI064-GPIO95 are inputs - - // Each input can have different qualification - // a) input synchronized to SYSCLKOUT - // b) input qualified by a sampling window - // c) input sent asynchronously (valid for peripheral inputs only) - GpioCtrlRegs.GPAQSEL1.all = 0x0000; // GPIO0-GPIO15 Synch to SYSCLKOUT - GpioCtrlRegs.GPAQSEL2.all = 0x0000; // GPIO16-GPIO31 Synch to SYSCLKOUT - GpioCtrlRegs.GPBQSEL1.all = 0x0000; // GPIO32-GPIO39 Synch to SYSCLKOUT - GpioCtrlRegs.GPBQSEL2.all = 0x0000; // GPIO48-GPIO63 Synch to SYSCLKOUT - - // Pull-ups can be enabled or disabled. - GpioCtrlRegs.GPAPUD.all = 0x0000; // Pullup's enabled GPIO0-GPIO31 - GpioCtrlRegs.GPBPUD.all = 0x0000; // Pullup's enabled GPIO32-GPIO63 - GpioCtrlRegs.GPCPUD.all = 0x0000; // Pullup's enabled GPIO64-GPIO79 - - //GpioCtrlRegs.GPAPUD.all = 0xFFFF; // Pullup's disabled GPIO0-GPIO31 - //GpioCtrlRegs.GPBPUD.all = 0xFFFF; // Pullup's disabled GPIO32-GPIO34 - //GpioCtrlRegs.GPCPUD.all = 0xFFFF // Pullup's disabled GPIO64-GPIO79 - - EDIS; - -} - -//=========================================================================== -// End of file. -//=========================================================================== diff --git a/Source/External/v120/DSP2833x_common/source/DSP2833x_I2C.c b/Source/External/v120/DSP2833x_common/source/DSP2833x_I2C.c deleted file mode 100644 index fda73d3..0000000 --- a/Source/External/v120/DSP2833x_common/source/DSP2833x_I2C.c +++ /dev/null @@ -1,76 +0,0 @@ -// TI File $Revision: /main/1 $ -// Checkin $Date: August 18, 2006 13:46:27 $ -//########################################################################### -// -// FILE: DSP2833x_I2C.c -// -// TITLE: DSP2833x SCI Initialization & Support Functions. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File -#include "DSP2833x_Examples.h" // DSP2833x Examples Include File - -//--------------------------------------------------------------------------- -// InitI2C: -//--------------------------------------------------------------------------- -// This function initializes the I2C to a known state. -// -void InitI2C(void) -{ - // Initialize I2C-A: - - //tbd... -} - -//--------------------------------------------------------------------------- -// Example: InitI2CGpio: -//--------------------------------------------------------------------------- -// This function initializes GPIO pins to function as I2C pins -// -// Each GPIO pin can be configured as a GPIO pin or up to 3 different -// peripheral functional pins. By default all pins come up as GPIO -// inputs after reset. -// -// Caution: -// Only one GPIO pin should be enabled for SDAA operation. -// Only one GPIO pin shoudl be enabled for SCLA operation. -// Comment out other unwanted lines. - -void InitI2CGpio() -{ - - EALLOW; -/* Enable internal pull-up for the selected pins */ -// Pull-ups can be enabled or disabled disabled by the user. -// This will enable the pullups for the specified pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPBPUD.bit.GPIO32 = 0; // Enable pull-up for GPIO32 (SDAA) - GpioCtrlRegs.GPBPUD.bit.GPIO33 = 0; // Enable pull-up for GPIO33 (SCLA) - -/* Set qualification for selected pins to asynch only */ -// This will select asynch (no qualification) for the selected pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPBQSEL1.bit.GPIO32 = 3; // Asynch input GPIO32 (SDAA) - GpioCtrlRegs.GPBQSEL1.bit.GPIO33 = 3; // Asynch input GPIO33 (SCLA) - -/* Configure SCI pins using GPIO regs*/ -// This specifies which of the possible GPIO pins will be I2C functional pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPBMUX1.bit.GPIO32 = 1; // Configure GPIO32 for SDAA operation - GpioCtrlRegs.GPBMUX1.bit.GPIO33 = 1; // Configure GPIO33 for SCLA operation - - EDIS; -} - - - -//=========================================================================== -// End of file. -//=========================================================================== diff --git a/Source/External/v120/DSP2833x_common/source/DSP2833x_Mcbsp.c b/Source/External/v120/DSP2833x_common/source/DSP2833x_Mcbsp.c deleted file mode 100644 index 302c330..0000000 --- a/Source/External/v120/DSP2833x_common/source/DSP2833x_Mcbsp.c +++ /dev/null @@ -1,349 +0,0 @@ - // TI File $Revision: /main/16 $ -// Checkin $Date: October 3, 2007 14:50:19 $ -//########################################################################### -// -// FILE: DSP2833x_McBSP.c -// -// TITLE: DSP2833x Device McBSP Initialization & Support Functions. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File -#include "DSP2833x_Examples.h" // DSP2833x Examples Include File - -//--------------------------------------------------------------------------- -// MCBSP_INIT_DELAY determines the amount of CPU cycles in the 2 sample rate -// generator (SRG) cycles required for the Mcbsp initialization routine. -// MCBSP_CLKG_DELAY determines the amount of CPU cycles in the 2 clock -// generator (CLKG) cycles required for the Mcbsp initialization routine. -// For the functions defined in Mcbsp.c, MCBSP_INIT_DELAY and MCBSP_CLKG_DELAY -// are based off of either a 150 MHz SYSCLKOUT (default) or a 100 MHz SYSCLKOUT. -// -// CPU_FRQ_100MHZ and CPU_FRQ_150MHZ are defined in DSP2833x_Examples.h -//--------------------------------------------------------------------------- - -#if CPU_FRQ_150MHZ // For 150 MHz SYSCLKOUT(default) - #define CPU_SPD 150E6 - #define MCBSP_SRG_FREQ CPU_SPD/4 // SRG input is LSPCLK (SYSCLKOUT/4) for examples -#endif -#if CPU_FRQ_100MHZ // For 100 MHz SYSCLKOUT - #define CPU_SPD 100E6 - #define MCBSP_SRG_FREQ CPU_SPD/4 // SRG input is LSPCLK (SYSCLKOUT/4) for examples -#endif - -#define CLKGDV_VAL 1 -#define MCBSP_INIT_DELAY 2*(CPU_SPD/MCBSP_SRG_FREQ) // # of CPU cycles in 2 SRG cycles-init delay -#define MCBSP_CLKG_DELAY 2*(CPU_SPD/(MCBSP_SRG_FREQ/(1+CLKGDV_VAL))) // # of CPU cycles in 2 CLKG cycles-init delay -//--------------------------------------------------------------------------- -// InitMcbsp: -//--------------------------------------------------------------------------- -// This function initializes the McBSP to a known state. -// - -void delay_loop(void); // Delay function used for SRG initialization -void clkg_delay_loop(void); // Delay function used for CLKG initialization - -void InitMcbsp(void) -{ - InitMcbspa(); - #if DSP28_MCBSPB - InitMcbspb(); - #endif // end DSP28_MCBSPB -} - -void InitMcbspa(void) -{ -// McBSP-A register settings - - McbspaRegs.SPCR2.all=0x0000; // Reset FS generator, sample rate generator & transmitter - McbspaRegs.SPCR1.all=0x0000; // Reset Receiver, Right justify word - McbspaRegs.SPCR1.bit.DLB = 1; // Enable loopback mode for test. Comment out for normal McBSP transfer mode. - - - McbspaRegs.MFFINT.all=0x0; // Disable all interrupts - - McbspaRegs.RCR2.all=0x0; // Single-phase frame, 1 word/frame, No companding (Receive) - McbspaRegs.RCR1.all=0x0; - - McbspaRegs.XCR2.all=0x0; // Single-phase frame, 1 word/frame, No companding (Transmit) - McbspaRegs.XCR1.all=0x0; - - McbspaRegs.PCR.bit.FSXM = 1; // FSX generated internally, FSR derived from an external source - McbspaRegs.PCR.bit.CLKXM = 1; // CLKX generated internally, CLKR derived from an external source - - McbspaRegs.SRGR2.bit.CLKSM = 1; // CLKSM=1 (If SCLKME=0, i/p clock to SRG is LSPCLK) - McbspaRegs.SRGR2.bit.FPER = 31; // FPER = 32 CLKG periods - - McbspaRegs.SRGR1.bit.FWID = 0; // Frame Width = 1 CLKG period - McbspaRegs.SRGR1.bit.CLKGDV = CLKGDV_VAL; // CLKG frequency = LSPCLK/(CLKGDV+1) - - delay_loop(); // Wait at least 2 SRG clock cycles - - McbspaRegs.SPCR2.bit.GRST=1; // Enable the sample rate generator - clkg_delay_loop(); // Wait at least 2 CLKG cycles - McbspaRegs.SPCR2.bit.XRST=1; // Release TX from Reset - McbspaRegs.SPCR1.bit.RRST=1; // Release RX from Reset - McbspaRegs.SPCR2.bit.FRST=1; // Frame Sync Generator reset - -} - - -#if (DSP28_MCBSPB) -void InitMcbspb(void) -{ - -// McBSP-B register settings - - McbspbRegs.SPCR2.all=0x0000; // Reset FS generator, sample rate generator & transmitter - McbspbRegs.SPCR1.all=0x0000; // Reset Receiver, Right justify word - McbspbRegs.SPCR1.bit.DLB = 1; // Enable loopback mode for test. Comment out for normal McBSP transfer mode. - - McbspbRegs.MFFINT.all=0x0; // Disable all interrupts - - McbspbRegs.RCR2.all=0x0; // Single-phase frame, 1 word/frame, No companding (Receive) - McbspbRegs.RCR1.all=0x0; - - McbspbRegs.XCR2.all=0x0; // Single-phase frame, 1 word/frame, No companding (Transmit) - McbspbRegs.XCR1.all=0x0; - - McbspbRegs.SRGR2.bit.CLKSM = 1; // CLKSM=1 (If SCLKME=0, i/p clock to SRG is LSPCLK) - McbspbRegs.SRGR2.bit.FPER = 31; // FPER = 32 CLKG periods - - McbspbRegs.SRGR1.bit.FWID = 0; // Frame Width = 1 CLKG period - McbspbRegs.SRGR1.bit.CLKGDV = CLKGDV_VAL; // CLKG frequency = LSPCLK/(CLKGDV+1) - - McbspbRegs.PCR.bit.FSXM = 1; // FSX generated internally, FSR derived from an external source - McbspbRegs.PCR.bit.CLKXM = 1; // CLKX generated internally, CLKR derived from an external source - delay_loop(); // Wait at least 2 SRG clock cycles - McbspbRegs.SPCR2.bit.GRST=1; // Enable the sample rate generator - clkg_delay_loop(); // Wait at least 2 CLKG cycles - McbspbRegs.SPCR2.bit.XRST=1; // Release TX from Reset - McbspbRegs.SPCR1.bit.RRST=1; // Release RX from Reset - McbspbRegs.SPCR2.bit.FRST=1; // Frame Sync Generator reset - -} - - -#endif // end DSP28_MCBSPB - -// McBSP-A Data Lengths -void InitMcbspa8bit(void) -{ - McbspaRegs.RCR1.bit.RWDLEN1=0; // 8-bit word - McbspaRegs.XCR1.bit.XWDLEN1=0; // 8-bit word -} - -void InitMcbspa12bit(void) -{ - McbspaRegs.RCR1.bit.RWDLEN1=1; // 12-bit word - McbspaRegs.XCR1.bit.XWDLEN1=1; // 12-bit word -} - -void InitMcbspa16bit(void) -{ - McbspaRegs.RCR1.bit.RWDLEN1=2; // 16-bit word - McbspaRegs.XCR1.bit.XWDLEN1=2; // 16-bit word -} - -void InitMcbspa20bit(void) -{ - McbspaRegs.RCR1.bit.RWDLEN1=3; // 20-bit word - McbspaRegs.XCR1.bit.XWDLEN1=3; // 20-bit word -} - -void InitMcbspa24bit(void) -{ - McbspaRegs.RCR1.bit.RWDLEN1=4; // 24-bit word - McbspaRegs.XCR1.bit.XWDLEN1=4; // 24-bit word -} - -void InitMcbspa32bit(void) -{ - McbspaRegs.RCR1.bit.RWDLEN1=5; // 32-bit word - McbspaRegs.XCR1.bit.XWDLEN1=5; // 32-bit word -} - -// McBSP-B Data Lengths -#if (DSP28_MCBSPB) - -void InitMcbspb8bit(void) -{ - McbspbRegs.RCR1.bit.RWDLEN1=0; // 8-bit word - McbspbRegs.XCR1.bit.XWDLEN1=0; // 8-bit word -} - -void InitMcbspb12bit(void) -{ - McbspbRegs.RCR1.bit.RWDLEN1=1; // 12-bit word - McbspbRegs.XCR1.bit.XWDLEN1=1; // 12-bit word -} - -void InitMcbspb16bit(void) -{ - McbspbRegs.RCR1.bit.RWDLEN1=2; // 16-bit word - McbspbRegs.XCR1.bit.XWDLEN1=2; // 16-bit word -} - -void InitMcbspb20bit(void) -{ - McbspbRegs.RCR1.bit.RWDLEN1=3; // 20-bit word - McbspbRegs.XCR1.bit.XWDLEN1=3; // 20-bit word -} - -void InitMcbspb24bit(void) -{ - McbspbRegs.RCR1.bit.RWDLEN1=4; // 24-bit word - McbspbRegs.XCR1.bit.XWDLEN1=4; // 24-bit word -} - -void InitMcbspb32bit(void) -{ - McbspbRegs.RCR1.bit.RWDLEN1=5; // 32-bit word - McbspbRegs.XCR1.bit.XWDLEN1=5; // 32-bit word -} - -#endif //end DSP28_MCBSPB - - - -void InitMcbspGpio(void) -{ - InitMcbspaGpio(); - #if DSP28_MCBSPB - InitMcbspbGpio(); - #endif // end DSP28_MCBSPB -} - -void InitMcbspaGpio(void) -{ - EALLOW; - -/* Configure McBSP-A pins using GPIO regs*/ -// This specifies which of the possible GPIO pins will be McBSP functional pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAMUX2.bit.GPIO20 = 2; // GPIO20 is MDXA pin - GpioCtrlRegs.GPAMUX2.bit.GPIO21 = 2; // GPIO21 is MDRA pin - GpioCtrlRegs.GPAMUX2.bit.GPIO22 = 2; // GPIO22 is MCLKXA pin - GpioCtrlRegs.GPAMUX1.bit.GPIO7 = 2; // GPIO7 is MCLKRA pin (Comment as needed) - //GpioCtrlRegs.GPBMUX2.bit.GPIO58 = 1; // GPIO58 is MCLKRA pin (Comment as needed) - GpioCtrlRegs.GPAMUX2.bit.GPIO23 = 2; // GPIO23 is MFSXA pin - GpioCtrlRegs.GPAMUX1.bit.GPIO5 = 2; // GPIO5 is MFSRA pin (Comment as needed) - //GpioCtrlRegs.GPBMUX2.bit.GPIO59 = 1; // GPIO59 is MFSRA pin (Comment as needed) - -/* Enable internal pull-up for the selected pins */ -// Pull-ups can be enabled or disabled by the user. -// This will enable the pullups for the specified pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAPUD.bit.GPIO20 = 0; // Enable pull-up on GPIO20 (MDXA) - GpioCtrlRegs.GPAPUD.bit.GPIO21 = 0; // Enable pull-up on GPIO21 (MDRA) - GpioCtrlRegs.GPAPUD.bit.GPIO22 = 0; // Enable pull-up on GPIO22 (MCLKXA) - GpioCtrlRegs.GPAPUD.bit.GPIO7 = 0; // Enable pull-up on GPIO7 (MCLKRA) (Comment as needed) - //GpioCtrlRegs.GPBPUD.bit.GPIO58 = 0; // Enable pull-up on GPIO58 (MCLKRA) (Comment as needed) - GpioCtrlRegs.GPAPUD.bit.GPIO23 = 0; // Enable pull-up on GPIO23 (MFSXA) - GpioCtrlRegs.GPAPUD.bit.GPIO5 = 0; // Enable pull-up on GPIO5 (MFSRA) (Comment as needed) - //GpioCtrlRegs.GPBPUD.bit.GPIO59 = 0; // Enable pull-up on GPIO59 (MFSRA) (Comment as needed) - -/* Set qualification for selected input pins to asynch only */ -// This will select asynch (no qualification) for the selected pins. -// Comment out other unwanted lines. - - - GpioCtrlRegs.GPAQSEL2.bit.GPIO21 = 3; // Asynch input GPIO21 (MDRA) - GpioCtrlRegs.GPAQSEL2.bit.GPIO22 = 3; // Asynch input GPIO22 (MCLKXA) - GpioCtrlRegs.GPAQSEL1.bit.GPIO7 = 3; // Asynch input GPIO7 (MCLKRA) (Comment as needed) - //GpioCtrlRegs.GPBQSEL2.bit.GPIO58 = 3; // Asynch input GPIO58(MCLKRA) (Comment as needed) - GpioCtrlRegs.GPAQSEL2.bit.GPIO23 = 3; // Asynch input GPIO23 (MFSXA) - GpioCtrlRegs.GPAQSEL1.bit.GPIO5 = 3; // Asynch input GPIO5 (MFSRA) (Comment as needed) - //GpioCtrlRegs.GPBQSEL2.bit.GPIO59 = 3; // Asynch input GPIO59 (MFSRA) (Comment as needed) - - EDIS; -} - -#if DSP28_MCBSPB -void InitMcbspbGpio(void) -{ - EALLOW; -/* Configure McBSP-A pins using GPIO regs*/ -// This specifies which of the possible GPIO pins will be McBSP functional pins. -// Comment out other unwanted lines. - - //GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 3; // GPIO12 is MDXB pin (Comment as needed) - GpioCtrlRegs.GPAMUX2.bit.GPIO24 = 3; // GPIO24 is MDXB pin (Comment as needed) - //GpioCtrlRegs.GPAMUX1.bit.GPIO13 = 3; // GPIO13 is MDRB pin (Comment as needed) - GpioCtrlRegs.GPAMUX2.bit.GPIO25 = 3; // GPIO25 is MDRB pin (Comment as needed) - //GpioCtrlRegs.GPAMUX1.bit.GPIO14 = 3; // GPIO14 is MCLKXB pin (Comment as needed) - GpioCtrlRegs.GPAMUX2.bit.GPIO26 = 3; // GPIO26 is MCLKXB pin (Comment as needed) - GpioCtrlRegs.GPAMUX1.bit.GPIO3 = 3; // GPIO3 is MCLKRB pin (Comment as needed) - //GpioCtrlRegs.GPBMUX2.bit.GPIO60 = 1; // GPIO60 is MCLKRB pin (Comment as needed) - //GpioCtrlRegs.GPAMUX1.bit.GPIO15 = 3; // GPIO15 is MFSXB pin (Comment as needed) - GpioCtrlRegs.GPAMUX2.bit.GPIO27 = 3; // GPIO27 is MFSXB pin (Comment as needed) - GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 3; // GPIO1 is MFSRB pin (Comment as needed) - //GpioCtrlRegs.GPBMUX2.bit.GPIO61 = 1; // GPIO61 is MFSRB pin (Comment as needed) - -/* Enable internal pull-up for the selected pins */ -// Pull-ups can be enabled or disabled by the user. -// This will enable the pullups for the specified pins. -// Comment out other unwanted lines. - GpioCtrlRegs.GPAPUD.bit.GPIO24 = 0; // Enable pull-up on GPIO24 (MDXB) (Comment as needed) - //GpioCtrlRegs.GPAPUD.bit.GPIO12 = 0; // Enable pull-up on GPIO12 (MDXB) (Comment as needed) - GpioCtrlRegs.GPAPUD.bit.GPIO25 = 0; // Enable pull-up on GPIO25 (MDRB) (Comment as needed) - //GpioCtrlRegs.GPAPUD.bit.GPIO13 = 0; // Enable pull-up on GPIO13 (MDRB) (Comment as needed) - GpioCtrlRegs.GPAPUD.bit.GPIO26 = 0; // Enable pull-up on GPIO26 (MCLKXB) (Comment as needed) - //GpioCtrlRegs.GPAPUD.bit.GPIO14 = 0; // Enable pull-up on GPIO14 (MCLKXB) (Comment as needed) - GpioCtrlRegs.GPAPUD.bit.GPIO3 = 0; // Enable pull-up on GPIO3 (MCLKRB) (Comment as needed) - //GpioCtrlRegs.GPBPUD.bit.GPIO60 = 0; // Enable pull-up on GPIO60 (MCLKRB) (Comment as needed) - GpioCtrlRegs.GPAPUD.bit.GPIO27 = 0; // Enable pull-up on GPIO27 (MFSXB) (Comment as needed) - //GpioCtrlRegs.GPAPUD.bit.GPIO15 = 0; // Enable pull-up on GPIO15 (MFSXB) (Comment as needed) - GpioCtrlRegs.GPAPUD.bit.GPIO1 = 0; // Enable pull-up on GPIO1 (MFSRB) (Comment as needed) - //GpioCtrlRegs.GPBPUD.bit.GPIO61 = 0; // Enable pull-up on GPIO61 (MFSRB) (Comment as needed) - - -/* Set qualification for selected input pins to asynch only */ -// This will select asynch (no qualification) for the selected pins. -// Comment out other unwanted lines. - GpioCtrlRegs.GPAQSEL2.bit.GPIO25 = 3; // Asynch input GPIO25 (MDRB) (Comment as needed) - //GpioCtrlRegs.GPAQSEL1.bit.GPIO13 = 3; // Asynch input GPIO13 (MDRB) (Comment as needed) - GpioCtrlRegs.GPAQSEL2.bit.GPIO26 = 3; // Asynch input GPIO26(MCLKXB) (Comment as needed) - //GpioCtrlRegs.GPAQSEL1.bit.GPIO14 = 3; // Asynch input GPIO14 (MCLKXB) (Comment as needed) - GpioCtrlRegs.GPAQSEL1.bit.GPIO3 = 3; // Asynch input GPIO3 (MCLKRB) (Comment as needed) - //GpioCtrlRegs.GPBQSEL2.bit.GPIO60 = 3; // Asynch input GPIO60 (MCLKRB) (Comment as needed) - GpioCtrlRegs.GPAQSEL2.bit.GPIO27 = 3; // Asynch input GPIO27 (MFSXB) (Comment as needed) - //GpioCtrlRegs.GPAQSEL1.bit.GPIO15 = 3; // Asynch input GPIO15 (MFSXB) (Comment as needed) - GpioCtrlRegs.GPAQSEL1.bit.GPIO1 = 3; // Asynch input GPIO1 (MFSRB) (Comment as needed) - //GpioCtrlRegs.GPBQSEL2.bit.GPIO61 = 3; // Asynch input GPIO61 (MFSRB) (Comment as needed) - - - EDIS; -} -#endif // end DSP28_MCBSPB - -void delay_loop(void) -{ - long i; - for (i = 0; i < MCBSP_INIT_DELAY; i++) {} //delay in McBsp init. must be at least 2 SRG cycles -} - -void clkg_delay_loop(void) -{ - long i; - for (i = 0; i < MCBSP_CLKG_DELAY; i++) {} //delay in McBsp init. must be at least 2 SRG cycles -} -//=========================================================================== -// No more. -//=========================================================================== - - - - - - - - - - - diff --git a/Source/External/v120/DSP2833x_common/source/DSP2833x_MemCopy.c b/Source/External/v120/DSP2833x_common/source/DSP2833x_MemCopy.c deleted file mode 100644 index f7cba01..0000000 --- a/Source/External/v120/DSP2833x_common/source/DSP2833x_MemCopy.c +++ /dev/null @@ -1,45 +0,0 @@ -// TI File $Revision: /main/1 $ -// Checkin $Date: August 18, 2006 13:46:33 $ -//########################################################################### -// -// FILE: DSP2833x_MemCopy.c -// -// TITLE: Memory Copy Utility -// -// ASSUMPTIONS: -// -// -// -// DESCRIPTION: -// -// This function will copy the specified memory contents from -// one location to another. -// -// Uint16 *SourceAddr Pointer to the first word to be moved -// SourceAddr < SourceEndAddr -// Uint16* SourceEndAddr Pointer to the last word to be moved -// Uint16* DestAddr Pointer to the first destination word -// -// No checks are made for invalid memory locations or that the -// end address is > then the first start address. -// -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP2833x_Device.h" - -void MemCopy(Uint16 *SourceAddr, Uint16* SourceEndAddr, Uint16* DestAddr) -{ - while(SourceAddr < SourceEndAddr) - { - *DestAddr++ = *SourceAddr++; - } - return; -} - -//=========================================================================== -// End of file. -//=========================================================================== diff --git a/Source/External/v120/DSP2833x_common/source/DSP2833x_Sci.c b/Source/External/v120/DSP2833x_common/source/DSP2833x_Sci.c deleted file mode 100644 index d0a9e1c..0000000 --- a/Source/External/v120/DSP2833x_common/source/DSP2833x_Sci.c +++ /dev/null @@ -1,168 +0,0 @@ -// TI File $Revision: /main/2 $ -// Checkin $Date: March 1, 2007 16:06:07 $ -//########################################################################### -// -// FILE: DSP2833x_Sci.c -// -// TITLE: DSP2833x SCI Initialization & Support Functions. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File -#include "DSP2833x_Examples.h" // DSP2833x Examples Include File - -//--------------------------------------------------------------------------- -// InitSci: -//--------------------------------------------------------------------------- -// This function initializes the SCI(s) to a known state. -// -void InitSci(void) -{ - // Initialize SCI-A: - - //tbd... - - - // Initialize SCI-B: - - //tbd... - - // Initialize SCI-C: - - //tbd... -} - -//--------------------------------------------------------------------------- -// Example: InitSciGpio: -//--------------------------------------------------------------------------- -// This function initializes GPIO pins to function as SCI pins -// -// Each GPIO pin can be configured as a GPIO pin or up to 3 different -// peripheral functional pins. By default all pins come up as GPIO -// inputs after reset. -// -// Caution: -// Only one GPIO pin should be enabled for SCITXDA/B operation. -// Only one GPIO pin shoudl be enabled for SCIRXDA/B operation. -// Comment out other unwanted lines. - -void InitSciGpio() -{ - InitSciaGpio(); -#if DSP28_SCIB - InitScibGpio(); -#endif // if DSP28_SCIB -#if DSP28_SCIC - InitScicGpio(); -#endif // if DSP28_SCIC -} - -void InitSciaGpio() -{ - EALLOW; - -/* Enable internal pull-up for the selected pins */ -// Pull-ups can be enabled or disabled disabled by the user. -// This will enable the pullups for the specified pins. - - GpioCtrlRegs.GPAPUD.bit.GPIO28 = 0; // Enable pull-up for GPIO28 (SCIRXDA) - GpioCtrlRegs.GPAPUD.bit.GPIO29 = 0; // Enable pull-up for GPIO29 (SCITXDA) - -/* Set qualification for selected pins to asynch only */ -// Inputs are synchronized to SYSCLKOUT by default. -// This will select asynch (no qualification) for the selected pins. - - GpioCtrlRegs.GPAQSEL2.bit.GPIO28 = 3; // Asynch input GPIO28 (SCIRXDA) - -/* Configure SCI-A pins using GPIO regs*/ -// This specifies which of the possible GPIO pins will be SCI functional pins. - - GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 1; // Configure GPIO28 for SCIRXDA operation - GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 1; // Configure GPIO29 for SCITXDA operation - - EDIS; -} - -#if DSP28_SCIB -void InitScibGpio() -{ - EALLOW; - -/* Enable internal pull-up for the selected pins */ -// Pull-ups can be enabled or disabled disabled by the user. -// This will enable the pullups for the specified pins. -// Comment out other unwanted lines. - -// GpioCtrlRegs.GPAPUD.bit.GPIO9 = 0; // Enable pull-up for GPIO9 (SCITXDB) -// GpioCtrlRegs.GPAPUD.bit.GPIO14 = 0; // Enable pull-up for GPIO14 (SCITXDB) - GpioCtrlRegs.GPAPUD.bit.GPIO18 = 0; // Enable pull-up for GPIO18 (SCITXDB) -// GpioCtrlRegs.GPAPUD.bit.GPIO22 = 0; // Enable pull-up for GPIO22 (SCITXDB) - - -// GpioCtrlRegs.GPAPUD.bit.GPIO11 = 0; // Enable pull-up for GPIO11 (SCIRXDB) -// GpioCtrlRegs.GPAPUD.bit.GPIO15 = 0; // Enable pull-up for GPIO15 (SCIRXDB) - GpioCtrlRegs.GPAPUD.bit.GPIO19 = 0; // Enable pull-up for GPIO19 (SCIRXDB) -// GpioCtrlRegs.GPAPUD.bit.GPIO23 = 0; // Enable pull-up for GPIO23 (SCIRXDB) - -/* Set qualification for selected pins to asynch only */ -// This will select asynch (no qualification) for the selected pins. -// Comment out other unwanted lines. - -// GpioCtrlRegs.GPAQSEL1.bit.GPIO11 = 3; // Asynch input GPIO11 (SCIRXDB) -// GpioCtrlRegs.GPAQSEL1.bit.GPIO15 = 3; // Asynch input GPIO15 (SCIRXDB) - GpioCtrlRegs.GPAQSEL2.bit.GPIO19 = 3; // Asynch input GPIO19 (SCIRXDB) -// GpioCtrlRegs.GPAQSEL2.bit.GPIO23 = 3; // Asynch input GPIO23 (SCIRXDB) - -/* Configure SCI-B pins using GPIO regs*/ -// This specifies which of the possible GPIO pins will be SCI functional pins. -// Comment out other unwanted lines. - -// GpioCtrlRegs.GPAMUX1.bit.GPIO9 = 2; // Configure GPIO9 for SCITXDB operation -// GpioCtrlRegs.GPAMUX1.bit.GPIO14 = 2; // Configure GPIO14 for SCITXDB operation - GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 2; // Configure GPIO18 for SCITXDB operation -// GpioCtrlRegs.GPAMUX2.bit.GPIO22 = 3; // Configure GPIO22 for SCITXDB operation - -// GpioCtrlRegs.GPAMUX1.bit.GPIO11 = 2; // Configure GPIO11 for SCIRXDB operation -// GpioCtrlRegs.GPAMUX1.bit.GPIO15 = 2; // Configure GPIO15 for SCIRXDB operation - GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 2; // Configure GPIO19 for SCIRXDB operation -// GpioCtrlRegs.GPAMUX2.bit.GPIO23 = 3; // Configure GPIO23 for SCIRXDB operation - - EDIS; -} -#endif // if DSP28_SCIB - -#if DSP28_SCIC -void InitScicGpio() -{ - EALLOW; - -/* Enable internal pull-up for the selected pins */ -// Pull-ups can be enabled or disabled disabled by the user. -// This will enable the pullups for the specified pins. - - GpioCtrlRegs.GPBPUD.bit.GPIO62 = 0; // Enable pull-up for GPIO62 (SCIRXDC) - GpioCtrlRegs.GPBPUD.bit.GPIO63 = 0; // Enable pull-up for GPIO63 (SCITXDC) - -/* Set qualification for selected pins to asynch only */ -// Inputs are synchronized to SYSCLKOUT by default. -// This will select asynch (no qualification) for the selected pins. - - GpioCtrlRegs.GPBQSEL2.bit.GPIO62 = 3; // Asynch input GPIO62 (SCIRXDC) - -/* Configure SCI-C pins using GPIO regs*/ -// This specifies which of the possible GPIO pins will be SCI functional pins. - - GpioCtrlRegs.GPBMUX2.bit.GPIO62 = 1; // Configure GPIO62 for SCIRXDC operation - GpioCtrlRegs.GPBMUX2.bit.GPIO63 = 1; // Configure GPIO63 for SCITXDC operation - - EDIS; -} -#endif // if DSP28_SCIC - - -//=========================================================================== -// End of file. -//=========================================================================== diff --git a/Source/External/v120/DSP2833x_common/source/DSP2833x_Spi.c b/Source/External/v120/DSP2833x_common/source/DSP2833x_Spi.c deleted file mode 100644 index 95a7b32..0000000 --- a/Source/External/v120/DSP2833x_common/source/DSP2833x_Spi.c +++ /dev/null @@ -1,107 +0,0 @@ -// TI File $Revision: /main/1 $ -// Checkin $Date: August 18, 2006 13:46:44 $ -//########################################################################### -// -// FILE: DSP2833x_Spi.c -// -// TITLE: DSP2833x SPI Initialization & Support Functions. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File -#include "DSP2833x_Examples.h" // DSP2833x Examples Include File - -//--------------------------------------------------------------------------- -// InitSPI: -//--------------------------------------------------------------------------- -// This function initializes the SPI(s) to a known state. -// -void InitSpi(void) -{ - // Initialize SPI-A/B/C/D - - //tbd... - -} - -//--------------------------------------------------------------------------- -// Example: InitSpiGpio: -//--------------------------------------------------------------------------- -// This function initializes GPIO pins to function as SPI pins -// -// Each GPIO pin can be configured as a GPIO pin or up to 3 different -// peripheral functional pins. By default all pins come up as GPIO -// inputs after reset. -// -// Caution: -// For each SPI peripheral -// Only one GPIO pin should be enabled for SPISOMO operation. -// Only one GPIO pin should be enabled for SPISOMI operation. -// Only one GPIO pin should be enabled for SPICLKA operation. -// Only one GPIO pin should be enabled for SPISTEA operation. -// Comment out other unwanted lines. - -void InitSpiGpio() -{ - - InitSpiaGpio(); -} - -void InitSpiaGpio() -{ - - EALLOW; -/* Enable internal pull-up for the selected pins */ -// Pull-ups can be enabled or disabled by the user. -// This will enable the pullups for the specified pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAPUD.bit.GPIO16 = 0; // Enable pull-up on GPIO16 (SPISIMOA) - GpioCtrlRegs.GPAPUD.bit.GPIO17 = 0; // Enable pull-up on GPIO17 (SPISOMIA) - GpioCtrlRegs.GPAPUD.bit.GPIO18 = 0; // Enable pull-up on GPIO18 (SPICLKA) - GpioCtrlRegs.GPAPUD.bit.GPIO19 = 0; // Enable pull-up on GPIO19 (SPISTEA) - - -// GpioCtrlRegs.GPBPUD.bit.GPIO54 = 0; // Enable pull-up on GPIO54 (SPISIMOA) -// GpioCtrlRegs.GPBPUD.bit.GPIO55 = 0; // Enable pull-up on GPIO55 (SPISOMIA) -// GpioCtrlRegs.GPBPUD.bit.GPIO56 = 0; // Enable pull-up on GPIO56 (SPICLKA) -// GpioCtrlRegs.GPBPUD.bit.GPIO57 = 0; // Enable pull-up on GPIO57 (SPISTEA) - -/* Set qualification for selected pins to asynch only */ -// This will select asynch (no qualification) for the selected pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAQSEL2.bit.GPIO16 = 3; // Asynch input GPIO16 (SPISIMOA) - GpioCtrlRegs.GPAQSEL2.bit.GPIO17 = 3; // Asynch input GPIO17 (SPISOMIA) - GpioCtrlRegs.GPAQSEL2.bit.GPIO18 = 3; // Asynch input GPIO18 (SPICLKA) - GpioCtrlRegs.GPAQSEL2.bit.GPIO19 = 3; // Asynch input GPIO19 (SPISTEA) - -// GpioCtrlRegs.GPBQSEL2.bit.GPIO54 = 3; // Asynch input GPIO16 (SPISIMOA) -// GpioCtrlRegs.GPBQSEL2.bit.GPIO55 = 3; // Asynch input GPIO17 (SPISOMIA) -// GpioCtrlRegs.GPBQSEL2.bit.GPIO56 = 3; // Asynch input GPIO18 (SPICLKA) -// GpioCtrlRegs.GPBQSEL2.bit.GPIO57 = 3; // Asynch input GPIO19 (SPISTEA) - - -/* Configure SPI-A pins using GPIO regs*/ -// This specifies which of the possible GPIO pins will be SPI functional pins. -// Comment out other unwanted lines. - - GpioCtrlRegs.GPAMUX2.bit.GPIO16 = 1; // Configure GPIO16 as SPISIMOA - GpioCtrlRegs.GPAMUX2.bit.GPIO17 = 1; // Configure GPIO17 as SPISOMIA - GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 1; // Configure GPIO18 as SPICLKA - GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 1; // Configure GPIO19 as SPISTEA - -// GpioCtrlRegs.GPBMUX2.bit.GPIO54 = 1; // Configure GPIO54 as SPISIMOA -// GpioCtrlRegs.GPBMUX2.bit.GPIO55 = 1; // Configure GPIO55 as SPISOMIA -// GpioCtrlRegs.GPBMUX2.bit.GPIO56 = 1; // Configure GPIO56 as SPICLKA -// GpioCtrlRegs.GPBMUX2.bit.GPIO57 = 1; // Configure GPIO57 as SPISTEA - - EDIS; -} - -//=========================================================================== -// End of file. -//=========================================================================== diff --git a/Source/External/v120/DSP2833x_common/source/DSP2833x_SysCtrl.c b/Source/External/v120/DSP2833x_common/source/DSP2833x_SysCtrl.c index 30eb665..5d5a630 100644 --- a/Source/External/v120/DSP2833x_common/source/DSP2833x_SysCtrl.c +++ b/Source/External/v120/DSP2833x_common/source/DSP2833x_SysCtrl.c @@ -19,9 +19,6 @@ #include "DSP2833x_Device.h" // Headerfile Include File #include "DSP2833x_Examples.h" // Examples Include File -#include "RS485.h" -#include "message.h" - // Functions that will be run from RAM need to be assigned to // a different section. This section will then be mapped to a load and // run address using the linker cmd file. diff --git a/Source/External/v120/DSP2833x_common/source/DSP2833x_Xintf.c b/Source/External/v120/DSP2833x_common/source/DSP2833x_Xintf.c index 302ca91..0d3619a 100644 --- a/Source/External/v120/DSP2833x_common/source/DSP2833x_Xintf.c +++ b/Source/External/v120/DSP2833x_common/source/DSP2833x_Xintf.c @@ -222,18 +222,19 @@ void InitXintf16Gpio() GpioCtrlRegs.GPCMUX2.bit.GPIO85 = 3; // XA13 GpioCtrlRegs.GPCMUX2.bit.GPIO86 = 3; // XA14 GpioCtrlRegs.GPCMUX2.bit.GPIO87 = 3; // XA15 - GpioCtrlRegs.GPBMUX1.bit.GPIO39 = 3; // XA16 - GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 3; // XA17 - GpioCtrlRegs.GPAMUX2.bit.GPIO30 = 3; // XA18 - GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 3; // XA19 - GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 3; // XREADY + GpioCtrlRegs.GPBMUX1.bit.GPIO39 = 3; // XA16 +// GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 3; // XA17 +// GpioCtrlRegs.GPAMUX2.bit.GPIO30 = 3; // XA18 +// GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 3; // XA19 + +// GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 3; // XREADY GpioCtrlRegs.GPBMUX1.bit.GPIO35 = 3; // XRNW GpioCtrlRegs.GPBMUX1.bit.GPIO38 = 3; // XWE0 - GpioCtrlRegs.GPBMUX1.bit.GPIO36 = 3; // XZCS0 +// GpioCtrlRegs.GPBMUX1.bit.GPIO36 = 3; // XZCS0 GpioCtrlRegs.GPBMUX1.bit.GPIO37 = 3; // XZCS7 - GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 3; // XZCS6 +// GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 3; // XZCS6 EDIS; } diff --git a/Source/External/v120/DSP2833x_examples/adc_dma/Example_2833xAdcToDMA.c b/Source/External/v120/DSP2833x_examples/adc_dma/Example_2833xAdcToDMA.c deleted file mode 100644 index dab0e92..0000000 --- a/Source/External/v120/DSP2833x_examples/adc_dma/Example_2833xAdcToDMA.c +++ /dev/null @@ -1,212 +0,0 @@ -//########################################################################### -// -// FILE: Example_2833xAdcToDMA.c -// -// TITLE: DSP2833x ADC To DMA -// ASSUMPTIONS: -// -// This program requires the DSP2833x header files. -// -// Make sure the CPU clock speed is properly defined in -// DSP2833x_Examples.h before compiling this example. -// -// Connect the signals to be converted to channel A0, A1, A2, and A3. -// -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// -// DESCRIPTION: -// -// ADC is setup to convert 4 channels for each SOC received, with total of 10 SOCs. -// Each SOC initiates 4 conversions. -// DMA is set up to capture the data on each SEQ1_INT. DMA will re-sort -// the data by channel sequentially, i.e. all channel0 data will be together -// all channel1 data will be together. -// -// Code should stop in local_DINTCH1_ISR when complete -// -// Watch Variables: -// DMABuf1 -// -//########################################################################### -// -// Original source by: M.P. -// -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File - -// ADC start parameters -#if (CPU_FRQ_150MHZ) // Default - 150 MHz SYSCLKOUT - #define ADC_MODCLK 0x3 // HSPCLK = SYSCLKOUT/2*ADC_MODCLK2 = 150/(2*3) = 25.0 MHz -#endif -#if (CPU_FRQ_100MHZ) - #define ADC_MODCLK 0x2 // HSPCLK = SYSCLKOUT/2*ADC_MODCLK2 = 100/(2*2) = 25.0 MHz -#endif -#define ADC_CKPS 0x1 // ADC module clock = HSPCLK/2*ADC_CKPS = 25.0MHz/(1*2) = 12.5MHz -#define ADC_SHCLK 0xf // S/H width in ADC module periods = 16 ADC clocks -#define AVG 1000 // Average sample limit -#define ZOFFSET 0x00 // Average Zero offset -#define BUF_SIZE 40 // Sample buffer size - -// Global variable for this example -Uint16 j=0; - -#pragma DATA_SECTION(DMABuf1,"DMARAML4"); -volatile Uint16 DMABuf1[40]; - -volatile Uint16 *DMADest; -volatile Uint16 *DMASource; -interrupt void local_DINTCH1_ISR(void); - -void main(void) -{ - Uint16 i; -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - -// Specific clock setting for this example: - EALLOW; - SysCtrlRegs.HISPCP.all = ADC_MODCLK; // HSPCLK = SYSCLKOUT/ADC_MODCLK - EDIS; - -// Step 2. Initialize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); // Skipped for this example - -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize the PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - -// Interrupts that are used in this example are re-mapped to -// ISR functions found within this file. - EALLOW; // Allow access to EALLOW protected registers - PieVectTable.DINTCH1= &local_DINTCH1_ISR; - EDIS; // Disable access to EALLOW protected registers - - IER = M_INT7 ; //Enable INT7 (7.1 DMA Ch1) - EnableInterrupts(); - -// Step 4. Initialize all the Device Peripherals: -// This function is found in DSP2833x_InitPeripherals.c -// InitPeripherals(); // Not required for this example - InitAdc(); // For this example, init the ADC - -// Specific ADC setup for this example: - AdcRegs.ADCTRL1.bit.ACQ_PS = ADC_SHCLK; - AdcRegs.ADCTRL3.bit.ADCCLKPS = ADC_CKPS; - AdcRegs.ADCTRL1.bit.SEQ_CASC = 0; // 0 Non-Cascaded Mode - AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 0x1; - AdcRegs.ADCTRL2.bit.RST_SEQ1 = 0x1; - AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0; - AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x1; - AdcRegs.ADCCHSELSEQ1.bit.CONV02 = 0x2; - AdcRegs.ADCCHSELSEQ1.bit.CONV03 = 0x3; - AdcRegs.ADCCHSELSEQ2.bit.CONV04 = 0x0; - AdcRegs.ADCCHSELSEQ2.bit.CONV05 = 0x1; - AdcRegs.ADCCHSELSEQ2.bit.CONV06 = 0x2; - AdcRegs.ADCCHSELSEQ2.bit.CONV07 = 0x3; - AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 3; // Set up ADC to perform 4 conversions for every SOC - -//Step 5. User specific code, enable interrupts: - // Initialize DMA - DMAInitialize(); - - // Clear Table - for (i=0; i>4); - SampleTable[array_index++]= ( (AdcRegs.ADCRESULT1)>>4); - SampleTable[array_index++]= ( (AdcRegs.ADCRESULT2)>>4); - SampleTable[array_index++]= ( (AdcRegs.ADCRESULT3)>>4); - SampleTable[array_index++]= ( (AdcRegs.ADCRESULT4)>>4); - SampleTable[array_index++]= ( (AdcRegs.ADCRESULT5)>>4); - SampleTable[array_index++]= ( (AdcRegs.ADCRESULT6)>>4); - SampleTable[array_index++]= ( (AdcRegs.ADCRESULT7)>>4); - -#endif //-- INLINE_SHIFT - -#if NO_SHIFT || POST_SHIFT - - SampleTable[array_index++]= ( (AdcRegs.ADCRESULT0)); - SampleTable[array_index++]= ( (AdcRegs.ADCRESULT1)); - SampleTable[array_index++]= ( (AdcRegs.ADCRESULT2)); - SampleTable[array_index++]= ( (AdcRegs.ADCRESULT3)); - SampleTable[array_index++]= ( (AdcRegs.ADCRESULT4)); - SampleTable[array_index++]= ( (AdcRegs.ADCRESULT5)); - SampleTable[array_index++]= ( (AdcRegs.ADCRESULT6)); - SampleTable[array_index++]= ( (AdcRegs.ADCRESULT7)); - -#endif //-- NO_SHIFT || POST_SHIFT - - while (AdcRegs.ADCST.bit.INT_SEQ1== 0){} - GpioDataRegs.GPBCLEAR.bit.GPIO34 = 1; // Clear GPIO34 for monitoring -optional - AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1; - -#if INLINE_SHIFT - - SampleTable[array_index++]= ( (AdcRegs.ADCRESULT8)>>4); - SampleTable[array_index++]= ( (AdcRegs.ADCRESULT9)>>4); - SampleTable[array_index++]= ( (AdcRegs.ADCRESULT10)>>4); - SampleTable[array_index++]= ( (AdcRegs.ADCRESULT11)>>4); - SampleTable[array_index++]= ( (AdcRegs.ADCRESULT12)>>4); - SampleTable[array_index++]= ( (AdcRegs.ADCRESULT13)>>4); - SampleTable[array_index++]= ( (AdcRegs.ADCRESULT14)>>4); - SampleTable[array_index++]= ( (AdcRegs.ADCRESULT15)>>4); - -#endif //-- INLINE_SHIFT - -#if NO_SHIFT || POST_SHIFT - - SampleTable[array_index++]= ( (AdcRegs.ADCRESULT8)); - SampleTable[array_index++]= ( (AdcRegs.ADCRESULT9)); - SampleTable[array_index++]= ( (AdcRegs.ADCRESULT10)); - SampleTable[array_index++]= ( (AdcRegs.ADCRESULT11)); - SampleTable[array_index++]= ( (AdcRegs.ADCRESULT12)); - SampleTable[array_index++]= ( (AdcRegs.ADCRESULT13)); - SampleTable[array_index++]= ( (AdcRegs.ADCRESULT14)); - SampleTable[array_index++]= ( (AdcRegs.ADCRESULT15)); -#endif // -- NO_SHIFT || POST_SHIFT - - } - - -#if POST_SHIFT - // For post shifting, shift the ADC results - // in the SampleTable buffer after the buffer is full. - for (i=0; i>4); - } -#endif // -- POST_SHIFT - - GpioDataRegs.GPBCLEAR.bit.GPIO34 = 1; // Clear GPIO34 for monitoring -optional - } -} - -//=========================================================================== -// No more. -//=========================================================================== - - diff --git a/Source/External/v120/DSP2833x_examples/adc_seq_ovd_test/Example_2833xAdcSeq_ovdTest.gel b/Source/External/v120/DSP2833x_examples/adc_seq_ovd_test/Example_2833xAdcSeq_ovdTest.gel deleted file mode 100644 index 4bf2af1..0000000 --- a/Source/External/v120/DSP2833x_examples/adc_seq_ovd_test/Example_2833xAdcSeq_ovdTest.gel +++ /dev/null @@ -1,39 +0,0 @@ -/* -// TI File $Revision: /main/5 $ -// Checkin $Date: August 9, 2007 17:11:35 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// project. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -menuitem "DSP2833x ADC Seq_ovd Test" - - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xAdcSeq_ovdTest.pjt"); - GEL_ProjectBuild("Example_2833xAdcSeq_ovdTest.pjt"); - Setup_WatchWindow(); -} - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xAdcSeq_ovdTest.out"); - Setup_WatchWindow(); -} - -hotmenu Setup_WatchWindow() -{ - GEL_WatchReset(); - GEL_WatchAdd("SampleTable,x"); - GEL_WatchAdd("AdcRegs,x",); -} - - diff --git a/Source/External/v120/DSP2833x_examples/adc_seq_ovd_test/Example_2833xAdcSeq_ovdTest.pjt b/Source/External/v120/DSP2833x_examples/adc_seq_ovd_test/Example_2833xAdcSeq_ovdTest.pjt deleted file mode 100644 index 414d901..0000000 --- a/Source/External/v120/DSP2833x_examples/adc_seq_ovd_test/Example_2833xAdcSeq_ovdTest.pjt +++ /dev/null @@ -1,45 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\adc_seq_ovd_test\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_Adc.c" -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xAdcSeq_ovdTest.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\adc_seq_ovd_test\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\adc_seq_ovd_test\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" --float_support=fpu32 -ml -mt -v28 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\adc_seq_ovd_test\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -ecode_start -m".\Debug\Example_2833xAdcSeq_ovdTest.map" -o".\Debug\Example_2833xAdcSeq_ovdTest.out" -stack0x380 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xAdcSeq_ovdTest.out" -x - diff --git a/Source/External/v120/DSP2833x_examples/adc_seqmode_test/Example_2833xAdcSeqModeTest.c b/Source/External/v120/DSP2833x_examples/adc_seqmode_test/Example_2833xAdcSeqModeTest.c deleted file mode 100644 index 70299a6..0000000 --- a/Source/External/v120/DSP2833x_examples/adc_seqmode_test/Example_2833xAdcSeqModeTest.c +++ /dev/null @@ -1,164 +0,0 @@ -// TI File $Revision: /main/10 $ -// Checkin $Date: April 21, 2008 15:40:57 $ -//########################################################################### -// -// FILE: Example_2833xAdcSeqModeTest.c -// -// TITLE: DSP2833x ADC Seq Mode Test. -// -// ASSUMPTIONS: -// -// This program requires the DSP2833x header files. -// -// Make sure the CPU clock speed is properly defined in -// DSP2833x_Examples.h before compiling this example. -// -// Connect the signal to be converted to channel A0. -// -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// DESCRIPTION: -// -// Channel A0 is converted forever and logged in a buffer (SampleTable) -// -// Open a memory window to SampleTable to observe the buffer -// RUN for a while and stop and see the table contents. -// -// Watch Variables: -// SampleTable - Log of converted values. -// -//########################################################################### -// -// Original source by: S.S. -// -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File - -// ADC start parameters -#if (CPU_FRQ_150MHZ) // Default - 150 MHz SYSCLKOUT - #define ADC_MODCLK 0x3 // HSPCLK = SYSCLKOUT/2*ADC_MODCLK2 = 150/(2*3) = 25.0 MHz -#endif -#if (CPU_FRQ_100MHZ) - #define ADC_MODCLK 0x2 // HSPCLK = SYSCLKOUT/2*ADC_MODCLK2 = 100/(2*2) = 25.0 MHz -#endif -#define ADC_CKPS 0x1 // ADC module clock = HSPCLK/2*ADC_CKPS = 25.0MHz/(1*2) = 12.5MHz -#define ADC_SHCLK 0xf // S/H width in ADC module periods = 16 ADC clocks -#define AVG 1000 // Average sample limit -#define ZOFFSET 0x00 // Average Zero offset -#define BUF_SIZE 2048 // Sample buffer size - -// Global variable for this example -Uint16 SampleTable[BUF_SIZE]; - -main() -{ - Uint16 i; - -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - -// Specific clock setting for this example: - EALLOW; - SysCtrlRegs.HISPCP.all = ADC_MODCLK; // HSPCLK = SYSCLKOUT/ADC_MODCLK - EDIS; - -// Step 2. Initialize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); // Skipped for this example - -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize the PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - -// Step 4. Initialize all the Device Peripherals: -// This function is found in DSP2833x_InitPeripherals.c -// InitPeripherals(); // Not required for this example - InitAdc(); // For this example, init the ADC - -// Specific ADC setup for this example: - AdcRegs.ADCTRL1.bit.ACQ_PS = ADC_SHCLK; - AdcRegs.ADCTRL3.bit.ADCCLKPS = ADC_CKPS; - AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; // 1 Cascaded mode - AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0; - AdcRegs.ADCTRL1.bit.CONT_RUN = 1; // Setup continuous run - - -// Step 5. User specific code, enable interrupts: - - -// Clear SampleTable - for (i=0; i>4) ); - } - } -} - -//=========================================================================== -// No more. -//=========================================================================== - diff --git a/Source/External/v120/DSP2833x_examples/adc_seqmode_test/Example_2833xAdcSeqModeTest.gel b/Source/External/v120/DSP2833x_examples/adc_seqmode_test/Example_2833xAdcSeqModeTest.gel deleted file mode 100644 index 6ea6c86..0000000 --- a/Source/External/v120/DSP2833x_examples/adc_seqmode_test/Example_2833xAdcSeqModeTest.gel +++ /dev/null @@ -1,37 +0,0 @@ -/* -// TI File $Revision: /main/5 $ -// Checkin $Date: August 9, 2007 17:11:47 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// project. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -menuitem "DSP2833x ADC Seq Test" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xAdcSeqModeTest.pjt"); - GEL_ProjectBuild("Example_2833xAdcSeqModeTest.pjt"); - Setup_WatchWindow(); -} - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xAdcSeqModeTest.out"); - Setup_WatchWindow(); -} - - -hotmenu Setup_WatchWindow() -{ - GEL_WatchReset(); - GEL_WatchAdd("SampleTable,x"); - GEL_WatchAdd("AdcRegs,x"); -} diff --git a/Source/External/v120/DSP2833x_examples/adc_seqmode_test/Example_2833xAdcSeqModeTest.pjt b/Source/External/v120/DSP2833x_examples/adc_seqmode_test/Example_2833xAdcSeqModeTest.pjt deleted file mode 100644 index 35d0116..0000000 --- a/Source/External/v120/DSP2833x_examples/adc_seqmode_test/Example_2833xAdcSeqModeTest.pjt +++ /dev/null @@ -1,45 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\adc_seqmode_test\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_Adc.c" -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xAdcSeqModeTest.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\adc_seqmode_test\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\adc_seqmode_test\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" --float_support=fpu32 -ml -mt -v28 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\adc_seqmode_test\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -ecode_start -m".\Debug\Example_2833xAdcSeqModeTest.map" -o".\Debug\Example_2833xAdcSeqModeTest.out" -stack0x380 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xAdcSeqModeTest.out" -x - diff --git a/Source/External/v120/DSP2833x_examples/adc_soc/Example_2833xAdcSoc.c b/Source/External/v120/DSP2833x_examples/adc_soc/Example_2833xAdcSoc.c deleted file mode 100644 index 6a53322..0000000 --- a/Source/External/v120/DSP2833x_examples/adc_soc/Example_2833xAdcSoc.c +++ /dev/null @@ -1,203 +0,0 @@ -// TI File $Revision: /main/11 $ -// Checkin $Date: April 21, 2008 15:41:01 $ -//########################################################################### -// -// FILE: Example_2833xAdc.c -// -// TITLE: DSP2833x ADC Example Program. -// -// ASSUMPTIONS: -// -// This program requires the DSP2833x header files. -// -// Make sure the CPU clock speed is properly defined in -// DSP2833x_Examples.h before compiling this example. -// -// Connect signals to be converted to A2 and A3. -// -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// DESCRIPTION: -// -// This example sets up the PLL in x10/2 mode. -// -// For 150 MHz devices (default) -// divides SYSCLKOUT by six to reach a 25.0Mhz HSPCLK -// (assuming a 30Mhz XCLKIN). -// -// For 100 MHz devices: -// divides SYSCLKOUT by four to reach a 25.0Mhz HSPCLK -// (assuming a 20Mhz XCLKIN). -// -// Interrupts are enabled and the ePWM1 is setup to generate a periodic -// ADC SOC on SEQ1. Two channels are converted, ADCINA3 and ADCINA2. -// -// Watch Variables: -// -// Voltage1[10] Last 10 ADCRESULT0 values -// Voltage2[10] Last 10 ADCRESULT1 values -// ConversionCount Current result number 0-9 -// LoopCount Idle loop counter -// -// -//########################################################################### -// -// Original Author: D.F. -// -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File - -// Prototype statements for functions found within this file. -interrupt void adc_isr(void); - -// Global variables used in this example: -Uint16 LoopCount; -Uint16 ConversionCount; -Uint16 Voltage1[10]; -Uint16 Voltage2[10]; - - -main() -{ - -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - - - EALLOW; - #if (CPU_FRQ_150MHZ) // Default - 150 MHz SYSCLKOUT - #define ADC_MODCLK 0x3 // HSPCLK = SYSCLKOUT/2*ADC_MODCLK2 = 150/(2*3) = 25.0 MHz - #endif - #if (CPU_FRQ_100MHZ) - #define ADC_MODCLK 0x2 // HSPCLK = SYSCLKOUT/2*ADC_MODCLK2 = 100/(2*2) = 25.0 MHz - #endif - EDIS; - -// Step 2. Initialize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); // Skipped for this example - -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize the PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - -// Interrupts that are used in this example are re-mapped to -// ISR functions found within this file. - EALLOW; // This is needed to write to EALLOW protected register - PieVectTable.ADCINT = &adc_isr; - EDIS; // This is needed to disable write to EALLOW protected registers - -// Step 4. Initialize all the Device Peripherals: -// This function is found in DSP2833x_InitPeripherals.c -// InitPeripherals(); // Not required for this example - InitAdc(); // For this example, init the ADC - -// Step 5. User specific code, enable interrupts: - -// Enable ADCINT in PIE - PieCtrlRegs.PIEIER1.bit.INTx6 = 1; - IER |= M_INT1; // Enable CPU Interrupt 1 - EINT; // Enable Global interrupt INTM - ERTM; // Enable Global realtime interrupt DBGM - - LoopCount = 0; - ConversionCount = 0; - -// Configure ADC - AdcRegs.ADCMAXCONV.all = 0x0001; // Setup 2 conv's on SEQ1 - AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x3; // Setup ADCINA3 as 1st SEQ1 conv. - AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x2; // Setup ADCINA2 as 2nd SEQ1 conv. - AdcRegs.ADCTRL2.bit.EPWM_SOCA_SEQ1 = 1;// Enable SOCA from ePWM to start SEQ1 - AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1; // Enable SEQ1 interrupt (every EOS) - -// Assumes ePWM1 clock is already enabled in InitSysCtrl(); - EPwm1Regs.ETSEL.bit.SOCAEN = 1; // Enable SOC on A group - EPwm1Regs.ETSEL.bit.SOCASEL = 4; // Select SOC from from CPMA on upcount - EPwm1Regs.ETPS.bit.SOCAPRD = 1; // Generate pulse on 1st event - EPwm1Regs.CMPA.half.CMPA = 0x0080; // Set compare A value - EPwm1Regs.TBPRD = 0xFFFF; // Set period for ePWM1 - EPwm1Regs.TBCTL.bit.CTRMODE = 0; // count up and start - -// Wait for ADC interrupt - for(;;) - { - LoopCount++; - } - -} - - -interrupt void adc_isr(void) -{ - - Voltage1[ConversionCount] = AdcRegs.ADCRESULT0 >>4; - Voltage2[ConversionCount] = AdcRegs.ADCRESULT1 >>4; - - // If 40 conversions have been logged, start over - if(ConversionCount == 9) - { - ConversionCount = 0; - } - else ConversionCount++; - - // Reinitialize for next ADC sequence - AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1; // Reset SEQ1 - AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1; // Clear INT SEQ1 bit - PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; // Acknowledge interrupt to PIE - - return; -} - - - diff --git a/Source/External/v120/DSP2833x_examples/adc_soc/Example_2833xAdcSoc.gel b/Source/External/v120/DSP2833x_examples/adc_soc/Example_2833xAdcSoc.gel deleted file mode 100644 index 2d14fe1..0000000 --- a/Source/External/v120/DSP2833x_examples/adc_soc/Example_2833xAdcSoc.gel +++ /dev/null @@ -1,40 +0,0 @@ -/* -// TI File $Revision: /main/5 $ -// Checkin $Date: August 9, 2007 17:11:59 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// project. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -menuitem "DSP2833x ADC SOC Example" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xAdcSoc.pjt"); - GEL_ProjectBuild("Example_2833xAdcSoc.pjt"); - Setup_WatchWindow(); -} - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xAdcSoc.out"); - Setup_WatchWindow(); -} - -hotmenu Setup_WatchWindow() -{ - GEL_WatchReset(); - GEL_WatchAdd("Voltage1,x"); - GEL_WatchAdd("Voltage2,x"); - GEL_WatchAdd("LoopCount,x"); - GEL_WatchAdd("ConversionCount,d"); - GEL_WatchAdd("AdcRegs,x"); - GEL_WatchAdd("EPwm1Regs,x"); -} diff --git a/Source/External/v120/DSP2833x_examples/adc_soc/Example_2833xAdcSoc.pjt b/Source/External/v120/DSP2833x_examples/adc_soc/Example_2833xAdcSoc.pjt deleted file mode 100644 index 0c46c78..0000000 --- a/Source/External/v120/DSP2833x_examples/adc_soc/Example_2833xAdcSoc.pjt +++ /dev/null @@ -1,46 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP28" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\adc_soc\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_Adc.c" - -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xAdcSoc.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\adc_soc\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\adc_soc\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" --float_support=fpu32 -ml -mt -v28 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\adc_soc\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -ecode_start -m".\Debug\Example_2833xAdcSoc.map" -o".\Debug\Example_2833xAdcSoc.out" -stack0x380 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xAdcSoc.out" -x - diff --git a/Source/External/v120/DSP2833x_examples/cpu_timer/Example_2833xCpuTimer.c b/Source/External/v120/DSP2833x_examples/cpu_timer/Example_2833xCpuTimer.c deleted file mode 100644 index a4bfaff..0000000 --- a/Source/External/v120/DSP2833x_examples/cpu_timer/Example_2833xCpuTimer.c +++ /dev/null @@ -1,189 +0,0 @@ -// TI File $Revision: /main/14 $ -// Checkin $Date: April 21, 2008 15:41:07 $ -//########################################################################### -// -// FILE: Example_2833xCpuTimer.c -// -// TITLE: DSP2833x Device Getting Started Program. -// -// ASSUMPTIONS: -// -// This program requires the DSP2833x header files. -// -// Other then boot mode configuration, no other hardware configuration -// is required. -// -// -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// DESCRIPTION: -// -// This example configures CPU Timer0, 1, and 2 and increments -// a counter each time the timers assert an interrupt. -// -// Watch Variables: -// CpuTimer0.InterruptCount -// CpuTimer1.InterruptCount -// CpuTimer2.InterruptCount -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File - -// Prototype statements for functions found within this file. -interrupt void cpu_timer0_isr(void); -interrupt void cpu_timer1_isr(void); -interrupt void cpu_timer2_isr(void); - -void main(void) -{ - -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - -// Step 2. Initalize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); // Skipped for this example - - -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize the PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - -// Interrupts that are used in this example are re-mapped to -// ISR functions found within this file. - EALLOW; // This is needed to write to EALLOW protected registers - PieVectTable.TINT0 = &cpu_timer0_isr; - PieVectTable.XINT13 = &cpu_timer1_isr; - PieVectTable.TINT2 = &cpu_timer2_isr; - EDIS; // This is needed to disable write to EALLOW protected registers - -// Step 4. Initialize the Device Peripheral. This function can be -// found in DSP2833x_CpuTimers.c - InitCpuTimers(); // For this example, only initialize the Cpu Timers - -#if (CPU_FRQ_150MHZ) -// Configure CPU-Timer 0, 1, and 2 to interrupt every second: -// 150MHz CPU Freq, 1 second Period (in uSeconds) - - ConfigCpuTimer(&CpuTimer0, 150, 1000000); - ConfigCpuTimer(&CpuTimer1, 150, 1000000); - ConfigCpuTimer(&CpuTimer2, 150, 1000000); -#endif - -#if (CPU_FRQ_100MHZ) -// Configure CPU-Timer 0, 1, and 2 to interrupt every second: -// 100MHz CPU Freq, 1 second Period (in uSeconds) - - ConfigCpuTimer(&CpuTimer0, 100, 1000000); - ConfigCpuTimer(&CpuTimer1, 100, 1000000); - ConfigCpuTimer(&CpuTimer2, 100, 1000000); -#endif -// To ensure precise timing, use write-only instructions to write to the entire register. Therefore, if any -// of the configuration bits are changed in ConfigCpuTimer and InitCpuTimers (in DSP2833x_CpuTimers.h), the -// below settings must also be updated. - - CpuTimer0Regs.TCR.all = 0x4001; // Use write-only instruction to set TSS bit = 0 - CpuTimer1Regs.TCR.all = 0x4001; // Use write-only instruction to set TSS bit = 0 - CpuTimer2Regs.TCR.all = 0x4001; // Use write-only instruction to set TSS bit = 0 - -// Step 5. User specific code, enable interrupts: - - -// Enable CPU int1 which is connected to CPU-Timer 0, CPU int13 -// which is connected to CPU-Timer 1, and CPU int 14, which is connected -// to CPU-Timer 2: - IER |= M_INT1; - IER |= M_INT13; - IER |= M_INT14; - -// Enable TINT0 in the PIE: Group 1 interrupt 7 - PieCtrlRegs.PIEIER1.bit.INTx7 = 1; - -// Enable global Interrupts and higher priority real-time debug events: - EINT; // Enable Global interrupt INTM - ERTM; // Enable Global realtime interrupt DBGM - -// Step 6. IDLE loop. Just sit and loop forever (optional): - for(;;); - -} - - -interrupt void cpu_timer0_isr(void) -{ - CpuTimer0.InterruptCount++; - - // Acknowledge this interrupt to receive more interrupts from group 1 - PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; -} - -interrupt void cpu_timer1_isr(void) -{ - CpuTimer1.InterruptCount++; - // The CPU acknowledges the interrupt. - EDIS; -} - -interrupt void cpu_timer2_isr(void) -{ EALLOW; - CpuTimer2.InterruptCount++; - // The CPU acknowledges the interrupt. - EDIS; -} - -//=========================================================================== -// No more. -//=========================================================================== diff --git a/Source/External/v120/DSP2833x_examples/cpu_timer/Example_2833xCpuTimer.gel b/Source/External/v120/DSP2833x_examples/cpu_timer/Example_2833xCpuTimer.gel deleted file mode 100644 index cd7890d..0000000 --- a/Source/External/v120/DSP2833x_examples/cpu_timer/Example_2833xCpuTimer.gel +++ /dev/null @@ -1,43 +0,0 @@ -/* -// TI File $Revision: /main/6 $ -// Checkin $Date: August 9, 2007 17:12:13 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// project. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -menuitem "DSP2833x CpuTimerExample" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xCpuTimer.pjt"); - GEL_ProjectBuild("Example_2833xCpuTimer.pjt"); - Setup_WatchWindow(); -} - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xCpuTimer.out"); - Setup_WatchWindow(); -} - -hotmenu Setup_WatchWindow() -{ - GEL_WatchReset(); - GEL_WatchAdd("CpuTimer0.InterruptCount",,"CPU ISR Count"); - GEL_WatchAdd("CpuTimer0",,"CPU Timer Variables"); - GEL_WatchAdd("CpuTimer0Regs,x"); - GEL_WatchAdd("CpuTimer1.InterruptCount",,"CPU ISR Count"); - GEL_WatchAdd("CpuTimer1",,"CPU Timer Variables"); - GEL_WatchAdd("CpuTimer1Regs,x"); - GEL_WatchAdd("CpuTimer2.InterruptCount",,"CPU ISR Count"); - GEL_WatchAdd("CpuTimer2",,"CPU Timer Variables"); - GEL_WatchAdd("CpuTimer2Regs,x"); -} diff --git a/Source/External/v120/DSP2833x_examples/cpu_timer/Example_2833xCpuTimer.pjt b/Source/External/v120/DSP2833x_examples/cpu_timer/Example_2833xCpuTimer.pjt deleted file mode 100644 index df3939c..0000000 --- a/Source/External/v120/DSP2833x_examples/cpu_timer/Example_2833xCpuTimer.pjt +++ /dev/null @@ -1,46 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\cpu_timer\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="CustomBuilder" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CpuTimers.c" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xCpuTimer.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\cpu_timer\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\cpu_timer\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" --float_support=fpu32 -ml -mt -v28 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\cpu_timer\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -ecode_start -m".\Debug\Example_2833xCpuTimer.map" -o".\Debug\Example_2833xCpuTimer.out" -stack0x200 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xCpuTimer.out" -x - diff --git a/Source/External/v120/DSP2833x_examples/dma_ram_to_ram/Example_2833xDMA_ram_to_ram.c b/Source/External/v120/DSP2833x_examples/dma_ram_to_ram/Example_2833xDMA_ram_to_ram.c deleted file mode 100644 index ebee46e..0000000 --- a/Source/External/v120/DSP2833x_examples/dma_ram_to_ram/Example_2833xDMA_ram_to_ram.c +++ /dev/null @@ -1,189 +0,0 @@ -// TI File $Revision: /main/3 $ -// Checkin $Date: May 12, 2008 14:23:19 $ -//########################################################################### -// -// FILE: Example_2833xDMA_Ram_to_Ram.c -// -// TITLE: DSP2833x DMA Ram to Ram -// ASSUMPTIONS: -// -// This program requires the DSP2833x header files. -// -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// -// DESCRIPTION: -// -// Code will perform a block copy from L5 SARAM to L4 SARAM of 1024 words. Transfer will be started -// by Timer0. Will use 32-bit datasize to decrease the transfer time. -// Code will end in local_DINTCH1_ISR once the transfer is complete -// -// Watch Variables: -// DMABuf1 -// DMABuf2 -// -//########################################################################### -// -// Original source by: M.P. -// -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File - - -#define BUF_SIZE 1024 // Sample buffer size - - - - -// DMA Defines -#define CH1_TOTAL DATA_POINTS_PER_CHANNEL -#define CH1_WORDS_PER_BURST ADC_CHANNELS_TO_CONVERT - - - -#pragma DATA_SECTION(DMABuf1,"DMARAML4"); -#pragma DATA_SECTION(DMABuf2,"DMARAML5"); - -volatile Uint16 DMABuf1[1024]; -volatile Uint16 DMABuf2[1024]; - -volatile Uint16 *DMADest; -volatile Uint16 *DMASource; - -interrupt void local_DINTCH1_ISR(void); - - -void main(void) -{ - Uint16 i; -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - - -// Step 2. Initialize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); // Skipped for this example - -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize the PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - -// Interrupts that are used in this example are re-mapped to -// ISR functions found within this file. - EALLOW; // Allow access to EALLOW protected registers - PieVectTable.DINTCH1= &local_DINTCH1_ISR; - EDIS; // Disable access to EALLOW protected registers - - IER = M_INT7 ; //Enable INT7 (7.1 DMA Ch1) - EnableInterrupts(); - CpuTimer0Regs.TCR.bit.TSS = 1; //Stop Timer0 for now - - -//Step 5. User specific code, enable interrupts: - // Initialize DMA - DMAInitialize(); - - // Initialize Tables - for (i=0; iMDL.all; // = 0x9555AAAn (n is the MBX number) - TestMbox2 = Mailbox->MDH.all; // = 0x89ABCDEF (a constant) - TestMbox3 = Mailbox->MSGID.all;// = 0x9555AAAn (n is the MBX number) - -} // MSGID of a rcv MBX is transmitted as the MDL data. - - -void mailbox_check(int32 T1, int32 T2, int32 T3) -{ - if((T1 != T3) || ( T2 != 0x89ABCDEF)) - { - ErrorCount++; - } - else - { - PassCount++; - } -} - - -//=========================================================================== -// No more. -//=========================================================================== diff --git a/Source/External/v120/DSP2833x_examples/ecan_back2back/Example_2833xECanBack2Back.gel b/Source/External/v120/DSP2833x_examples/ecan_back2back/Example_2833xECanBack2Back.gel deleted file mode 100644 index 90f787e..0000000 --- a/Source/External/v120/DSP2833x_examples/ecan_back2back/Example_2833xECanBack2Back.gel +++ /dev/null @@ -1,43 +0,0 @@ -/* -// TI File $Revision: /main/5 $ -// Checkin $Date: August 9, 2007 17:12:48 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// project. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -menuitem "DSP2833x ECanBack2Back" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xECanBack2Back.pjt"); - GEL_ProjectBuild("Example_2833xECanBack2Back.pjt"); - Setup_WatchWindow(); -} - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xECanBack2Back.out"); - Setup_WatchWindow(); -} - - -hotmenu Setup_WatchWindow() -{ - GEL_WatchReset(); - GEL_WatchAdd("MessageReceivedCount,x"); - GEL_WatchAdd("ErrorCount,x"); - GEL_WatchAdd("PassCount,x"); - GEL_WatchAdd("ECanaRegs,x"); -} - - - - diff --git a/Source/External/v120/DSP2833x_examples/ecan_back2back/Example_2833xECanBack2Back.pjt b/Source/External/v120/DSP2833x_examples/ecan_back2back/Example_2833xECanBack2Back.pjt deleted file mode 100644 index cbe5cf6..0000000 --- a/Source/External/v120/DSP2833x_examples/ecan_back2back/Example_2833xECanBack2Back.pjt +++ /dev/null @@ -1,45 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\ecan_back2back\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_ECan.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xECanBack2Back.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\ecan_back2back\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\ecan_back2back\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" --float_support=fpu32 -ml -mt -v28 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\ecan_back2back\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -ecode_start -m".\Debug\Example_2833xECanBack2Back.map" -o".\Debug\Example_2833xECanBack2Back.out" -stack0x380 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xECanBack2Back.out" -x - diff --git a/Source/External/v120/DSP2833x_examples/ecap_apwm/Example_2833xECap_apwm.c b/Source/External/v120/DSP2833x_examples/ecap_apwm/Example_2833xECap_apwm.c deleted file mode 100644 index 1d1693a..0000000 --- a/Source/External/v120/DSP2833x_examples/ecap_apwm/Example_2833xECap_apwm.c +++ /dev/null @@ -1,223 +0,0 @@ -// TI File $Revision: /main/10 $ -// Checkin $Date: April 21, 2008 15:41:24 $ -//########################################################################### -// -// FILE: Example_2833xECap_apwm.c -// -// TITLE: DSP2833x ECAP APWM Example -// -// ASSUMPTIONS: -// -// This program requires the DSP2833x header files. -// -// Monitor eCAP1 - eCAP4 pins on a oscilloscope as -// described below. -// -// eCAP1 on GPIO24 -// eCAP2 on GPIO7 -// eCAP3 on GPIO9 -// eCAP4 on GPIO11 -// -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// DESCRIPTION: -// -// This program sets up the eCAP pins in the APWM mode. -// This program runs at 150 MHz SYSCLKOUT assuming a 30 MHz -// XCLKIN or 100 MHz SYSCLKOUT assuming a 20 MHz XCLKIN. -// -// For 150 MHz devices: -// -// eCAP1 will come out on the GPIO24 pin -// This pin is configured to vary between 7.5 Hz and 15 Hz using -// the shadow registers to load the next period/compare values -// -// eCAP2 will come out on the GPIO7 pin -// this pin is configured as a 7.5 Hz output -// -// eCAP3 will come out on the GPIO9 pin -// this pin is configured as a 1.5 Hz output -// -// -// eCAP4 will come out on the GPIO11 pin -// this pin is configured as a 30 kHz output -// -// All frequencies assume a 30 Mhz input clock. The XCLKOUT pin -// should show 150Mhz. -// -------------------------------------------------------------- -// For 100 MHz devices: -// -// eCAP1 will come out on the GPIO24 pin -// This pin is configured to vary between 5 Hz and 10 Hz using -// the shadow registers to load the next period/compare values -// -// eCAP2 will come out on the GPIO7 pin -// this pin is configured as a 5 Hz output -// -// eCAP3 will come out on the GPIO9 pin -// this pin is configured as a 1 Hz output -// -// eCAP4 will come out on the GPIO11 pin -// this pin is configured as a 20kHz output -// -// All frequencies assume a 20 Mhz input clock. The XCLKOUT pin -// should show 100Mhz. -// -// -// Watch Variables: -// -// -// -//########################################################################### -// Original Author: D.F. -// -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File - -// Global variables -Uint16 direction = 0; - -void main(void) -{ - -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - -// Step 2. Initalize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); // Skipped for this example - -// Initialize the GPIO pins for eCAP. -// This function is found in the DSP2833x_ECap.c file - InitECapGpio(); - -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize the PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - -// Interrupts that are used in this example are re-mapped to -// ISR functions found within this file. -// No interrupts used for this example. - -// Step 4. Initialize all the Device Peripherals: -// This function is found in DSP2833x_InitPeripherals.c -// InitPeripherals(); // Not required for this example - -// Step 5. User specific code - - - // Setup APWM mode on CAP1, set period and compare registers - ECap1Regs.ECCTL2.bit.CAP_APWM = 1; // Enable APWM mode - ECap1Regs.CAP1 = 0x01312D00; // Set Period value - ECap1Regs.CAP2 = 0x00989680; // Set Compare value - ECap1Regs.ECCLR.all = 0x0FF; // Clear pending interrupts - ECap1Regs.ECEINT.bit.CTR_EQ_CMP = 1; // enable Compare Equal Int - - // Setup APWM mode on CAP2, set period and compare registers - ECap2Regs.ECCTL2.bit.CAP_APWM = 1; // Enable APWM mode - ECap2Regs.CAP1 = 0x01312D00; // Set Period value - ECap2Regs.CAP2 = 0x00989680; // Set Compare value - ECap2Regs.ECCLR.all = 0x0FF; // Clear pending interrupts - ECap1Regs.ECEINT.bit.CTR_EQ_CMP = 1; // enable Compare Equal Int - - // Setup APWM mode on CAP3, set period and compare registers - ECap3Regs.ECCTL2.bit.CAP_APWM = 1; // Enable APWM mode - ECap3Regs.CAP1 = 0x05F5E100; // Set Period value - ECap3Regs.CAP2 = 0x02FAF080; // Set Compare value - ECap3Regs.ECCLR.all = 0x0FF; // Clear pending interrupts - ECap1Regs.ECEINT.bit.CTR_EQ_CMP = 1; // enable Compare Equal Int - - // Setup APWM mode on CAP4, set period and compare registers - ECap4Regs.ECCTL2.bit.CAP_APWM = 1; // Enable APWM mode - ECap4Regs.CAP1 = 0x00001388; // Set Period value - ECap4Regs.CAP2 = 0x000009C4; // Set Compare value - ECap4Regs.ECCLR.all = 0x0FF; // Clear pending interrupts - ECap1Regs.ECEINT.bit.CTR_EQ_CMP = 1; // enable Compare Equal Int - - // Start counters - ECap1Regs.ECCTL2.bit.TSCTRSTOP = 1; - ECap2Regs.ECCTL2.bit.TSCTRSTOP = 1; - ECap3Regs.ECCTL2.bit.TSCTRSTOP = 1; - ECap4Regs.ECCTL2.bit.TSCTRSTOP = 1; - - for(;;) - { - // set next duty cycle to 50% - ECap1Regs.CAP4 = ECap1Regs.CAP1 >> 1; - - // vary freq between 7.5 Hz and 15 Hz (for 150MHz SYSCLKOUT) 5 Hz and 10 Hz (for 100 MHz SYSCLKOUT) - if(ECap1Regs.CAP1 >= 0x01312D00) - { - direction = 0; - } else if (ECap1Regs.CAP1 <= 0x00989680) - { - direction = 1; - } - - if(direction == 0) - { - ECap1Regs.CAP3 = ECap1Regs.CAP1 - 500000; - } else - { - ECap1Regs.CAP3 = ECap1Regs.CAP1 + 500000; - } - } - -} - - - -//=========================================================================== -// No more. -//=========================================================================== diff --git a/Source/External/v120/DSP2833x_examples/ecap_apwm/Example_2833xECap_apwm.gel b/Source/External/v120/DSP2833x_examples/ecap_apwm/Example_2833xECap_apwm.gel deleted file mode 100644 index 15cb906..0000000 --- a/Source/External/v120/DSP2833x_examples/ecap_apwm/Example_2833xECap_apwm.gel +++ /dev/null @@ -1,39 +0,0 @@ -/* -// TI File $Revision: /main/5 $ -// Checkin $Date: August 9, 2007 17:13:02 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// project. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -menuitem "DSP2833x eCAP Asym PWM" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xECap_apwm.pjt"); - GEL_ProjectBuild("Example_2833xECap_apwm.pjt"); - Setup_WatchWindow(); -} - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xECap_apwm.out"); - Setup_WatchWindow(); -} - -hotmenu Setup_WatchWindow() -{ - GEL_WatchReset(); - GEL_WatchAdd("ECap1Regs,x"); -} - - - - diff --git a/Source/External/v120/DSP2833x_examples/ecap_apwm/Example_2833xECap_apwm.pjt b/Source/External/v120/DSP2833x_examples/ecap_apwm/Example_2833xECap_apwm.pjt deleted file mode 100644 index d982655..0000000 --- a/Source/External/v120/DSP2833x_examples/ecap_apwm/Example_2833xECap_apwm.pjt +++ /dev/null @@ -1,46 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\ecap_apwm\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CpuTimers.c" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_ECap.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xECap_apwm.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\ecap_apwm\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\ecap_apwm\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" --float_support=fpu32 -ml -mt -v28 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\ecap_apwm\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -ecode_start -m".\Debug\Example_2833xECap_apwm.map" -o".\Debug\Example_2833xECap_apwm.out" -stack0x380 -w -x -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xECap_apwm.out" -x - diff --git a/Source/External/v120/DSP2833x_examples/ecap_capture_pwm/Example_2833xECap_Capture_Pwm.c b/Source/External/v120/DSP2833x_examples/ecap_capture_pwm/Example_2833xECap_Capture_Pwm.c deleted file mode 100644 index 22ecde8..0000000 --- a/Source/External/v120/DSP2833x_examples/ecap_capture_pwm/Example_2833xECap_Capture_Pwm.c +++ /dev/null @@ -1,288 +0,0 @@ -// TI File $Revision: /main/8 $ -// Checkin $Date: April 21, 2008 15:41:29 $ -//########################################################################### -// -// FILE: Example_2833xECap_Capture_Pwm.c -// -// TITLE: Capture EPWM3. -// -// ASSUMPTIONS: -// -// This program requires the DSP2833x header files. -// -// Make the following external connection: -// EPWM3 on GPIO4 should be connected to ECAP1 on GPIO24. -// -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// DESCRIPTION: -// -// This example configures ePWM3A for: -// - Up count -// - Period starts at 2 and goes up to 1000 -// - Toggle output on PRD -// -// eCAP1 is configured to capture the time between rising -// and falling edge of the PWM3A output. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - - - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File - - -// Configure the start/end period for the timer -#define PWM3_TIMER_MIN 10 -#define PWM3_TIMER_MAX 8000 - -// Prototype statements for functions found within this file. -interrupt void ecap1_isr(void); -void InitECapture(void); -void InitEPwmTimer(void); -void Fail(void); - -// Global variables used in this example -Uint32 ECap1IntCount; -Uint32 ECap1PassCount; -Uint32 EPwm3TimerDirection; - -// To keep track of which way the timer value is moving -#define EPWM_TIMER_UP 1 -#define EPWM_TIMER_DOWN 0 - -void main(void) -{ - -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - -// Step 2. Initalize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); // Skipped for this example - - InitEPwm3Gpio(); - InitECap1Gpio(); - -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize the PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - -// Interrupts that are used in this example are re-mapped to -// ISR functions found within this file. - EALLOW; // This is needed to write to EALLOW protected registers - PieVectTable.ECAP1_INT = &ecap1_isr; - EDIS; // This is needed to disable write to EALLOW protected registers - -// Step 4. Initialize all the Device Peripherals: -// This function is found in DSP2833x_InitPeripherals.c -// InitPeripherals(); // Not required for this example - InitEPwmTimer(); // For this example, only initialize the ePWM Timers - InitECapture(); - - -// Step 5. User specific code, enable interrupts: - -// Initalize counters: - ECap1IntCount = 0; - ECap1PassCount = 0; - -// Enable CPU INT4 which is connected to ECAP1-4 INT: - IER |= M_INT4; - -// Enable eCAP INTn in the PIE: Group 3 interrupt 1-6 - PieCtrlRegs.PIEIER4.bit.INTx1 = 1; - -// Enable global Interrupts and higher priority real-time debug events: - EINT; // Enable Global interrupt INTM - ERTM; // Enable Global realtime interrupt DBGM - -// Step 6. IDLE loop. Just sit and loop forever (optional): - for(;;) - { - asm(" NOP"); - } - -} - - -void InitEPwmTimer() -{ - - EALLOW; - SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0; - EDIS; - - EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; // Count up - EPwm3Regs.TBPRD = PWM3_TIMER_MIN; - EPwm3Regs.TBPHS.all = 0x00000000; - EPwm3Regs.AQCTLA.bit.PRD = AQ_TOGGLE; // Toggle on PRD - - // TBCLK = SYSCLKOUT - EPwm3Regs.TBCTL.bit.HSPCLKDIV = 1; - EPwm3Regs.TBCTL.bit.CLKDIV = 0; - - - EPwm3TimerDirection = EPWM_TIMER_UP; - - EALLOW; - SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; - EDIS; - -} - -void InitECapture() -{ - ECap1Regs.ECEINT.all = 0x0000; // Disable all capture interrupts - ECap1Regs.ECCLR.all = 0xFFFF; // Clear all CAP interrupt flags - ECap1Regs.ECCTL1.bit.CAPLDEN = 0; // Disable CAP1-CAP4 register loads - ECap1Regs.ECCTL2.bit.TSCTRSTOP = 0; // Make sure the counter is stopped - - // Configure peripheral registers - ECap1Regs.ECCTL2.bit.CONT_ONESHT = 1; // One-shot - ECap1Regs.ECCTL2.bit.STOP_WRAP = 3; // Stop at 4 events - ECap1Regs.ECCTL1.bit.CAP1POL = 1; // Falling edge - ECap1Regs.ECCTL1.bit.CAP2POL = 0; // Rising edge - ECap1Regs.ECCTL1.bit.CAP3POL = 1; // Falling edge - ECap1Regs.ECCTL1.bit.CAP4POL = 0; // Rising edge - ECap1Regs.ECCTL1.bit.CTRRST1 = 1; // Difference operation - ECap1Regs.ECCTL1.bit.CTRRST2 = 1; // Difference operation - ECap1Regs.ECCTL1.bit.CTRRST3 = 1; // Difference operation - ECap1Regs.ECCTL1.bit.CTRRST4 = 1; // Difference operation - ECap1Regs.ECCTL2.bit.SYNCI_EN = 1; // Enable sync in - ECap1Regs.ECCTL2.bit.SYNCO_SEL = 0; // Pass through - ECap1Regs.ECCTL1.bit.CAPLDEN = 1; // Enable capture units - - - ECap1Regs.ECCTL2.bit.TSCTRSTOP = 1; // Start Counter - ECap1Regs.ECCTL2.bit.REARM = 1; // arm one-shot - ECap1Regs.ECCTL1.bit.CAPLDEN = 1; // Enable CAP1-CAP4 register loads - ECap1Regs.ECEINT.bit.CEVT4 = 1; // 4 events = interrupt - -} - - - -interrupt void ecap1_isr(void) -{ - - // Cap input is syc'ed to SYSCLKOUT so there may be - // a +/- 1 cycle variation - - if(ECap1Regs.CAP2 > EPwm3Regs.TBPRD*2+1 || ECap1Regs.CAP2 < EPwm3Regs.TBPRD*2-1) - { - Fail(); - } - - if(ECap1Regs.CAP3 > EPwm3Regs.TBPRD*2+1 || ECap1Regs.CAP3 < EPwm3Regs.TBPRD*2-1) - { - Fail(); - } - - if(ECap1Regs.CAP4 > EPwm3Regs.TBPRD*2+1 || ECap1Regs.CAP4 < EPwm3Regs.TBPRD*2-1) - { - Fail(); - } - - - ECap1IntCount++; - - if(EPwm3TimerDirection == EPWM_TIMER_UP) - { - if(EPwm3Regs.TBPRD < PWM3_TIMER_MAX) - { - EPwm3Regs.TBPRD++; - } - else - { - EPwm3TimerDirection = EPWM_TIMER_DOWN; - EPwm3Regs.TBPRD--; - } - } - else - { - if(EPwm3Regs.TBPRD > PWM3_TIMER_MIN) - { - EPwm3Regs.TBPRD--; - } - else - { - EPwm3TimerDirection = EPWM_TIMER_UP; - EPwm3Regs.TBPRD++; - } - } - - ECap1PassCount++; - - ECap1Regs.ECCLR.bit.CEVT4 = 1; - ECap1Regs.ECCLR.bit.INT = 1; - ECap1Regs.ECCTL2.bit.REARM = 1; - - // Acknowledge this interrupt to receive more interrupts from group 4 - PieCtrlRegs.PIEACK.all = PIEACK_GROUP4; -} - - -void Fail() -{ - asm(" ESTOP0"); -} - - - - - -//=========================================================================== -// No more. -//=========================================================================== diff --git a/Source/External/v120/DSP2833x_examples/ecap_capture_pwm/Example_2833xECap_Capture_Pwm.gel b/Source/External/v120/DSP2833x_examples/ecap_capture_pwm/Example_2833xECap_Capture_Pwm.gel deleted file mode 100644 index aefa65b..0000000 --- a/Source/External/v120/DSP2833x_examples/ecap_capture_pwm/Example_2833xECap_Capture_Pwm.gel +++ /dev/null @@ -1,46 +0,0 @@ -/* -// TI File $Revision: /main/5 $ -// Checkin $Date: August 9, 2007 17:13:13 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// project. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -menuitem "DSP2833x eCAP Capture PWM" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xECap_Capture_Pwm.pjt"); - GEL_ProjectBuild("Example_2833xECap_Capture_Pwm.pjt"); - Setup_WatchWindow(); -} - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xECap_Capture_Pwm.out"); - Setup_WatchWindow(); -} - -hotmenu Setup_WatchWindow() -{ - GEL_WatchReset(); - GEL_WatchAdd("ECap1IntCount,x"); - GEL_WatchAdd("ECap1PassCount,x"); - GEL_WatchAdd("EPwm3Regs.TBPRD,x"); - GEL_WatchAdd("ECap1Regs.CAP2,x"); - GEL_WatchAdd("ECap1Regs.CAP3,x"); - GEL_WatchAdd("ECap1Regs.CAP4,x"); - GEL_WatchAdd("EPwm3Regs,x"); - GEL_WatchAdd("ECap1Regs,x"); -} - - - - diff --git a/Source/External/v120/DSP2833x_examples/ecap_capture_pwm/Example_2833xECap_Capture_Pwm.pjt b/Source/External/v120/DSP2833x_examples/ecap_capture_pwm/Example_2833xECap_Capture_Pwm.pjt deleted file mode 100644 index cae4269..0000000 --- a/Source/External/v120/DSP2833x_examples/ecap_capture_pwm/Example_2833xECap_Capture_Pwm.pjt +++ /dev/null @@ -1,47 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\ecap_capture_pwm\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CpuTimers.c" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_ECap.c" -Source="..\..\DSP2833x_common\source\DSP2833x_EPwm.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xECap_Capture_Pwm.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\ecap_capture_pwm\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\ecap_capture_pwm\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" --float_support=fpu32 -ml -mt -v28 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\ecap_capture_pwm\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -ecode_start -m".\Debug\Example_2833xECap_Capture_Pwm.map" -o".\Debug\Example_2833xECap_Capture_Pwm.out" -stack0x380 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xCpuTimer.out" -x - diff --git a/Source/External/v120/DSP2833x_examples/epwm_deadband/Example_2833xEPwmDeadBand.c b/Source/External/v120/DSP2833x_examples/epwm_deadband/Example_2833xEPwmDeadBand.c deleted file mode 100644 index 8e91544..0000000 --- a/Source/External/v120/DSP2833x_examples/epwm_deadband/Example_2833xEPwmDeadBand.c +++ /dev/null @@ -1,457 +0,0 @@ -// TI File $Revision: /main/9 $ -// Checkin $Date: April 21, 2008 15:41:33 $ -//########################################################################### -// -// FILE: Example_2833xEpwmDeadBand.c -// -// TITLE: Check PWM deadband generation -// -// ASSUMPTIONS: -// -// This program requires the DSP2833x header files. -// -// Monitor ePWM1 - ePWM3 on an Oscilloscope as described -// below. -// -// EPWM1A is on GPIO0 -// EPWM1B is on GPIO1 -// -// EPWM2A is on GPIO2 -// EPWM2B is on GPIO3 -// -// EPWM3A is on GPIO4 -// EPWM3B is on GPIO5 -// -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// DESCRIPTION: -// -// This example configures ePWM1, ePWM2 and ePWM3 for: -// - Count up/down -// - Deadband -// -// 3 Examples are included: -// * ePWM1: Active low PWMs -// * ePWM2: Active low complementary PWMs -// * ePWM3: Active high complementary PWMs -// -// Each ePWM is configured to interrupt on the 3rd zero event -// when this happens the deadband is modified such that -// 0 <= DB <= DB_MAX. That is, the deadband will move up and -// down between 0 and the maximum value. -// -// -// View the EPWM1A/B, EPWM2A/B and EPWM3A/B waveforms -// via an oscilloscope -// -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File - -// Prototype statements for functions found within this file. -void InitEPwm1Example(void); -void InitEPwm2Example(void); -void InitEPwm3Example(void); -interrupt void epwm1_isr(void); -interrupt void epwm2_isr(void); -interrupt void epwm3_isr(void); - -// Global variables used in this example -Uint32 EPwm1TimerIntCount; -Uint32 EPwm2TimerIntCount; -Uint32 EPwm3TimerIntCount; -Uint16 EPwm1_DB_Direction; -Uint16 EPwm2_DB_Direction; -Uint16 EPwm3_DB_Direction; - -// Maximum Dead Band values -#define EPWM1_MAX_DB 0x03FF -#define EPWM2_MAX_DB 0x03FF -#define EPWM3_MAX_DB 0x03FF - -#define EPWM1_MIN_DB 0 -#define EPWM2_MIN_DB 0 -#define EPWM3_MIN_DB 0 - -// To keep track of which way the Dead Band is moving -#define DB_UP 1 -#define DB_DOWN 0 - -void main(void) -{ -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - -// Step 2. Initalize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); // Skipped for this example - -// For this case just init GPIO pins for ePWM1, ePWM2, ePWM3 -// These functions are in the DSP2833x_EPwm.c file - InitEPwm1Gpio(); - InitEPwm2Gpio(); - InitEPwm3Gpio(); - -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize the PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - -// Interrupts that are used in this example are re-mapped to -// ISR functions found within this file. - EALLOW; // This is needed to write to EALLOW protected registers - PieVectTable.EPWM1_INT = &epwm1_isr; - PieVectTable.EPWM2_INT = &epwm2_isr; - PieVectTable.EPWM3_INT = &epwm3_isr; - EDIS; // This is needed to disable write to EALLOW protected registers - -// Step 4. Initialize all the Device Peripherals: -// This function is found in DSP2833x_InitPeripherals.c -// InitPeripherals(); // Not required for this example - - - EALLOW; - SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0; - EDIS; - - InitEPwm1Example(); - InitEPwm2Example(); - InitEPwm3Example(); - - EALLOW; - SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; - EDIS; - -// Step 5. User specific code, enable interrupts -// Initalize counters: - EPwm1TimerIntCount = 0; - EPwm2TimerIntCount = 0; - EPwm3TimerIntCount = 0; - -// Enable CPU INT3 which is connected to EPWM1-3 INT: - IER |= M_INT3; - -// Enable EPWM INTn in the PIE: Group 3 interrupt 1-3 - PieCtrlRegs.PIEIER3.bit.INTx1 = 1; - PieCtrlRegs.PIEIER3.bit.INTx2 = 1; - PieCtrlRegs.PIEIER3.bit.INTx3 = 1; - -// Enable global Interrupts and higher priority real-time debug events: - EINT; // Enable Global interrupt INTM - ERTM; // Enable Global realtime interrupt DBGM - - - -// Step 6. IDLE loop. Just sit and loop forever (optional): - for(;;) - { - asm(" NOP"); - } - -} - -interrupt void epwm1_isr(void) -{ - if(EPwm1_DB_Direction == DB_UP) - { - if(EPwm1Regs.DBFED < EPWM1_MAX_DB) - { - EPwm1Regs.DBFED++; - EPwm1Regs.DBRED++; - } - else - { - EPwm1_DB_Direction = DB_DOWN; - EPwm1Regs.DBFED--; - EPwm1Regs.DBRED--; - } - } - else - { - if(EPwm1Regs.DBFED == EPWM1_MIN_DB) - { - EPwm1_DB_Direction = DB_UP; - EPwm1Regs.DBFED++; - EPwm1Regs.DBRED++; - } - else - { - EPwm1Regs.DBFED--; - EPwm1Regs.DBRED--; - } - } - EPwm1TimerIntCount++; - - // Clear INT flag for this timer - EPwm1Regs.ETCLR.bit.INT = 1; - - // Acknowledge this interrupt to receive more interrupts from group 3 - PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; - -} - -interrupt void epwm2_isr(void) -{ - - if(EPwm2_DB_Direction == DB_UP) - { - if(EPwm2Regs.DBFED < EPWM2_MAX_DB) - { - EPwm2Regs.DBFED++; - EPwm2Regs.DBRED++; - } - else - { - EPwm2_DB_Direction = DB_DOWN; - EPwm2Regs.DBFED--; - EPwm2Regs.DBRED--; - } - } - else - { - if(EPwm2Regs.DBFED == EPWM2_MIN_DB) - { - EPwm2_DB_Direction = DB_UP; - EPwm2Regs.DBFED++; - EPwm2Regs.DBRED++; - } - else - { - EPwm2Regs.DBFED--; - EPwm2Regs.DBRED--; - } - } - - EPwm2TimerIntCount++; - - // Clear INT flag for this timer - EPwm2Regs.ETCLR.bit.INT = 1; - - // Acknowledge this interrupt to receive more interrupts from group 3 - PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; - -} - -interrupt void epwm3_isr(void) -{ - if(EPwm3_DB_Direction == DB_UP) - { - if(EPwm3Regs.DBFED < EPWM3_MAX_DB) - { - EPwm3Regs.DBFED++; - EPwm3Regs.DBRED++; - } - else - { - EPwm3_DB_Direction = DB_DOWN; - EPwm3Regs.DBFED--; - EPwm3Regs.DBRED--; - } - } - else - { - if(EPwm3Regs.DBFED == EPWM3_MIN_DB) - { - EPwm3_DB_Direction = DB_UP; - EPwm3Regs.DBFED++; - EPwm3Regs.DBRED++; - } - else - { - EPwm3Regs.DBFED--; - EPwm3Regs.DBRED--; - } - } - - - EPwm3TimerIntCount++; - - // Clear INT flag for this timer - EPwm3Regs.ETCLR.bit.INT = 1; - - // Acknowledge this interrupt to receive more interrupts from group 3 - PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; - -} - - - -void InitEPwm1Example() -{ - - EPwm1Regs.TBPRD = 6000; // Set timer period - EPwm1Regs.TBPHS.half.TBPHS = 0x0000; // Phase is 0 - EPwm1Regs.TBCTR = 0x0000; // Clear counter - - // Setup TBCLK - EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count up - EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // Disable phase loading - EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV4; // Clock ratio to SYSCLKOUT - EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV4; - - EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; // Load registers every ZERO - EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; - EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; - EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; - - // Setup compare - EPwm1Regs.CMPA.half.CMPA = 3000; - - // Set actions - EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // Set PWM1A on Zero - EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR; - - - EPwm1Regs.AQCTLB.bit.CAU = AQ_CLEAR; // Set PWM1A on Zero - EPwm1Regs.AQCTLB.bit.CAD = AQ_SET; - - // Active Low PWMs - Setup Deadband - EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE; - EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_LO; - EPwm1Regs.DBCTL.bit.IN_MODE = DBA_ALL; - EPwm1Regs.DBRED = EPWM1_MIN_DB; - EPwm1Regs.DBFED = EPWM1_MIN_DB; - EPwm1_DB_Direction = DB_UP; - - // Interrupt where we will change the Deadband - EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // Select INT on Zero event - EPwm1Regs.ETSEL.bit.INTEN = 1; // Enable INT - EPwm1Regs.ETPS.bit.INTPRD = ET_3RD; // Generate INT on 3rd event - - -} - - -void InitEPwm2Example() -{ - - EPwm2Regs.TBPRD = 6000; // Set timer period - EPwm2Regs.TBPHS.half.TBPHS = 0x0000; // Phase is 0 - EPwm2Regs.TBCTR = 0x0000; // Clear counter - - // Setup TBCLK - EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count up - EPwm2Regs.TBCTL.bit.PHSEN = TB_DISABLE; // Disable phase loading - EPwm2Regs.TBCTL.bit.HSPCLKDIV = TB_DIV4; // Clock ratio to SYSCLKOUT - EPwm2Regs.TBCTL.bit.CLKDIV = TB_DIV4; // Slow just to observe on the scope - - // Setup compare - EPwm2Regs.CMPA.half.CMPA = 3000; - - // Set actions - EPwm2Regs.AQCTLA.bit.CAU = AQ_SET; // Set PWM2A on Zero - EPwm2Regs.AQCTLA.bit.CAD = AQ_CLEAR; - - - EPwm2Regs.AQCTLB.bit.CAU = AQ_CLEAR; // Set PWM2A on Zero - EPwm2Regs.AQCTLB.bit.CAD = AQ_SET; - - // Active Low complementary PWMs - setup the deadband - EPwm2Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE; - EPwm2Regs.DBCTL.bit.POLSEL = DB_ACTV_LOC; - EPwm2Regs.DBCTL.bit.IN_MODE = DBA_ALL; - EPwm2Regs.DBRED = EPWM2_MIN_DB; - EPwm2Regs.DBFED = EPWM2_MIN_DB; - EPwm2_DB_Direction = DB_UP; - - // Interrupt where we will modify the deadband - EPwm2Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // Select INT on Zero event - EPwm2Regs.ETSEL.bit.INTEN = 1; // Enable INT - EPwm2Regs.ETPS.bit.INTPRD = ET_3RD; // Generate INT on 3rd event - -} - -void InitEPwm3Example() -{ - - EPwm3Regs.TBPRD = 6000; // Set timer period - EPwm3Regs.TBPHS.half.TBPHS = 0x0000; // Phase is 0 - EPwm3Regs.TBCTR = 0x0000; // Clear counter - - - // Setup TBCLK - EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count up - EPwm3Regs.TBCTL.bit.PHSEN = TB_DISABLE; // Disable phase loading - EPwm3Regs.TBCTL.bit.HSPCLKDIV = TB_DIV4; // Clock ratio to SYSCLKOUT - EPwm3Regs.TBCTL.bit.CLKDIV = TB_DIV4; // Slow so we can observe on the scope - - // Setup compare - EPwm3Regs.CMPA.half.CMPA = 3000; - - // Set actions - EPwm3Regs.AQCTLA.bit.CAU = AQ_SET; // Set PWM3A on Zero - EPwm3Regs.AQCTLA.bit.CAD = AQ_CLEAR; - - - EPwm3Regs.AQCTLB.bit.CAU = AQ_CLEAR; // Set PWM3A on Zero - EPwm3Regs.AQCTLB.bit.CAD = AQ_SET; - - // Active high complementary PWMs - Setup the deadband - EPwm3Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE; - EPwm3Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC; - EPwm3Regs.DBCTL.bit.IN_MODE = DBA_ALL; - EPwm3Regs.DBRED = EPWM3_MIN_DB; - EPwm3Regs.DBFED = EPWM3_MIN_DB; - EPwm3_DB_Direction = DB_UP; - - // Interrupt where we will change the deadband - EPwm3Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // Select INT on Zero event - EPwm3Regs.ETSEL.bit.INTEN = 1; // Enable INT - EPwm3Regs.ETPS.bit.INTPRD = ET_3RD; // Generate INT on 3rd event - -} - -//=========================================================================== -// No more. -//=========================================================================== diff --git a/Source/External/v120/DSP2833x_examples/epwm_deadband/Example_2833xEPwmDeadBand.pjt b/Source/External/v120/DSP2833x_examples/epwm_deadband/Example_2833xEPwmDeadBand.pjt deleted file mode 100644 index 08ffef5..0000000 --- a/Source/External/v120/DSP2833x_examples/epwm_deadband/Example_2833xEPwmDeadBand.pjt +++ /dev/null @@ -1,46 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\epwm_deadband\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CpuTimers.c" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_EPwm.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xEPwmDeadBand.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\epwm_deadband\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\epwm_deadband\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" --float_support=fpu32 -ml -mt -v28 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\epwm_deadband\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -ecode_start -m".\Debug\Example_2833xEPwmDeadBand.map" -o".\Debug\Example_2833xEPwmDeadBand.out" -stack0x380 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -m".\Release\Example_2833xEPwmDeadBand.map" -o".\Release\Example_2833xEPwmDeadBand.out" -x - diff --git a/Source/External/v120/DSP2833x_examples/epwm_deadband/Example_2833xEPwmDeadband.gel b/Source/External/v120/DSP2833x_examples/epwm_deadband/Example_2833xEPwmDeadband.gel deleted file mode 100644 index 4466bd1..0000000 --- a/Source/External/v120/DSP2833x_examples/epwm_deadband/Example_2833xEPwmDeadband.gel +++ /dev/null @@ -1,39 +0,0 @@ -/* -// TI File $Revision: /main/5 $ -// Checkin $Date: August 9, 2007 17:13:25 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// project. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -menuitem "DSP2833x ePWM Deadband" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xEPwmDeadBand.pjt"); - GEL_ProjectBuild("Example_2833xEPwmDeadBand.pjt"); - Setup_WatchWindow(); -} - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xEPwmDeadBand.out"); - Setup_WatchWindow(); -} - -hotmenu Setup_WatchWindow() -{ - GEL_WatchReset(); - GEL_WatchAdd("EPwm1Regs,x"); -} - - - - diff --git a/Source/External/v120/DSP2833x_examples/epwm_dma/DSP2833x_EPWMDM_Headers_BIOS.cmd b/Source/External/v120/DSP2833x_examples/epwm_dma/DSP2833x_EPWMDM_Headers_BIOS.cmd deleted file mode 100644 index 2a2abf8..0000000 --- a/Source/External/v120/DSP2833x_examples/epwm_dma/DSP2833x_EPWMDM_Headers_BIOS.cmd +++ /dev/null @@ -1,183 +0,0 @@ -/* -// TI File $Revision: /main/1 $ -// Checkin $Date: June 19, 2008 10:23:49 $ -//########################################################################### -// -// FILE: DSP2833x_Headers_BIOS.cmd -// -// TITLE: DSP2833x Peripheral registers linker command file -// -// DESCRIPTION: -// -// This file is for use in BIOS applications. -// -// Linker command file to place the peripheral structures -// used within the DSP2833x headerfiles into the correct memory -// mapped locations. -// -// This version of the file does not include the PieVectorTable structure. -// For non-BIOS applications, please use the DSP2833x_Headers_nonBIOS.cmd -// file which includes the PieVectorTable structure. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -MEMORY -{ - PAGE 0: /* Program Memory */ - - PAGE 1: /* Data Memory */ - - DEV_EMU : origin = 0x000880, length = 0x000180 /* device emulation registers */ - FLASH_REGS : origin = 0x000A80, length = 0x000060 /* FLASH registers */ - CSM : origin = 0x000AE0, length = 0x000010 /* code security module registers */ - - ADC_MIRROR : origin = 0x000B00, length = 0x000010 /* ADC Results register mirror */ - - XINTF : origin = 0x000B20, length = 0x000020 /* external interface registers */ - - CPU_TIMER0 : origin = 0x000C00, length = 0x000008 /* CPU Timer0 registers */ - CPU_TIMER1 : origin = 0x000C08, length = 0x000008 /* CPU Timer0 registers (CPU Timer1 & Timer2 reserved TI use)*/ - CPU_TIMER2 : origin = 0x000C10, length = 0x000008 /* CPU Timer0 registers (CPU Timer1 & Timer2 reserved TI use)*/ - - PIE_CTRL : origin = 0x000CE0, length = 0x000020 /* PIE control registers */ - - DMA : origin = 0x001000, length = 0x000200 /* DMA registers */ - - MCBSPA : origin = 0x005000, length = 0x000040 /* McBSP-A registers */ - MCBSPB : origin = 0x005040, length = 0x000040 /* McBSP-B registers */ - - ECANA : origin = 0x006000, length = 0x000040 /* eCAN-A control and status registers */ - ECANA_LAM : origin = 0x006040, length = 0x000040 /* eCAN-A local acceptance masks */ - ECANA_MOTS : origin = 0x006080, length = 0x000040 /* eCAN-A message object time stamps */ - ECANA_MOTO : origin = 0x0060C0, length = 0x000040 /* eCAN-A object time-out registers */ - ECANA_MBOX : origin = 0x006100, length = 0x000100 /* eCAN-A mailboxes */ - - ECANB : origin = 0x006200, length = 0x000040 /* eCAN-B control and status registers */ - ECANB_LAM : origin = 0x006240, length = 0x000040 /* eCAN-B local acceptance masks */ - ECANB_MOTS : origin = 0x006280, length = 0x000040 /* eCAN-B message object time stamps */ - ECANB_MOTO : origin = 0x0062C0, length = 0x000040 /* eCAN-B object time-out registers */ - ECANB_MBOX : origin = 0x006300, length = 0x000100 /* eCAN-B mailboxes */ - - EPWM1 : origin = 0x005800, length = 0x000022 /* Enhanced PWM 1 registers */ - EPWM2 : origin = 0x005840, length = 0x000022 /* Enhanced PWM 2 registers */ - EPWM3 : origin = 0x005880, length = 0x000022 /* Enhanced PWM 3 registers */ - EPWM4 : origin = 0x0058C0, length = 0x000022 /* Enhanced PWM 4 registers */ - EPWM5 : origin = 0x005900, length = 0x000022 /* Enhanced PWM 5 registers */ - EPWM6 : origin = 0x005940, length = 0x000022 /* Enhanced PWM 6 registers */ - - ECAP1 : origin = 0x006A00, length = 0x000020 /* Enhanced Capture 1 registers */ - ECAP2 : origin = 0x006A20, length = 0x000020 /* Enhanced Capture 2 registers */ - ECAP3 : origin = 0x006A40, length = 0x000020 /* Enhanced Capture 3 registers */ - ECAP4 : origin = 0x006A60, length = 0x000020 /* Enhanced Capture 4 registers */ - ECAP5 : origin = 0x006A80, length = 0x000020 /* Enhanced Capture 5 registers */ - ECAP6 : origin = 0x006AA0, length = 0x000020 /* Enhanced Capture 6 registers */ - - EQEP1 : origin = 0x006B00, length = 0x000040 /* Enhanced QEP 1 registers */ - EQEP2 : origin = 0x006B40, length = 0x000040 /* Enhanced QEP 2 registers */ - - GPIOCTRL : origin = 0x006F80, length = 0x000040 /* GPIO control registers */ - GPIODAT : origin = 0x006FC0, length = 0x000020 /* GPIO data registers */ - GPIOINT : origin = 0x006FE0, length = 0x000020 /* GPIO interrupt/LPM registers */ - - SYSTEM : origin = 0x007010, length = 0x000020 /* System control registers */ - SPIA : origin = 0x007040, length = 0x000010 /* SPI-A registers */ - SCIA : origin = 0x007050, length = 0x000010 /* SCI-A registers */ - XINTRUPT : origin = 0x007070, length = 0x000010 /* external interrupt registers */ - - ADC : origin = 0x007100, length = 0x000020 /* ADC registers */ - - SCIB : origin = 0x007750, length = 0x000010 /* SCI-B registers */ - - SCIC : origin = 0x007770, length = 0x000010 /* SCI-C registers */ - - I2CA : origin = 0x007900, length = 0x000040 /* I2C-A registers */ - - CSM_PWL : origin = 0x3F7FF8, length = 0x000008 /* Part of FLASHA. CSM password locations. */ - - PARTID : origin = 0x380090, length = 0x000001 /* Part ID register location */ - -} - - -SECTIONS -{ -/*** The PIE Vector table is called PIEVECT by DSP/BIOS ***/ - PieVectTableFile : > PIEVECT, PAGE = 1, TYPE = DSECT - -/*** Peripheral Frame 0 Register Structures ***/ - DevEmuRegsFile : > DEV_EMU, PAGE = 1 - FlashRegsFile : > FLASH_REGS, PAGE = 1 - CsmRegsFile : > CSM, PAGE = 1 - AdcMirrorFile : > ADC_MIRROR, PAGE = 1 - XintfRegsFile : > XINTF, PAGE = 1 - CpuTimer0RegsFile : > CPU_TIMER0, PAGE = 1 - CpuTimer1RegsFile : > CPU_TIMER1, PAGE = 1 - CpuTimer2RegsFile : > CPU_TIMER2, PAGE = 1 - PieCtrlRegsFile : > PIE_CTRL, PAGE = 1 - DmaRegsFile : > DMA, PAGE = 1 - -/*** Peripheral Frame 3 Register Structures ***/ - McbspaRegsFile : > MCBSPA, PAGE = 1 - McbspbRegsFile : > MCBSPB, PAGE = 1 - -/*** Peripheral Frame 1 Register Structures ***/ - ECanaRegsFile : > ECANA, PAGE = 1 - ECanaLAMRegsFile : > ECANA_LAM PAGE = 1 - ECanaMboxesFile : > ECANA_MBOX PAGE = 1 - ECanaMOTSRegsFile : > ECANA_MOTS PAGE = 1 - ECanaMOTORegsFile : > ECANA_MOTO PAGE = 1 - - ECanbRegsFile : > ECANB, PAGE = 1 - ECanbLAMRegsFile : > ECANB_LAM PAGE = 1 - ECanbMboxesFile : > ECANB_MBOX PAGE = 1 - ECanbMOTSRegsFile : > ECANB_MOTS PAGE = 1 - ECanbMOTORegsFile : > ECANB_MOTO PAGE = 1 - - EPwm1RegsFile : > EPWM1 PAGE = 1 - EPwm2RegsFile : > EPWM2 PAGE = 1 - EPwm3RegsFile : > EPWM3 PAGE = 1 - EPwm4RegsFile : > EPWM4 PAGE = 1 - EPwm5RegsFile : > EPWM5 PAGE = 1 - EPwm6RegsFile : > EPWM6 PAGE = 1 - - ECap1RegsFile : > ECAP1 PAGE = 1 - ECap2RegsFile : > ECAP2 PAGE = 1 - ECap3RegsFile : > ECAP3 PAGE = 1 - ECap4RegsFile : > ECAP4 PAGE = 1 - ECap5RegsFile : > ECAP5 PAGE = 1 - ECap6RegsFile : > ECAP6 PAGE = 1 - - EQep1RegsFile : > EQEP1 PAGE = 1 - EQep2RegsFile : > EQEP2 PAGE = 1 - - GpioCtrlRegsFile : > GPIOCTRL PAGE = 1 - GpioDataRegsFile : > GPIODAT PAGE = 1 - GpioIntRegsFile : > GPIOINT PAGE = 1 - -/*** Peripheral Frame 2 Register Structures ***/ - SysCtrlRegsFile : > SYSTEM, PAGE = 1 - SpiaRegsFile : > SPIA, PAGE = 1 - SciaRegsFile : > SCIA, PAGE = 1 - XIntruptRegsFile : > XINTRUPT, PAGE = 1 - AdcRegsFile : > ADC, PAGE = 1 - ScibRegsFile : > SCIB, PAGE = 1 - ScicRegsFile : > SCIC, PAGE = 1 - I2caRegsFile : > I2CA, PAGE = 1 - -/*** Code Security Module Register Structures ***/ - CsmPwlFile : > CSM_PWL, PAGE = 1 - -/*** Device Part ID Register Structures ***/ - PartIdRegsFile : > PARTID, PAGE = 1 -} - - -/* -//=========================================================================== -// End of file. -//=========================================================================== -*/ diff --git a/Source/External/v120/DSP2833x_examples/epwm_dma/DSP2833x_EPWMDM_Headers_nonBIOS.cmd b/Source/External/v120/DSP2833x_examples/epwm_dma/DSP2833x_EPWMDM_Headers_nonBIOS.cmd deleted file mode 100644 index c107ade..0000000 --- a/Source/External/v120/DSP2833x_examples/epwm_dma/DSP2833x_EPWMDM_Headers_nonBIOS.cmd +++ /dev/null @@ -1,182 +0,0 @@ -/* -// TI File $Revision: /main/1 $ -// Checkin $Date: June 19, 2008 10:23:45 $ -//########################################################################### -// -// FILE: DSP2833x_Headers_nonBIOS.cmd -// -// TITLE: DSP2833x Peripheral registers linker command file -// -// DESCRIPTION: -// -// This file is for use in Non-BIOS applications. -// -// Linker command file to place the peripheral structures -// used within the DSP2833x headerfiles into the correct memory -// mapped locations. -// -// This version of the file includes the PieVectorTable structure. -// For BIOS applications, please use the DSP2833x_Headers_BIOS.cmd file -// which does not include the PieVectorTable structure. -// -//########################################################################### -*/ - -MEMORY -{ - PAGE 0: /* Program Memory */ - - PAGE 1: /* Data Memory */ - - DEV_EMU : origin = 0x000880, length = 0x000180 /* device emulation registers */ - FLASH_REGS : origin = 0x000A80, length = 0x000060 /* FLASH registers */ - CSM : origin = 0x000AE0, length = 0x000010 /* code security module registers */ - - ADC_MIRROR : origin = 0x000B00, length = 0x000010 /* ADC Results register mirror */ - - XINTF : origin = 0x000B20, length = 0x000020 /* external interface registers */ - - CPU_TIMER0 : origin = 0x000C00, length = 0x000008 /* CPU Timer0 registers */ - CPU_TIMER1 : origin = 0x000C08, length = 0x000008 /* CPU Timer0 registers (CPU Timer1 & Timer2 reserved TI use)*/ - CPU_TIMER2 : origin = 0x000C10, length = 0x000008 /* CPU Timer0 registers (CPU Timer1 & Timer2 reserved TI use)*/ - - PIE_CTRL : origin = 0x000CE0, length = 0x000020 /* PIE control registers */ - PIE_VECT : origin = 0x000D00, length = 0x000100 /* PIE Vector Table */ - - DMA : origin = 0x001000, length = 0x000200 /* DMA registers */ - - MCBSPA : origin = 0x005000, length = 0x000040 /* McBSP-A registers */ - MCBSPB : origin = 0x005040, length = 0x000040 /* McBSP-B registers */ - - ECANA : origin = 0x006000, length = 0x000040 /* eCAN-A control and status registers */ - ECANA_LAM : origin = 0x006040, length = 0x000040 /* eCAN-A local acceptance masks */ - ECANA_MOTS : origin = 0x006080, length = 0x000040 /* eCAN-A message object time stamps */ - ECANA_MOTO : origin = 0x0060C0, length = 0x000040 /* eCAN-A object time-out registers */ - ECANA_MBOX : origin = 0x006100, length = 0x000100 /* eCAN-A mailboxes */ - - ECANB : origin = 0x006200, length = 0x000040 /* eCAN-B control and status registers */ - ECANB_LAM : origin = 0x006240, length = 0x000040 /* eCAN-B local acceptance masks */ - ECANB_MOTS : origin = 0x006280, length = 0x000040 /* eCAN-B message object time stamps */ - ECANB_MOTO : origin = 0x0062C0, length = 0x000040 /* eCAN-B object time-out registers */ - ECANB_MBOX : origin = 0x006300, length = 0x000100 /* eCAN-B mailboxes */ - - EPWM1 : origin = 0x005800, length = 0x000022 /* Enhanced PWM 1 registers */ - EPWM2 : origin = 0x005840, length = 0x000022 /* Enhanced PWM 2 registers */ - EPWM3 : origin = 0x005880, length = 0x000022 /* Enhanced PWM 3 registers */ - EPWM4 : origin = 0x0058C0, length = 0x000022 /* Enhanced PWM 4 registers */ - EPWM5 : origin = 0x005900, length = 0x000022 /* Enhanced PWM 5 registers */ - EPWM6 : origin = 0x005940, length = 0x000022 /* Enhanced PWM 6 registers */ - - ECAP1 : origin = 0x006A00, length = 0x000020 /* Enhanced Capture 1 registers */ - ECAP2 : origin = 0x006A20, length = 0x000020 /* Enhanced Capture 2 registers */ - ECAP3 : origin = 0x006A40, length = 0x000020 /* Enhanced Capture 3 registers */ - ECAP4 : origin = 0x006A60, length = 0x000020 /* Enhanced Capture 4 registers */ - ECAP5 : origin = 0x006A80, length = 0x000020 /* Enhanced Capture 5 registers */ - ECAP6 : origin = 0x006AA0, length = 0x000020 /* Enhanced Capture 6 registers */ - - EQEP1 : origin = 0x006B00, length = 0x000040 /* Enhanced QEP 1 registers */ - EQEP2 : origin = 0x006B40, length = 0x000040 /* Enhanced QEP 2 registers */ - - GPIOCTRL : origin = 0x006F80, length = 0x000040 /* GPIO control registers */ - GPIODAT : origin = 0x006FC0, length = 0x000020 /* GPIO data registers */ - GPIOINT : origin = 0x006FE0, length = 0x000020 /* GPIO interrupt/LPM registers */ - - SYSTEM : origin = 0x007010, length = 0x000020 /* System control registers */ - SPIA : origin = 0x007040, length = 0x000010 /* SPI-A registers */ - SCIA : origin = 0x007050, length = 0x000010 /* SCI-A registers */ - XINTRUPT : origin = 0x007070, length = 0x000010 /* external interrupt registers */ - - ADC : origin = 0x007100, length = 0x000020 /* ADC registers */ - - SCIB : origin = 0x007750, length = 0x000010 /* SCI-B registers */ - - SCIC : origin = 0x007770, length = 0x000010 /* SCI-C registers */ - - I2CA : origin = 0x007900, length = 0x000040 /* I2C-A registers */ - - CSM_PWL : origin = 0x33FFF8, length = 0x000008 /* Part of FLASHA. CSM password locations. */ - - PARTID : origin = 0x380090, length = 0x000001 /* Part ID register location */ - -} - - -SECTIONS -{ - PieVectTableFile : > PIE_VECT, PAGE = 1 - -/*** Peripheral Frame 0 Register Structures ***/ - DevEmuRegsFile : > DEV_EMU, PAGE = 1 - FlashRegsFile : > FLASH_REGS, PAGE = 1 - CsmRegsFile : > CSM, PAGE = 1 - AdcMirrorFile : > ADC_MIRROR, PAGE = 1 - XintfRegsFile : > XINTF, PAGE = 1 - CpuTimer0RegsFile : > CPU_TIMER0, PAGE = 1 - CpuTimer1RegsFile : > CPU_TIMER1, PAGE = 1 - CpuTimer2RegsFile : > CPU_TIMER2, PAGE = 1 - PieCtrlRegsFile : > PIE_CTRL, PAGE = 1 - DmaRegsFile : > DMA, PAGE = 1 - -/*** Peripheral Frame 3 Register Structures ***/ - McbspaRegsFile : > MCBSPA, PAGE = 1 - McbspbRegsFile : > MCBSPB, PAGE = 1 - -/*** Peripheral Frame 1 Register Structures ***/ - ECanaRegsFile : > ECANA, PAGE = 1 - ECanaLAMRegsFile : > ECANA_LAM PAGE = 1 - ECanaMboxesFile : > ECANA_MBOX PAGE = 1 - ECanaMOTSRegsFile : > ECANA_MOTS PAGE = 1 - ECanaMOTORegsFile : > ECANA_MOTO PAGE = 1 - - ECanbRegsFile : > ECANB, PAGE = 1 - ECanbLAMRegsFile : > ECANB_LAM PAGE = 1 - ECanbMboxesFile : > ECANB_MBOX PAGE = 1 - ECanbMOTSRegsFile : > ECANB_MOTS PAGE = 1 - ECanbMOTORegsFile : > ECANB_MOTO PAGE = 1 - - EPwm1RegsFile : > EPWM1 PAGE = 1 - EPwm2RegsFile : > EPWM2 PAGE = 1 - EPwm3RegsFile : > EPWM3 PAGE = 1 - EPwm4RegsFile : > EPWM4 PAGE = 1 - EPwm5RegsFile : > EPWM5 PAGE = 1 - EPwm6RegsFile : > EPWM6 PAGE = 1 - - ECap1RegsFile : > ECAP1 PAGE = 1 - ECap2RegsFile : > ECAP2 PAGE = 1 - ECap3RegsFile : > ECAP3 PAGE = 1 - ECap4RegsFile : > ECAP4 PAGE = 1 - ECap5RegsFile : > ECAP5 PAGE = 1 - ECap6RegsFile : > ECAP6 PAGE = 1 - - EQep1RegsFile : > EQEP1 PAGE = 1 - EQep2RegsFile : > EQEP2 PAGE = 1 - - GpioCtrlRegsFile : > GPIOCTRL PAGE = 1 - GpioDataRegsFile : > GPIODAT PAGE = 1 - GpioIntRegsFile : > GPIOINT PAGE = 1 - -/*** Peripheral Frame 2 Register Structures ***/ - SysCtrlRegsFile : > SYSTEM, PAGE = 1 - SpiaRegsFile : > SPIA, PAGE = 1 - SciaRegsFile : > SCIA, PAGE = 1 - XIntruptRegsFile : > XINTRUPT, PAGE = 1 - AdcRegsFile : > ADC, PAGE = 1 - ScibRegsFile : > SCIB, PAGE = 1 - ScicRegsFile : > SCIC, PAGE = 1 - I2caRegsFile : > I2CA, PAGE = 1 - -/*** Code Security Module Register Structures ***/ - CsmPwlFile : > CSM_PWL, PAGE = 1 - -/*** Device Part ID Register Structures ***/ - PartIdRegsFile : > PARTID, PAGE = 1 -} - - - - -/* -//=========================================================================== -// End of file. -//=========================================================================== -*/ diff --git a/Source/External/v120/DSP2833x_examples/epwm_dma/Example_2833xEPwm_DMA.c b/Source/External/v120/DSP2833x_examples/epwm_dma/Example_2833xEPwm_DMA.c deleted file mode 100644 index 9645539..0000000 --- a/Source/External/v120/DSP2833x_examples/epwm_dma/Example_2833xEPwm_DMA.c +++ /dev/null @@ -1,455 +0,0 @@ -//########################################################################### -// -// FILE: Example_2833xEPwm_DMA.c -// -// TITLE: DSP2833x Device DMA interface with ePWM example. -// -// ASSUMPTIONS: -// -// This program requires the DSP2833x header files. -// -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// DESCRIPTION: -// -// This example demonstrates several cases where the DMA is triggered from -// SOC signals generated by ePWM modules. -// -// DMA CH1 setup: -// Trigger = ADCSOCA from ePWM1 -// Datasize = 16 bits -// Source = VarA -// Dest = EPwm1Regs.TBPRD -// Burst = One word / burst -// Transfer = One burst / transfer -// CPU int = every transfer -// -// DMA CH2 setup: -// Trigger = ADCSOCB from ePWM2 -// Datasize = 32 bits -// Source = VarB -// Dest = EPwm1Regs.CMPA.all -// Burst = One 32-bit word / burst -// Transfer = One burst / transfer -// CPU int = none -// -// DMA CH3 setup: -// Trigger = ADC SEQ1INT -// Datasize = 32 bits -// Source = AdcMirror.ADCRESULT[0-5] -// Dest = ADCbuffer -// Burst = Three 32-bit words / burst -// Transfer = One burst / transfer -// CPU int = none -// -// Watch Variables: -// -// EPwm1Regs.TBPRD -// EPwm1Regs.CMPA.all -// ADCbuffer -// InterruptCount -// -//########################################################################### - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File - - -// Prototype statements for functions found within this file. -void delay_loop(void); -void DMAInitialize(void); -void DMACH1Config(void); -void DMACH2Config(void); -void DMACH3Config(void); -void ConfigAdc(void); -void config_ePWM1_to_generate_ADCSOCA(void); -void config_ePWM2_to_generate_ADCSOCB(void); -interrupt void local_DINTCH1_ISR(void); - - -// Global Variables -#pragma DATA_SECTION(ADCbuffer,"DMARAML4"); -volatile Uint32 ADCbuffer[3]; - -Uint16 VarA; -Uint32 VarB; - -volatile Uint16 *MAPCNF = (Uint16 *)0x00702E; - -Uint16 InterruptCount; - -void main(void) -{ - Uint16 i; - -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - -// Step 2. Initalize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); // Skipped for this example - -// For this example use the following configuration: - -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - - EALLOW; - // Initialize PIE vector for CPU interrupt: - PieVectTable.DINTCH1 = &local_DINTCH1_ISR; // Point to DMA CH1 ISR - PieCtrlRegs.PIEIER7.bit.INTx1 = 1; // Enable DMA CH1 interrupt in PIE - EDIS; - -// Step 4. Initialize all the Device Peripherals: -// This function is found in DSP2833x_InitPeripherals.c -// InitPeripherals(); // Not required for this example - -// Step 5. User specific code: - - InterruptCount = 0; - - EALLOW; - GpioCtrlRegs.GPADIR.all = 0xFFFFFFFF; // All outputs - SysCtrlRegs.MAPCNF.bit.MAPEPWM = 1; // Remap ePWMs for DMA access - EDIS; - - GpioDataRegs.GPASET.all = 0xFFFFFFFF; - delay_loop(); - GpioDataRegs.GPACLEAR.all = 0x00000002; - - for(i=0; i<3; i++) - { - ADCbuffer[i] = ((Uint32)i*0x00011000) + 0x00044000; - } - - VarA = 75; - VarB = 0x652000; - - // Enable and configure clocks to peripherals: - EALLOW; - SysCtrlRegs.PCLKCR3.bit.DMAENCLK = 1; // Enable SYSCLK to DMA - EDIS; - - DMAInitialize(); - DMACH1Config(); - DMACH2Config(); - DMACH3Config(); - - // Enable all interrupts: - IER = M_INT7; // Enable INT7 (7.1 DMA Ch1) - EINT; - - InitAdc(); - ConfigAdc(); - - config_ePWM1_to_generate_ADCSOCA(); - config_ePWM2_to_generate_ADCSOCB(); - - - EALLOW; - DmaRegs.CH1.CONTROL.bit.RUN = 1; - DmaRegs.CH2.CONTROL.bit.RUN = 1; - DmaRegs.CH3.CONTROL.bit.RUN = 1; - asm(" NOP"); - EPwm1Regs.TBCTL.bit.CTRMODE = 0; // Up count mode - EPwm2Regs.TBCTL.bit.CTRMODE = 0; // Up count mode - EDIS; - - for(;;) {} - -} - - -//=========================================================================== -// DMA Functions -//=========================================================================== - -void DMAInitialize(void) -{ - EALLOW; - - // Perform a hard reset on DMA - DmaRegs.DMACTRL.bit.HARDRESET = 1; - - // always perform one NOP after a HARDRESET - asm(" NOP"); - - // Stop DMA on emulation suspend - DmaRegs.DEBUGCTRL.bit.FREE = 0; - - EDIS; -} - - -void DMACH1Config(void) -{ - EALLOW; - // Configure CH1: - // - // Reset selected channel via CONTROL Register: -// DmaRegs.CH1.CONTROL.bit.SOFTRESET = 1; // Perform SOFT reset on channel (clears all counters) - - // Set up MODE Register: - DmaRegs.CH1.MODE.bit.PERINTSEL = 18; // ePWM1 SOCA as peripheral interrupt source - DmaRegs.CH1.MODE.bit.PERINTE = 1; // Peripheral interrupt enabled - DmaRegs.CH1.MODE.bit.ONESHOT = 0; // 1 burst per SW interrupt - DmaRegs.CH1.MODE.bit.CONTINUOUS = 1; // Do not stop after each transfer - DmaRegs.CH1.MODE.bit.SYNCE = 0; // No sync signal - DmaRegs.CH1.MODE.bit.SYNCSEL = 0; // No sync signal - DmaRegs.CH1.MODE.bit.DATASIZE = 0; // 16-bit data size transfers - DmaRegs.CH1.MODE.bit.CHINTMODE = 0; // Generate interrupt to CPU at the beg of transfer - DmaRegs.CH1.MODE.bit.CHINTE = 1; // Channel Interrupt to CPU enabled - - // Set up BURST registers: - DmaRegs.CH1.BURST_SIZE.all = 0; // Number (N-1) of 16-bit words transferred in a burst - DmaRegs.CH1.SRC_BURST_STEP = 0; // Not needed since BURST_SIZE = 0 - DmaRegs.CH1.DST_BURST_STEP = 0; // Not needed since BURST_SIZE = 0 - - // Set up TRANSFER registers: - DmaRegs.CH1.TRANSFER_SIZE = 0; // Bursts (N-1) per transfer - DmaRegs.CH1.SRC_TRANSFER_STEP = 0; // Not needed since TRANSFER_SIZE = 0 - DmaRegs.CH1.DST_TRANSFER_STEP = 0; // Not needed since TRANSFER_SIZE = 0 - - // Set up WRAP registers: - DmaRegs.CH1.SRC_WRAP_SIZE = 0xFFFF; // No source wrap-around - DmaRegs.CH1.DST_WRAP_SIZE = 0xFFFF; // No destination wrap-around - DmaRegs.CH1.SRC_WRAP_STEP = 0; - DmaRegs.CH1.DST_WRAP_STEP = 0; - - // Set up SOURCE address: - DmaRegs.CH1.SRC_ADDR_SHADOW = (Uint32) &VarA; // Point to variable in RAM - - // Set up DESTINATION address: - DmaRegs.CH1.DST_ADDR_SHADOW = (Uint32) &EPwm1Regs.TBPRD; // Point to ePWM1 TBPRD register remapped for DMA - // need to make sure .cmd file has ePWMs remapped - // Clear any spurious flags: - DmaRegs.CH1.CONTROL.bit.PERINTCLR = 1; // Clear any spurious interrupt flags - DmaRegs.CH1.CONTROL.bit.SYNCCLR = 1; // Clear any spurious sync flags - DmaRegs.CH1.CONTROL.bit.ERRCLR = 1; // Clear any spurious sync error flags - - EDIS; -} - -void DMACH2Config(void) -{ - EALLOW; - // Configure CH2: - // - // Reset selected channel via CONTROL Register: -// DmaRegs.CH2.CONTROL.bit.SOFTRESET = 1; // Perform SOFT reset on channel (clears all counters) - - // Set up MODE Register: - DmaRegs.CH2.MODE.bit.PERINTSEL = 21; // ePWM2 SOCB as peripheral interrupt source - DmaRegs.CH2.MODE.bit.PERINTE = 1; // Peripheral interrupt enabled - DmaRegs.CH2.MODE.bit.ONESHOT = 0; // 1 burst per SW interrupt - DmaRegs.CH2.MODE.bit.CONTINUOUS = 1; // Do not stop after each transfer - DmaRegs.CH2.MODE.bit.SYNCE = 0; // No sync signal - DmaRegs.CH2.MODE.bit.SYNCSEL = 0; // No sync signal - DmaRegs.CH2.MODE.bit.DATASIZE = 1; // 32-bit data size transfers - DmaRegs.CH2.MODE.bit.CHINTMODE = 0; - DmaRegs.CH2.MODE.bit.CHINTE = 0; // Channel Interrupt to CPU disabled - - // Set up BURST registers: - DmaRegs.CH2.BURST_SIZE.all = 1; // Number (N-1) of 16-bit words transferred in a burst - DmaRegs.CH2.SRC_BURST_STEP = 0x0000; // Not needed since only 1 32-bit move per burst - DmaRegs.CH2.DST_BURST_STEP = 0x0000; // Not needed since only 1 32-bit move per burst - - // Set up TRANSFER registers: - DmaRegs.CH2.TRANSFER_SIZE = 0; // Bursts (N-1) per transfer - DmaRegs.CH2.SRC_TRANSFER_STEP = 0; // Not needed since TRANSFER_SIZE = 0 - DmaRegs.CH2.DST_TRANSFER_STEP = 0; // Not needed since TRANSFER_SIZE = 0 - - // Set up WRAP registers: - DmaRegs.CH2.SRC_WRAP_SIZE = 0xFFFF; // No source wrap-around - DmaRegs.CH2.DST_WRAP_SIZE = 0xFFFF; // No destination wrap-around - DmaRegs.CH2.SRC_WRAP_STEP = 0; - DmaRegs.CH2.DST_WRAP_STEP = 0; - - // Set up SOURCE address: - DmaRegs.CH2.SRC_ADDR_SHADOW = (Uint32) &VarB; // Point to variable in RAM - - // Set up DESTINATION address: - DmaRegs.CH2.DST_ADDR_SHADOW = (Uint32) &EPwm1Regs.CMPA.all; // Point to ePWM1 CMPAHR/CMPA registers - - // Clear any spurious flags: - DmaRegs.CH2.CONTROL.bit.PERINTCLR = 1; // Clear any spurious interrupt flags - DmaRegs.CH2.CONTROL.bit.SYNCCLR = 1; // Clear any spurious sync flags - DmaRegs.CH2.CONTROL.bit.ERRCLR = 1; // Clear any spurious sync error flags - - EDIS; -} - -void DMACH3Config(void) -{ - EALLOW; - // Configure CH3: - // - - // Set up MODE Register: - DmaRegs.CH3.MODE.bit.PERINTSEL = 1; // ADC SEQ1INT as peripheral interrupt source - DmaRegs.CH3.MODE.bit.PERINTE = 1; // Peripheral interrupt enabled - DmaRegs.CH3.MODE.bit.ONESHOT = 0; // 1 burst per SW interrupt - DmaRegs.CH3.MODE.bit.CONTINUOUS = 1; // Do not stop after each transfer - DmaRegs.CH3.MODE.bit.SYNCE = 0; // No sync signal - DmaRegs.CH3.MODE.bit.SYNCSEL = 0; // No sync signal - DmaRegs.CH3.MODE.bit.DATASIZE = 1; // 32-bit data size transfers - DmaRegs.CH3.MODE.bit.CHINTMODE = 0; - DmaRegs.CH3.MODE.bit.CHINTE = 0; // Channel Interrupt to CPU disabled - - // Set up BURST registers: - DmaRegs.CH3.BURST_SIZE.all = 5; // Number (N-1) of 16-bit words transferred in a burst - DmaRegs.CH3.SRC_BURST_STEP = 2; // Increment source burst address by 2 (32-bit) - DmaRegs.CH3.DST_BURST_STEP = 2; // Increment destination burst address by 2 (32-bit) - - // Set up TRANSFER registers: - DmaRegs.CH3.TRANSFER_SIZE = 0; // Bursts (N-1) per transfer - DmaRegs.CH3.SRC_TRANSFER_STEP = 0; // Not needed since TRANSFER_SIZE = 0 - DmaRegs.CH3.DST_TRANSFER_STEP = 0; // Not needed since TRANSFER_SIZE = 0 - - // Set up WRAP registers: - DmaRegs.CH3.SRC_WRAP_SIZE = 0xFFFF; // No source wrap-around - DmaRegs.CH3.DST_WRAP_SIZE = 0xFFFF; // No destination wrap-around - DmaRegs.CH3.SRC_WRAP_STEP = 0; - DmaRegs.CH3.DST_WRAP_STEP = 0; - - // Set up SOURCE address: - DmaRegs.CH3.SRC_ADDR_SHADOW = (Uint32) &AdcMirror.ADCRESULT0; // Point to first RESULT reg - - // Set up DESTINATION address: - DmaRegs.CH3.DST_ADDR_SHADOW = (Uint32) &ADCbuffer[0]; // Point to beginning of ADCbuffer - - // Clear any spurious flags: - DmaRegs.CH3.CONTROL.bit.PERINTCLR = 1; // Clear any spurious interrupt flags - DmaRegs.CH3.CONTROL.bit.SYNCCLR = 1; // Clear any spurious sync flags - DmaRegs.CH3.CONTROL.bit.ERRCLR = 1; // Clear any spurious sync error flags - - EDIS; -} - - - -interrupt void local_DINTCH1_ISR(void) // DMA INT7.1 -{ - GpioDataRegs.GPATOGGLE.all = 0x00000001; // Toggle GPIOA0 - - InterruptCount++; - - - if((DmaRegs.CH1.CONTROL.bit.OVRFLG == 1) || (DmaRegs.CH2.CONTROL.bit.OVRFLG == 1) || - (DmaRegs.CH3.CONTROL.bit.OVRFLG == 1)) - { - asm(" ESTOP0"); - } - - PieCtrlRegs.PIEACK.bit.ACK7 = 1; // Clear PIEIFR bit -} - - -void ConfigAdc(void) -{ - AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 7; - AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0; // ADCINA0 - AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 1; // ADCINA1 - AdcRegs.ADCCHSELSEQ1.bit.CONV02 = 2; // ADCINA2 - AdcRegs.ADCCHSELSEQ1.bit.CONV03 = 3; // ADCINA3 - AdcRegs.ADCCHSELSEQ2.bit.CONV04 = 4; // ADCINA4 - AdcRegs.ADCCHSELSEQ2.bit.CONV05 = 5; // ADCINA5 - AdcRegs.ADCTRL2.bit.EPWM_SOCA_SEQ1 = 1; // Enable ADC to accept ePWM_SOCA trigger - AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; - AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1; - AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1; // Clear interrupt flag - AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1; // Enable SEQ1 interrupt -} - - -void config_ePWM1_to_generate_ADCSOCA(void) -{ - // Configure ePWM1 Timer - // Interrupt triggers ADCSOCA - - EALLOW; - EPwm1Regs.TBPRD = 74; // Setup period (one off so DMA transfer will be obvious) - EPwm1Regs.CMPA.all = 0x501000; - EPwm1Regs.ETSEL.bit.SOCASEL = 2; // ADCSOCA on TBCTR=TBPRD - EPwm1Regs.ETPS.bit.SOCAPRD = 1; // Generate SOCA on 1st event - EPwm1Regs.ETSEL.bit.SOCAEN = 1; // Enable SOCA generation - EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0; // /1 clock mode - EDIS; -} - - -void config_ePWM2_to_generate_ADCSOCB(void) -{ - // Configure ePWM2 Timer - // Interrupt triggers ADCSOCB - - EALLOW; - EPwm2Regs.TBPRD = 150; // Setup periodSetup period - EPwm2Regs.CMPA.all = 0x200000; - EPwm2Regs.ETSEL.bit.SOCBSEL = 2; // ADCSOCB on TBCTR=TBPRD - EPwm2Regs.ETPS.bit.SOCBPRD = 1; // Generate SOCB on 1st event - EPwm2Regs.ETSEL.bit.SOCBEN = 1; // Enable SOCB generation - EPwm2Regs.TBCTL.bit.HSPCLKDIV = 0; // /1 clock mode - EDIS; -} - - -void delay_loop() -{ - short i; - for (i = 0; i < 1000; i++) {} -} - - -//=========================================================================== -// No more. -//=========================================================================== - diff --git a/Source/External/v120/DSP2833x_examples/epwm_dma/Example_2833xEPwm_DMA.gel b/Source/External/v120/DSP2833x_examples/epwm_dma/Example_2833xEPwm_DMA.gel deleted file mode 100644 index f5ab59c..0000000 --- a/Source/External/v120/DSP2833x_examples/epwm_dma/Example_2833xEPwm_DMA.gel +++ /dev/null @@ -1,43 +0,0 @@ -/* -// TI File $Revision: /main/1 $ -// Checkin $Date: June 19, 2008 10:25:20 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// project. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -menuitem "DSP2833x ePWM DMA" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xEPwm_DMA.pjt"); - GEL_ProjectBuild("Example_2833xEPwm_DMA.pjt"); - Setup_WatchWindow(); -} - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xEPwm_DMA.out"); - Setup_WatchWindow(); -} - -hotmenu Setup_WatchWindow() -{ - GEL_WatchReset(); - GEL_WatchAdd("EPwm1Regs.TBPRD,x"); - GEL_WatchAdd("EPwm1Regs.CMPA.all,x"); - GEL_WatchAdd("ADCbuffer,x"); - GEL_WatchAdd("InterruptCount,x"); - GEL_WatchAdd("EPwm1Regs,x"); -} - - - - diff --git a/Source/External/v120/DSP2833x_examples/epwm_dma/Example_2833xEPwm_DMA.pjt b/Source/External/v120/DSP2833x_examples/epwm_dma/Example_2833xEPwm_DMA.pjt deleted file mode 100644 index 69ca432..0000000 --- a/Source/External/v120/DSP2833x_examples/epwm_dma/Example_2833xEPwm_DMA.pjt +++ /dev/null @@ -1,46 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\epwm_dma\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="CustomBuilder" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_Adc.c" -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xEPwm_DMA.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="DSP2833x_EPWMDM_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\epwm_dma\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\epwm_dma\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" -ml -mt -v28 --float_support=fpu32 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\epwm_dma\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -ecode_start -m".\Debug\Example_2833xEPwm_DMA.map" -o".\Debug\Example_2833xEPwm_DMA.out" -stack0x380 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -m".\Release\Example_2833xEPwm_DMA.map" -o".\Release\Example_2833xEPwm_DMA.out" -x - diff --git a/Source/External/v120/DSP2833x_examples/epwm_timer_interrupts/Example_2833xEPwmTimerInt.c b/Source/External/v120/DSP2833x_examples/epwm_timer_interrupts/Example_2833xEPwmTimerInt.c deleted file mode 100644 index 58927b6..0000000 --- a/Source/External/v120/DSP2833x_examples/epwm_timer_interrupts/Example_2833xEPwmTimerInt.c +++ /dev/null @@ -1,360 +0,0 @@ -// TI File $Revision: /main/9 $ -// Checkin $Date: April 21, 2008 15:41:38 $ -//########################################################################### -// -// FILE: Example_2833xEPwmTimerInt.c -// -// TITLE: DSP2833x ePWM Timer Interrupt example. -// -// ASSUMPTIONS: -// -// This program requires the DSP2833x header files. -// -// Other then boot mode configuration, no other hardware configuration -// is required. -// -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// DESCRIPTION: -// -// This example configures the ePWM Timers and increments -// a counter each time an interrupt is taken. -// -// As supplied: -// -// All ePWM's are initalized. Note that not all devices in the 2833x -// family have all 6 ePWMs. -// -// All timers have the same period -// The timers are started sync'ed -// An interrupt is taken on a zero event for each ePWM timer -// -// ePWM1: takes an interrupt every event -// ePWM2: takes an interrupt every 2nd event -// ePWM3: takes an interrupt every 3rd event -// ePWM4-ePWM6: take an interrupt every event -// -// Thus the Interrupt count for ePWM1, ePWM4-ePWM6 should be equal -// The interrupt count for ePWM2 should be about half that of ePWM1 -// and the interrupt count for ePWM3 should be about 1/3 that of ePWM1 -// -// Watch Variables: -// EPwm1TimerIntCount -// EPwm2TimerIntCount -// EPwm3TimerIntCount -// EPwm4TimerIntCount -// EPwm5TimerIntCount -// EPwm6TimerIntCount -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File - -// Configure which ePWM timer interrupts are enabled at the PIE level: -// 1 = enabled, 0 = disabled -#define PWM1_INT_ENABLE 1 -#define PWM2_INT_ENABLE 1 -#define PWM3_INT_ENABLE 1 -#define PWM4_INT_ENABLE 1 -#define PWM5_INT_ENABLE 1 -#define PWM6_INT_ENABLE 1 - -// Configure the period for each timer -#define PWM1_TIMER_TBPRD 0x1FFF -#define PWM2_TIMER_TBPRD 0x1FFF -#define PWM3_TIMER_TBPRD 0x1FFF -#define PWM4_TIMER_TBPRD 0x1FFF -#define PWM5_TIMER_TBPRD 0x1FFF -#define PWM6_TIMER_TBPRD 0x1FFF - - -// Prototype statements for functions found within this file. -interrupt void epwm1_timer_isr(void); -interrupt void epwm2_timer_isr(void); -interrupt void epwm3_timer_isr(void); -interrupt void epwm4_timer_isr(void); -interrupt void epwm5_timer_isr(void); -interrupt void epwm6_timer_isr(void); -void InitEPwmTimer(void); - -// Global variables used in this example -Uint32 EPwm1TimerIntCount; -Uint32 EPwm2TimerIntCount; -Uint32 EPwm3TimerIntCount; -Uint32 EPwm4TimerIntCount; -Uint32 EPwm5TimerIntCount; -Uint32 EPwm6TimerIntCount; - - -void main(void) -{ - int i; - -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - -// Step 2. Initalize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); // Skipped for this example - - -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize the PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - -// Interrupts that are used in this example are re-mapped to -// ISR functions found within this file. - EALLOW; // This is needed to write to EALLOW protected registers - PieVectTable.EPWM1_INT = &epwm1_timer_isr; - PieVectTable.EPWM2_INT = &epwm2_timer_isr; - PieVectTable.EPWM3_INT = &epwm3_timer_isr; - PieVectTable.EPWM4_INT = &epwm4_timer_isr; - PieVectTable.EPWM5_INT = &epwm5_timer_isr; - PieVectTable.EPWM6_INT = &epwm6_timer_isr; - EDIS; // This is needed to disable write to EALLOW protected registers - -// Step 4. Initialize all the Device Peripherals: -// This function is found in DSP2833x_InitPeripherals.c -// InitPeripherals(); // Not required for this example - InitEPwmTimer(); // For this example, only initialize the ePWM Timers - -// Step 5. User specific code, enable interrupts: - -// Initalize counters: - EPwm1TimerIntCount = 0; - EPwm2TimerIntCount = 0; - EPwm3TimerIntCount = 0; - EPwm4TimerIntCount = 0; - EPwm5TimerIntCount = 0; - EPwm6TimerIntCount = 0; - -// Enable CPU INT3 which is connected to EPWM1-6 INT: - IER |= M_INT3; - -// Enable EPWM INTn in the PIE: Group 3 interrupt 1-6 - PieCtrlRegs.PIEIER3.bit.INTx1 = PWM1_INT_ENABLE; - PieCtrlRegs.PIEIER3.bit.INTx2 = PWM2_INT_ENABLE; - PieCtrlRegs.PIEIER3.bit.INTx3 = PWM3_INT_ENABLE; - PieCtrlRegs.PIEIER3.bit.INTx4 = PWM4_INT_ENABLE; - PieCtrlRegs.PIEIER3.bit.INTx5 = PWM5_INT_ENABLE; - PieCtrlRegs.PIEIER3.bit.INTx6 = PWM6_INT_ENABLE; - -// Enable global Interrupts and higher priority real-time debug events: - EINT; // Enable Global interrupt INTM - ERTM; // Enable Global realtime interrupt DBGM - -// Step 6. IDLE loop. Just sit and loop forever (optional): - for(;;) - { - asm(" NOP"); - for(i=1;i<=10;i++) - {} - } - -} - - -void InitEPwmTimer() -{ - - EALLOW; - SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0; // Stop all the TB clocks - EDIS; - - // Setup Sync - EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN; // Pass through - EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN; // Pass through - EPwm3Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN; // Pass through - EPwm4Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN; // Pass through - EPwm5Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN; // Pass through - EPwm6Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN; // Pass through - - // Allow each timer to be sync'ed - - EPwm1Regs.TBCTL.bit.PHSEN = TB_ENABLE; - EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE; - EPwm3Regs.TBCTL.bit.PHSEN = TB_ENABLE; - EPwm4Regs.TBCTL.bit.PHSEN = TB_ENABLE; - EPwm5Regs.TBCTL.bit.PHSEN = TB_ENABLE; - EPwm6Regs.TBCTL.bit.PHSEN = TB_ENABLE; - - EPwm1Regs.TBPHS.half.TBPHS = 100; - EPwm2Regs.TBPHS.half.TBPHS = 200; - EPwm3Regs.TBPHS.half.TBPHS = 300; - EPwm4Regs.TBPHS.half.TBPHS = 400; - EPwm5Regs.TBPHS.half.TBPHS = 500; - EPwm6Regs.TBPHS.half.TBPHS = 600; - - EPwm1Regs.TBPRD = PWM1_TIMER_TBPRD; - EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; // Count up - EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // Select INT on Zero event - EPwm1Regs.ETSEL.bit.INTEN = PWM1_INT_ENABLE; // Enable INT - EPwm1Regs.ETPS.bit.INTPRD = ET_1ST; // Generate INT on 1st event - - - EPwm2Regs.TBPRD = PWM2_TIMER_TBPRD; - EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; // Count up - EPwm2Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // Enable INT on Zero event - EPwm2Regs.ETSEL.bit.INTEN = PWM2_INT_ENABLE; // Enable INT - EPwm2Regs.ETPS.bit.INTPRD = ET_2ND; // Generate INT on 2nd event - - - EPwm3Regs.TBPRD = PWM3_TIMER_TBPRD; - EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; // Count up - EPwm3Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // Enable INT on Zero event - EPwm3Regs.ETSEL.bit.INTEN = PWM3_INT_ENABLE; // Enable INT - EPwm3Regs.ETPS.bit.INTPRD = ET_3RD; // Generate INT on 3rd event - - EPwm4Regs.TBPRD = PWM4_TIMER_TBPRD; - EPwm4Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; // Count up - EPwm4Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // Enable INT on Zero event - EPwm4Regs.ETSEL.bit.INTEN = PWM4_INT_ENABLE; // Enable INT - EPwm4Regs.ETPS.bit.INTPRD = ET_1ST; // Generate INT on 1st event - - - EPwm5Regs.TBPRD = PWM5_TIMER_TBPRD; - EPwm5Regs.TBCTL.bit.CTRMODE= TB_COUNT_UP; // Count up - EPwm5Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // Enable INT on Zero event - EPwm5Regs.ETSEL.bit.INTEN = PWM5_INT_ENABLE; // Enable INT - EPwm5Regs.ETPS.bit.INTPRD = ET_1ST; // Generate INT on 1st event - - - EPwm6Regs.TBPRD = PWM6_TIMER_TBPRD; - EPwm6Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; // Count up - EPwm6Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // Enable INT on Zero event - EPwm6Regs.ETSEL.bit.INTEN = PWM6_INT_ENABLE; // Enable INT - EPwm6Regs.ETPS.bit.INTPRD = ET_1ST; // Generate INT on 1st event - - EALLOW; - SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; // Start all the timers synced - EDIS; - - -} - - -// Interrupt routines uses in this example: -interrupt void epwm1_timer_isr(void) -{ - EPwm1TimerIntCount++; - - // Clear INT flag for this timer - EPwm1Regs.ETCLR.bit.INT = 1; - - // Acknowledge this interrupt to receive more interrupts from group 3 - PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; -} - -interrupt void epwm2_timer_isr(void) -{ - EPwm2TimerIntCount++; - - // Clear INT flag for this timer - EPwm2Regs.ETCLR.bit.INT = 1; - - // Acknowledge this interrupt to receive more interrupts from group 3 - PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; -} - -interrupt void epwm3_timer_isr(void) -{ - EPwm3TimerIntCount++; - - // Clear INT flag for this timer - EPwm3Regs.ETCLR.bit.INT = 1; - - // Acknowledge this interrupt to receive more interrupts from group 3 - PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; -} - -interrupt void epwm4_timer_isr(void) -{ - EPwm4TimerIntCount++; - - // Clear INT flag for this timer - EPwm4Regs.ETCLR.bit.INT = 1; - - // Acknowledge this interrupt to receive more interrupts from group 3 - PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; -} - -interrupt void epwm5_timer_isr(void) -{ - EPwm5TimerIntCount++; - - // Clear INT flag for this timer - EPwm5Regs.ETCLR.bit.INT = 1; - - // Acknowledge this interrupt to receive more interrupts from group 3 - PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; -} - -interrupt void epwm6_timer_isr(void) -{ - EPwm6TimerIntCount++; - - // Clear INT flag for this timer - EPwm6Regs.ETCLR.bit.INT = 1; - - // Acknowledge this interrupt to receive more interrupts from group 3 - PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; -} - - - - -//=========================================================================== -// No more. -//=========================================================================== diff --git a/Source/External/v120/DSP2833x_examples/epwm_timer_interrupts/Example_2833xEPwmTimerInt.gel b/Source/External/v120/DSP2833x_examples/epwm_timer_interrupts/Example_2833xEPwmTimerInt.gel deleted file mode 100644 index 43d8f17..0000000 --- a/Source/External/v120/DSP2833x_examples/epwm_timer_interrupts/Example_2833xEPwmTimerInt.gel +++ /dev/null @@ -1,47 +0,0 @@ -/* -// TI File $Revision: /main/5 $ -// Checkin $Date: August 9, 2007 17:13:37 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// project. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -menuitem "DSP2833x ePWM Interrupt Example" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xEPwmTimerInt.pjt"); - GEL_ProjectBuild("Example_2833xEPwmTimerInt.pjt"); - Setup_WatchWindow(); -} - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xEPwmTimerInt.out"); - Setup_WatchWindow(); -} - - -hotmenu Setup_WatchWindow() -{ - GEL_WatchReset(); - GEL_WatchAdd("EPwm1TimerIntCount",,"PWM1 ISR Count"); - GEL_WatchAdd("EPwm2TimerIntCount",,"PWM2 ISR Count"); - GEL_WatchAdd("EPwm3TimerIntCount",,"PWM3 ISR Count"); - GEL_WatchAdd("EPwm4TimerIntCount",,"PWM4 ISR Count"); - GEL_WatchAdd("EPwm5TimerIntCount",,"PWM5 ISR Count"); - GEL_WatchAdd("EPwm6TimerIntCount",,"PWM6 ISR Count"); - GEL_WatchAdd("EPwm1Regs,x"); - GEL_WatchAdd("EPwm2Regs,x"); - GEL_WatchAdd("EPwm3Regs,x"); - GEL_WatchAdd("EPwm4Regs,x"); - GEL_WatchAdd("EPwm5Regs,x"); - GEL_WatchAdd("EPwm6Regs,x"); -} diff --git a/Source/External/v120/DSP2833x_examples/epwm_timer_interrupts/Example_2833xEPwmTimerInt.pjt b/Source/External/v120/DSP2833x_examples/epwm_timer_interrupts/Example_2833xEPwmTimerInt.pjt deleted file mode 100644 index 6e0819d..0000000 --- a/Source/External/v120/DSP2833x_examples/epwm_timer_interrupts/Example_2833xEPwmTimerInt.pjt +++ /dev/null @@ -1,45 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\epwm_timer_interrupts\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CpuTimers.c" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xEPwmTimerInt.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\epwm_timer_interrupts\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\epwm_timer_interrupts\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" --float_support=fpu32 -ml -mt -v28 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\epwm_timer_interrupts\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -ecode_start -m".\Debug\Example_2833xEPwmTimerInt.map" -o".\Debug\Example_2833xEPwmTimerInt.out" -stack0x380 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xCpuTimer.out" -x - diff --git a/Source/External/v120/DSP2833x_examples/epwm_trip_zone/Example_2833xEPwmTripZone.c b/Source/External/v120/DSP2833x_examples/epwm_trip_zone/Example_2833xEPwmTripZone.c deleted file mode 100644 index 1415e49..0000000 --- a/Source/External/v120/DSP2833x_examples/epwm_trip_zone/Example_2833xEPwmTripZone.c +++ /dev/null @@ -1,305 +0,0 @@ -// TI File $Revision: /main/8 $ -// Checkin $Date: April 21, 2008 15:41:42 $ -//########################################################################### -// -// FILE: Example_2833xEpwmTripZone.c -// -// TITLE: Check PWM Trip Zone Test -// -// ASSUMPTIONS: -// -// This program requires the DSP2833x header files. -// -// Initially tie TZ1 (GPIO12) and TZ2 (GPIO13) high. -// -// During the test, monitor ePWM1 or ePWM2 outputs -// on a scope Pull TZ1 or TZ2 low to see the effect. -// -// EPWM1A is on GPIO0 -// EPWM1B is on GPIO1 -// EPWM2A is on GPIO2 -// EPWM2B is on GPIO3 -// -// ePWM1 will react as a 1 shot trip -// -// ePWM2 will react as a cycle by cycle trip and will be -// cleared if TZ1 and TZ2 are both pulled back high. -// -// -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// DESCRIPTION: -// -// This example configures ePWM1 and ePWM2 -// -// 2 Examples are included: -// * ePWM1 has TZ1 and TZ2 as one shot trip sources -// * ePWM2 has TZ1 and TZ2 as cycle by cycle trip sources -// -// Each ePWM is configured to interrupt on the 3rd zero event -// when this happens the deadband is modified such that -// 0 <= DB <= DB_MAX. That is, the deadband will move up and -// down between 0 and the maximum value. -// -// -// View the EPWM1A/B, EPWM2A/B waveforms -// via an oscilloscope to see the effect of TZ1 and TZ2 -// -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File - -// Prototype statements for functions found within this file. -void InitEPwm1Example(void); -void InitEPwm2Example(void); -interrupt void epwm1_tzint_isr(void); -interrupt void epwm2_tzint_isr(void); - - -// Global variables used in this example -Uint32 EPwm1TZIntCount; -Uint32 EPwm2TZIntCount; - -void main(void) -{ -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - -// Step 2. Initalize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); // Skipped for this example - -// For this case just init GPIO pins for ePWM1, ePWM2, and TZ pins - InitEPwm1Gpio(); - InitEPwm2Gpio(); - InitTzGpio(); - -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize the PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - -// Interrupts that are used in this example are re-mapped to -// ISR functions found within this file. - EALLOW; // This is needed to write to EALLOW protected registers - PieVectTable.EPWM1_TZINT = &epwm1_tzint_isr; - PieVectTable.EPWM2_TZINT = &epwm2_tzint_isr; - EDIS; // This is needed to disable write to EALLOW protected registers - -// Step 4. Initialize all the Device Peripherals: -// This function is found in DSP2833x_InitPeripherals.c -// InitPeripherals(); // Not required for this example - - - EALLOW; - SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0; - EDIS; - - InitEPwm1Example(); - InitEPwm2Example(); - - EALLOW; - SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; - EDIS; - -// Step 5. User specific code, enable interrupts -// Initalize counters: - EPwm1TZIntCount = 0; - EPwm2TZIntCount = 0; - -// Enable CPU INT3 which is connected to EPWM1-3 INT: - IER |= M_INT2; - -// Enable EPWM INTn in the PIE: Group 2 interrupt 1-3 - PieCtrlRegs.PIEIER2.bit.INTx1 = 1; - PieCtrlRegs.PIEIER2.bit.INTx2 = 1; - -// Enable global Interrupts and higher priority real-time debug events: - EINT; // Enable Global interrupt INTM - ERTM; // Enable Global realtime interrupt DBGM - - - -// Step 6. IDLE loop. Just sit and loop forever (optional): - for(;;) - { - asm(" NOP"); - } - -} - -interrupt void epwm1_tzint_isr(void) -{ - EPwm1TZIntCount++; - -// Leave these flags set so we only take this -// interrupt once -// -// EALLOW; -// EPwm1Regs.TZCLR.bit.OST = 1; -// EPwm1Regs.TZCLR.bit.INT = 1; -// EDIS; - - // Acknowledge this interrupt to receive more interrupts from group 2 - PieCtrlRegs.PIEACK.all = PIEACK_GROUP2; - -} - -interrupt void epwm2_tzint_isr(void) -{ - - EPwm2TZIntCount++; - -// Clear the flags - we will continue to take -// this interrupt until the TZ pin goes high -// - EALLOW; - EPwm2Regs.TZCLR.bit.CBC = 1; - EPwm2Regs.TZCLR.bit.INT = 1; - EDIS; - - // Acknowledge this interrupt to receive more interrupts from group 2 - PieCtrlRegs.PIEACK.all = PIEACK_GROUP2; - -} - - -void InitEPwm1Example() -{ - // Enable TZ1 and TZ2 as one shot trip sources - EALLOW; - EPwm1Regs.TZSEL.bit.OSHT1 = 1; - EPwm1Regs.TZSEL.bit.OSHT2 = 1; - - // What do we want the TZ1 and TZ2 to do? - EPwm1Regs.TZCTL.bit.TZA = TZ_FORCE_HI; - EPwm1Regs.TZCTL.bit.TZB = TZ_FORCE_LO; - - // Enable TZ interrupt - EPwm1Regs.TZEINT.bit.OST = 1; - EDIS; - - EPwm1Regs.TBPRD = 6000; // Set timer period - EPwm1Regs.TBPHS.half.TBPHS = 0x0000; // Phase is 0 - EPwm1Regs.TBCTR = 0x0000; // Clear counter - - // Setup TBCLK - EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count up - EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // Disable phase loading - EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV4; // Clock ratio to SYSCLKOUT - EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV4; - - EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; // Load registers every ZERO - EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; - EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; - EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; - - // Setup compare - EPwm1Regs.CMPA.half.CMPA = 3000; - - // Set actions - EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // Set PWM1A on Zero - EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR; - - - EPwm1Regs.AQCTLB.bit.CAU = AQ_CLEAR; // Set PWM1A on Zero - EPwm1Regs.AQCTLB.bit.CAD = AQ_SET; - -} - - -void InitEPwm2Example() -{ - - // Enable TZ1 and TZ2 as one cycle-by-cycle trip sources - EALLOW; - EPwm2Regs.TZSEL.bit.CBC1 = 1; - EPwm2Regs.TZSEL.bit.CBC2 = 1; - - // What do we want the TZ1 and TZ2 to do? - EPwm2Regs.TZCTL.bit.TZA = TZ_FORCE_HI; - EPwm2Regs.TZCTL.bit.TZB = TZ_FORCE_LO; - - // Enable TZ interrupt - EPwm2Regs.TZEINT.bit.CBC = 1; - EDIS; - - EPwm2Regs.TBPRD = 6000; // Set timer period - EPwm2Regs.TBPHS.half.TBPHS = 0x0000; // Phase is 0 - EPwm2Regs.TBCTR = 0x0000; // Clear counter - - // Setup TBCLK - EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count up - EPwm2Regs.TBCTL.bit.PHSEN = TB_DISABLE; // Disable phase loading - EPwm2Regs.TBCTL.bit.HSPCLKDIV = TB_DIV4; // Clock ratio to SYSCLKOUT - EPwm2Regs.TBCTL.bit.CLKDIV = TB_DIV4; // Slow just to observe on the scope - - // Setup compare - EPwm2Regs.CMPA.half.CMPA = 3000; - - // Set actions - EPwm2Regs.AQCTLA.bit.CAU = AQ_SET; // Set PWM2A on Zero - EPwm2Regs.AQCTLA.bit.CAD = AQ_CLEAR; - - - EPwm2Regs.AQCTLB.bit.CAU = AQ_CLEAR; // Set PWM2A on Zero - EPwm2Regs.AQCTLB.bit.CAD = AQ_SET; -} - - - - -//=========================================================================== -// No more. -//=========================================================================== diff --git a/Source/External/v120/DSP2833x_examples/epwm_trip_zone/Example_2833xEPwmTripZone.gel b/Source/External/v120/DSP2833x_examples/epwm_trip_zone/Example_2833xEPwmTripZone.gel deleted file mode 100644 index a59442b..0000000 --- a/Source/External/v120/DSP2833x_examples/epwm_trip_zone/Example_2833xEPwmTripZone.gel +++ /dev/null @@ -1,40 +0,0 @@ -/* -// TI File $Revision: /main/5 $ -// Checkin $Date: August 9, 2007 17:13:58 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// project. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -menuitem "DSP2833x ePWM TripZone" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xEPwmTripZone.pjt"); - GEL_ProjectBuild("Example_2833xEPwmTripZone.pjt"); - Setup_WatchWindow(); -} - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xEPwmTripZone.out"); - Setup_WatchWindow(); -} - -hotmenu Setup_WatchWindow() -{ - GEL_WatchReset(); - GEL_WatchAdd("EPwm1Regs,x"); - GEL_WatchAdd("EPwm2Regs,x"); -} - - - - diff --git a/Source/External/v120/DSP2833x_examples/epwm_trip_zone/Example_2833xEPwmTripZone.pjt b/Source/External/v120/DSP2833x_examples/epwm_trip_zone/Example_2833xEPwmTripZone.pjt deleted file mode 100644 index 543de56..0000000 --- a/Source/External/v120/DSP2833x_examples/epwm_trip_zone/Example_2833xEPwmTripZone.pjt +++ /dev/null @@ -1,46 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\epwm_trip_zone\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CpuTimers.c" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_EPwm.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xEPwmTripZone.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\epwm_trip_zone\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\epwm_trip_zone\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" --float_support=fpu32 -ml -mt -v28 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\epwm_trip_zone\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -ecode_start -m".\Debug\Example_2833xEPwmTripZone.map" -o".\Debug\Example_2833xEPwmTripZone.out" -stack0x380 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -m".\Release\Example_2833xEPwmDeadBand.map" -o".\Release\Example_2833xEPwmTripZone.out" -x - diff --git a/Source/External/v120/DSP2833x_examples/epwm_up_aq/Example_2833xEPwmUpAQ.c b/Source/External/v120/DSP2833x_examples/epwm_up_aq/Example_2833xEPwmUpAQ.c deleted file mode 100644 index 33b153a..0000000 --- a/Source/External/v120/DSP2833x_examples/epwm_up_aq/Example_2833xEPwmUpAQ.c +++ /dev/null @@ -1,490 +0,0 @@ -// TI File $Revision: /main/9 $ -// Checkin $Date: April 21, 2008 15:41:47 $ -//########################################################################### -// -// FILE: Example_2833xEPwm3UpAQ.c -// -// TITLE: Action Qualifier Module Upcount mode. -// -// ASSUMPTIONS: -// -// This program requires the DSP2833x header files. -// -// Monitor the ePWM1 - ePWM3 pins on a oscilloscope as -// described below. -// -// EPWM1A is on GPIO0 -// EPWM1B is on GPIO1 -// -// EPWM2A is on GPIO2 -// EPWM2B is on GPIO3 -// -// EPWM3A is on GPIO4 -// EPWM3B is on GPIO5 -// -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// DESCRIPTION: -// -// This example configures ePWM1, ePWM2, ePWM3 to produce an -// waveform with independant modulation on EPWMxA and -// EPWMxB. -// -// The compare values CMPA and CMPB are modified within the ePWM's ISR -// -// The TB counter is in upmode for this example. -// -// View the EPWM1A/B, EPWM2A/B and EPWM3A/B waveforms -// via an oscilloscope -// -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File - - -typedef struct -{ - volatile struct EPWM_REGS *EPwmRegHandle; - Uint16 EPwm_CMPA_Direction; - Uint16 EPwm_CMPB_Direction; - Uint16 EPwmTimerIntCount; - Uint16 EPwmMaxCMPA; - Uint16 EPwmMinCMPA; - Uint16 EPwmMaxCMPB; - Uint16 EPwmMinCMPB; -}EPWM_INFO; - - -// Prototype statements for functions found within this file. -void InitEPwm1Example(void); -void InitEPwm2Example(void); -void InitEPwm3Example(void); -interrupt void epwm1_isr(void); -interrupt void epwm2_isr(void); -interrupt void epwm3_isr(void); -void update_compare(EPWM_INFO*); - -// Global variables used in this example -EPWM_INFO epwm1_info; -EPWM_INFO epwm2_info; -EPWM_INFO epwm3_info; - -// Configure the period for each timer -#define EPWM1_TIMER_TBPRD 2000 // Period register -#define EPWM1_MAX_CMPA 1950 -#define EPWM1_MIN_CMPA 50 -#define EPWM1_MAX_CMPB 1950 -#define EPWM1_MIN_CMPB 50 - -#define EPWM2_TIMER_TBPRD 2000 // Period register -#define EPWM2_MAX_CMPA 1950 -#define EPWM2_MIN_CMPA 50 -#define EPWM2_MAX_CMPB 1950 -#define EPWM2_MIN_CMPB 50 - -#define EPWM3_TIMER_TBPRD 2000 // Period register -#define EPWM3_MAX_CMPA 950 -#define EPWM3_MIN_CMPA 50 -#define EPWM3_MAX_CMPB 1950 -#define EPWM3_MIN_CMPB 1050 - - -// To keep track of which way the compare value is moving -#define EPWM_CMP_UP 1 -#define EPWM_CMP_DOWN 0 - - - -void main(void) -{ -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - -// Step 2. Initalize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); // Skipped for this example - -// For this case just init GPIO pins for ePWM1, ePWM2, ePWM3 -// These functions are in the DSP2833x_EPwm.c file - InitEPwm1Gpio(); - InitEPwm2Gpio(); - InitEPwm3Gpio(); - - -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize the PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - -// Interrupts that are used in this example are re-mapped to -// ISR functions found within this file. - EALLOW; // This is needed to write to EALLOW protected registers - PieVectTable.EPWM1_INT = &epwm1_isr; - PieVectTable.EPWM2_INT = &epwm2_isr; - PieVectTable.EPWM3_INT = &epwm3_isr; - EDIS; // This is needed to disable write to EALLOW protected registers - -// Step 4. Initialize all the Device Peripherals: -// This function is found in DSP2833x_InitPeripherals.c -// InitPeripherals(); // Not required for this example - -// For this example, only initialize the ePWM - - EALLOW; - SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0; - EDIS; - - InitEPwm1Example(); - InitEPwm2Example(); - InitEPwm3Example(); - - EALLOW; - SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; - EDIS; - - -// Step 5. User specific code, enable interrupts: - -// Enable CPU INT3 which is connected to EPWM1-3 INT: - IER |= M_INT3; - -// Enable EPWM INTn in the PIE: Group 3 interrupt 1-3 - PieCtrlRegs.PIEIER3.bit.INTx1 = 1; - PieCtrlRegs.PIEIER3.bit.INTx2 = 1; - PieCtrlRegs.PIEIER3.bit.INTx3 = 1; - -// Enable global Interrupts and higher priority real-time debug events: - EINT; // Enable Global interrupt INTM - ERTM; // Enable Global realtime interrupt DBGM - -// Step 6. IDLE loop. Just sit and loop forever (optional): - for(;;) - { - asm(" NOP"); - } - -} - -interrupt void epwm1_isr(void) -{ - // Update the CMPA and CMPB values - update_compare(&epwm1_info); - - // Clear INT flag for this timer - EPwm1Regs.ETCLR.bit.INT = 1; - - // Acknowledge this interrupt to receive more interrupts from group 3 - PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; -} - - -interrupt void epwm2_isr(void) -{ - - // Update the CMPA and CMPB values - update_compare(&epwm2_info); - - // Clear INT flag for this timer - EPwm2Regs.ETCLR.bit.INT = 1; - - // Acknowledge this interrupt to receive more interrupts from group 3 - PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; -} - -interrupt void epwm3_isr(void) -{ - - // Update the CMPA and CMPB values - update_compare(&epwm3_info); - - // Clear INT flag for this timer - EPwm3Regs.ETCLR.bit.INT = 1; - - // Acknowledge this interrupt to receive more interrupts from group 3 - PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; -} - -void InitEPwm1Example() -{ - - // Setup TBCLK - EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; // Count up - EPwm1Regs.TBPRD = EPWM1_TIMER_TBPRD; // Set timer period - EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // Disable phase loading - EPwm1Regs.TBPHS.half.TBPHS = 0x0000; // Phase is 0 - EPwm1Regs.TBCTR = 0x0000; // Clear counter - EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV2; // Clock ratio to SYSCLKOUT - EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV2; - - // Setup shadow register load on ZERO - EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; - EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; - EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; - EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; - - // Set Compare values - EPwm1Regs.CMPA.half.CMPA = EPWM1_MIN_CMPA; // Set compare A value - EPwm1Regs.CMPB = EPWM1_MIN_CMPB; // Set Compare B value - - // Set actions - EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET; // Set PWM1A on Zero - EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR; // Clear PWM1A on event A, up count - - EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET; // Set PWM1B on Zero - EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR; // Clear PWM1B on event B, up count - - // Interrupt where we will change the Compare Values - EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // Select INT on Zero event - EPwm1Regs.ETSEL.bit.INTEN = 1; // Enable INT - EPwm1Regs.ETPS.bit.INTPRD = ET_3RD; // Generate INT on 3rd event - - // Information this example uses to keep track - // of the direction the CMPA/CMPB values are - // moving, the min and max allowed values and - // a pointer to the correct ePWM registers - epwm1_info.EPwm_CMPA_Direction = EPWM_CMP_UP; // Start by increasing CMPA & CMPB - epwm1_info.EPwm_CMPB_Direction = EPWM_CMP_UP; - epwm1_info.EPwmTimerIntCount = 0; // Zero the interrupt counter - epwm1_info.EPwmRegHandle = &EPwm1Regs; // Set the pointer to the ePWM module - epwm1_info.EPwmMaxCMPA = EPWM1_MAX_CMPA; // Setup min/max CMPA/CMPB values - epwm1_info.EPwmMinCMPA = EPWM1_MIN_CMPA; - epwm1_info.EPwmMaxCMPB = EPWM1_MAX_CMPB; - epwm1_info.EPwmMinCMPB = EPWM1_MIN_CMPB; - -} - - -void InitEPwm2Example() -{ - // Setup TBCLK - EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; // Count up - EPwm2Regs.TBPRD = EPWM2_TIMER_TBPRD; // Set timer period - EPwm2Regs.TBCTL.bit.PHSEN = TB_DISABLE; // Disable phase loading - EPwm2Regs.TBPHS.half.TBPHS = 0x0000; // Phase is 0 - EPwm2Regs.TBCTR = 0x0000; // Clear counter - EPwm2Regs.TBCTL.bit.HSPCLKDIV = TB_DIV2; // Clock ratio to SYSCLKOUT - EPwm2Regs.TBCTL.bit.CLKDIV = TB_DIV2; - - // Setup shadow register load on ZERO - EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; - EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; - EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; - EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; - - // Set Compare values - EPwm2Regs.CMPA.half.CMPA = EPWM2_MIN_CMPA; // Set compare A value - EPwm2Regs.CMPB = EPWM2_MAX_CMPB; // Set Compare B value - - // Set actions - EPwm2Regs.AQCTLA.bit.PRD = AQ_CLEAR; // Clear PWM2A on Period - EPwm2Regs.AQCTLA.bit.CAU = AQ_SET; // Set PWM2A on event A, up count - - EPwm2Regs.AQCTLB.bit.PRD = AQ_CLEAR; // Clear PWM2B on Period - EPwm2Regs.AQCTLB.bit.CBU = AQ_SET; // Set PWM2B on event B, up count - - // Interrupt where we will change the Compare Values - EPwm2Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // Select INT on Zero event - EPwm2Regs.ETSEL.bit.INTEN = 1; // Enable INT - EPwm2Regs.ETPS.bit.INTPRD = ET_3RD; // Generate INT on 3rd event - - // Information this example uses to keep track - // of the direction the CMPA/CMPB values are - // moving, the min and max allowed values and - // a pointer to the correct ePWM registers - epwm2_info.EPwm_CMPA_Direction = EPWM_CMP_UP; // Start by increasing CMPA - epwm2_info.EPwm_CMPB_Direction = EPWM_CMP_DOWN; // and decreasing CMPB - epwm2_info.EPwmTimerIntCount = 0; // Zero the interrupt counter - epwm2_info.EPwmRegHandle = &EPwm2Regs; // Set the pointer to the ePWM module - epwm2_info.EPwmMaxCMPA = EPWM2_MAX_CMPA; // Setup min/max CMPA/CMPB values - epwm2_info.EPwmMinCMPA = EPWM2_MIN_CMPA; - epwm2_info.EPwmMaxCMPB = EPWM2_MAX_CMPB; - epwm2_info.EPwmMinCMPB = EPWM2_MIN_CMPB; - -} - - -void InitEPwm3Example(void) -{ - - - // Setup TBCLK - EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; // Count up - EPwm3Regs.TBPRD = EPWM3_TIMER_TBPRD; // Set timer period - EPwm3Regs.TBCTL.bit.PHSEN = TB_DISABLE; // Disable phase loading - EPwm3Regs.TBPHS.half.TBPHS = 0x0000; // Phase is 0 - EPwm3Regs.TBCTR = 0x0000; // Clear counter - EPwm3Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // Clock ratio to SYSCLKOUT - EPwm3Regs.TBCTL.bit.CLKDIV = TB_DIV1; - - // Setup shadow register load on ZERO - EPwm3Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; - EPwm3Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; - EPwm3Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; - EPwm3Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; - - // Set Compare values - EPwm3Regs.CMPA.half.CMPA = EPWM3_MIN_CMPA; // Set compare A value - EPwm3Regs.CMPB = EPWM3_MAX_CMPB; // Set Compare B value - - // Set Actions - EPwm3Regs.AQCTLA.bit.CAU = AQ_SET; // Set PWM3A on event B, up count - EPwm3Regs.AQCTLA.bit.CBU = AQ_CLEAR; // Clear PWM3A on event B, up count - - EPwm3Regs.AQCTLB.bit.ZRO = AQ_TOGGLE; // Toggle EPWM3B on Zero - - // Interrupt where we will change the Compare Values - EPwm3Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // Select INT on Zero event - EPwm3Regs.ETSEL.bit.INTEN = 1; // Enable INT - EPwm3Regs.ETPS.bit.INTPRD = ET_3RD; // Generate INT on 3rd event - - // Start by increasing the compare A and decreasing compare B - epwm3_info.EPwm_CMPA_Direction = EPWM_CMP_UP; - epwm3_info.EPwm_CMPB_Direction = EPWM_CMP_DOWN; - // Start the cout at 0 - epwm3_info.EPwmTimerIntCount = 0; - epwm3_info.EPwmRegHandle = &EPwm3Regs; - epwm3_info.EPwmMaxCMPA = EPWM3_MAX_CMPA; - epwm3_info.EPwmMinCMPA = EPWM3_MIN_CMPA; - epwm3_info.EPwmMaxCMPB = EPWM3_MAX_CMPB; - epwm3_info.EPwmMinCMPB = EPWM3_MIN_CMPB; -} - - -void update_compare(EPWM_INFO *epwm_info) -{ - - - // Every 10'th interrupt, change the CMPA/CMPB values - if(epwm_info->EPwmTimerIntCount == 10) - { - epwm_info->EPwmTimerIntCount = 0; - - // If we were increasing CMPA, check to see if - // we reached the max value. If not, increase CMPA - // else, change directions and decrease CMPA - if(epwm_info->EPwm_CMPA_Direction == EPWM_CMP_UP) - { - if(epwm_info->EPwmRegHandle->CMPA.half.CMPA < epwm_info->EPwmMaxCMPA) - { - epwm_info->EPwmRegHandle->CMPA.half.CMPA++; - } - else - { - epwm_info->EPwm_CMPA_Direction = EPWM_CMP_DOWN; - epwm_info->EPwmRegHandle->CMPA.half.CMPA--; - } - } - - // If we were decreasing CMPA, check to see if - // we reached the min value. If not, decrease CMPA - // else, change directions and increase CMPA - else - { - if(epwm_info->EPwmRegHandle->CMPA.half.CMPA == epwm_info->EPwmMinCMPA) - { - epwm_info->EPwm_CMPA_Direction = EPWM_CMP_UP; - epwm_info->EPwmRegHandle->CMPA.half.CMPA++; - } - else - { - epwm_info->EPwmRegHandle->CMPA.half.CMPA--; - } - } - - // If we were increasing CMPB, check to see if - // we reached the max value. If not, increase CMPB - // else, change directions and decrease CMPB - if(epwm_info->EPwm_CMPB_Direction == EPWM_CMP_UP) - { - if(epwm_info->EPwmRegHandle->CMPB < epwm_info->EPwmMaxCMPB) - { - epwm_info->EPwmRegHandle->CMPB++; - } - else - { - epwm_info->EPwm_CMPB_Direction = EPWM_CMP_DOWN; - epwm_info->EPwmRegHandle->CMPB--; - } - } - - // If we were decreasing CMPB, check to see if - // we reached the min value. If not, decrease CMPB - // else, change directions and increase CMPB - - else - { - if(epwm_info->EPwmRegHandle->CMPB == epwm_info->EPwmMinCMPB) - { - epwm_info->EPwm_CMPB_Direction = EPWM_CMP_UP; - epwm_info->EPwmRegHandle->CMPB++; - } - else - { - epwm_info->EPwmRegHandle->CMPB--; - } - } - } - else - { - epwm_info->EPwmTimerIntCount++; - } - - return; -} - - -//=========================================================================== -// No more. -//=========================================================================== diff --git a/Source/External/v120/DSP2833x_examples/epwm_up_aq/Example_2833xEPwmUpAQ.gel b/Source/External/v120/DSP2833x_examples/epwm_up_aq/Example_2833xEPwmUpAQ.gel deleted file mode 100644 index 6ac8e2c..0000000 --- a/Source/External/v120/DSP2833x_examples/epwm_up_aq/Example_2833xEPwmUpAQ.gel +++ /dev/null @@ -1,41 +0,0 @@ -/* -// TI File $Revision: /main/5 $ -// Checkin $Date: August 9, 2007 17:14:13 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// project. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -menuitem "DSP2833x ePWM UP AQ" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xEPwmUpAQ.pjt"); - GEL_ProjectBuild("Example_2833xEPwmUpAQ.pjt"); - Setup_WatchWindow(); -} - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xEPwmUpAQ.out"); - Setup_WatchWindow(); -} - -hotmenu Setup_WatchWindow() -{ - GEL_WatchReset(); - GEL_WatchAdd("EPwm1Regs,x"); - GEL_WatchAdd("EPwm2Regs,x"); - GEL_WatchAdd("EPwm3Regs,x"); -} - - - - diff --git a/Source/External/v120/DSP2833x_examples/epwm_up_aq/Example_2833xEPwmUpAQ.pjt b/Source/External/v120/DSP2833x_examples/epwm_up_aq/Example_2833xEPwmUpAQ.pjt deleted file mode 100644 index 45a227e..0000000 --- a/Source/External/v120/DSP2833x_examples/epwm_up_aq/Example_2833xEPwmUpAQ.pjt +++ /dev/null @@ -1,46 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\epwm_up_aq\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CpuTimers.c" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_EPwm.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xEPwmUpAQ.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\epwm_up_aq\Debug" -fs"C:\tidcs\c28\DSP2833x\006\DSP2833x_examples\epwm_asymmetic_aq\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" --float_support=fpu32 -ml -mt -v28 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\epwm_up_aq\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -ecode_start -m".\Debug\Example_2833xEPwmUpAQ.map" -o".\Debug\Example_2833xEPwmUpAQ.out" -stack0x380 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xEPwmUpAQ.out" -x - diff --git a/Source/External/v120/DSP2833x_examples/epwm_updown_aq/Example_2833xEPwmUpDownAQ.c b/Source/External/v120/DSP2833x_examples/epwm_updown_aq/Example_2833xEPwmUpDownAQ.c deleted file mode 100644 index 6ccdbb7..0000000 --- a/Source/External/v120/DSP2833x_examples/epwm_updown_aq/Example_2833xEPwmUpDownAQ.c +++ /dev/null @@ -1,499 +0,0 @@ -// TI File $Revision: /main/8 $ -// Checkin $Date: April 21, 2008 15:41:53 $ -//########################################################################### -// -// FILE: Example_2833xEPwmUpDownAQ.c -// -// TITLE: Action Qualifier Module - Using up/down count -// -// ASSUMPTIONS: -// -// This program requires the DSP2833x header files. -// -// Monitor ePWM1-ePWM3 pins on an oscilloscope as described -// below. -// -// EPWM1A is on GPIO0 -// EPWM1B is on GPIO1 -// -// EPWM2A is on GPIO2 -// EPWM2B is on GPIO3 -// -// EPWM3A is on GPIO4 -// EPWM3B is on GPIO5 -// -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// DESCRIPTION: -// -// This example configures ePWM1, ePWM2, ePWM3 to produce an -// waveform with independant modulation on EPWMxA and -// EPWMxB. -// -// The compare values CMPA and CMPB are modified within the ePWM's ISR -// -// The TB counter is in up/down count mode for this example. -// -// View the EPWM1A/B, EPWM2A/B and EPWM3A/B waveforms -// via an oscilloscope -// -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File - -typedef struct -{ - volatile struct EPWM_REGS *EPwmRegHandle; - Uint16 EPwm_CMPA_Direction; - Uint16 EPwm_CMPB_Direction; - Uint16 EPwmTimerIntCount; - Uint16 EPwmMaxCMPA; - Uint16 EPwmMinCMPA; - Uint16 EPwmMaxCMPB; - Uint16 EPwmMinCMPB; -}EPWM_INFO; - - -// Prototype statements for functions found within this file. -void InitEPwm1Example(void); -void InitEPwm2Example(void); -void InitEPwm3Example(void); -interrupt void epwm1_isr(void); -interrupt void epwm2_isr(void); -interrupt void epwm3_isr(void); -void update_compare(EPWM_INFO*); - -// Global variables used in this example -EPWM_INFO epwm1_info; -EPWM_INFO epwm2_info; -EPWM_INFO epwm3_info; - -// Configure the period for each timer -#define EPWM1_TIMER_TBPRD 2000 // Period register -#define EPWM1_MAX_CMPA 1950 -#define EPWM1_MIN_CMPA 50 -#define EPWM1_MAX_CMPB 1950 -#define EPWM1_MIN_CMPB 50 - -#define EPWM2_TIMER_TBPRD 2000 // Period register -#define EPWM2_MAX_CMPA 1950 -#define EPWM2_MIN_CMPA 50 -#define EPWM2_MAX_CMPB 1950 -#define EPWM2_MIN_CMPB 50 - -#define EPWM3_TIMER_TBPRD 2000 // Period register -#define EPWM3_MAX_CMPA 950 -#define EPWM3_MIN_CMPA 50 -#define EPWM3_MAX_CMPB 1950 -#define EPWM3_MIN_CMPB 1050 - -// To keep track of which way the compare value is moving -#define EPWM_CMP_UP 1 -#define EPWM_CMP_DOWN 0 - -void main(void) -{ -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - -// Step 2. Initalize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); // Skipped for this example - -// For this case just init GPIO pins for ePWM1, ePWM2, ePWM3 -// These functions are in the DSP2833x_EPwm.c file - InitEPwm1Gpio(); - InitEPwm2Gpio(); - InitEPwm3Gpio(); - -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize the PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - -// Interrupts that are used in this example are re-mapped to -// ISR functions found within this file. - EALLOW; // This is needed to write to EALLOW protected registers - PieVectTable.EPWM1_INT = &epwm1_isr; - PieVectTable.EPWM2_INT = &epwm2_isr; - PieVectTable.EPWM3_INT = &epwm3_isr; - EDIS; // This is needed to disable write to EALLOW protected registers - -// Step 4. Initialize all the Device Peripherals: -// This function is found in DSP2833x_InitPeripherals.c -// InitPeripherals(); // Not required for this example - -// For this example, only initialize the ePWM - - EALLOW; - SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0; - EDIS; - - InitEPwm1Example(); - InitEPwm2Example(); - InitEPwm3Example(); - - EALLOW; - SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; - EDIS; - -// Step 5. User specific code, enable interrupts: - -// Enable CPU INT3 which is connected to EPWM1-3 INT: - IER |= M_INT3; - -// Enable EPWM INTn in the PIE: Group 3 interrupt 1-3 - PieCtrlRegs.PIEIER3.bit.INTx1 = 1; - PieCtrlRegs.PIEIER3.bit.INTx2 = 1; - PieCtrlRegs.PIEIER3.bit.INTx3 = 1; - -// Enable global Interrupts and higher priority real-time debug events: - EINT; // Enable Global interrupt INTM - ERTM; // Enable Global realtime interrupt DBGM - -// Step 6. IDLE loop. Just sit and loop forever (optional): - for(;;) - { - asm(" NOP"); - } - -} - - -interrupt void epwm1_isr(void) -{ - // Update the CMPA and CMPB values - update_compare(&epwm1_info); - - // Clear INT flag for this timer - EPwm1Regs.ETCLR.bit.INT = 1; - - // Acknowledge this interrupt to receive more interrupts from group 3 - PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; -} - - -interrupt void epwm2_isr(void) -{ - - // Update the CMPA and CMPB values - update_compare(&epwm2_info); - - // Clear INT flag for this timer - EPwm2Regs.ETCLR.bit.INT = 1; - - // Acknowledge this interrupt to receive more interrupts from group 3 - PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; -} - -interrupt void epwm3_isr(void) -{ - - // Update the CMPA and CMPB values - update_compare(&epwm3_info); - - // Clear INT flag for this timer - EPwm3Regs.ETCLR.bit.INT = 1; - - // Acknowledge this interrupt to receive more interrupts from group 3 - PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; -} - - -void InitEPwm1Example() -{ - - // Setup TBCLK - EPwm1Regs.TBPRD = EPWM1_TIMER_TBPRD; // Set timer period 801 TBCLKs - EPwm1Regs.TBPHS.half.TBPHS = 0x0000; // Phase is 0 - EPwm1Regs.TBCTR = 0x0000; // Clear counter - - // Set Compare values - EPwm1Regs.CMPA.half.CMPA = EPWM1_MIN_CMPA; // Set compare A value - EPwm1Regs.CMPB = EPWM1_MAX_CMPB; // Set Compare B value - - // Setup counter mode - EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count up - EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // Disable phase loading - EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // Clock ratio to SYSCLKOUT - EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1; - - // Setup shadowing - EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; - EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; - EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // Load on Zero - EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; - - - // Set actions - EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // Set PWM1A on event A, up count - EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR; // Clear PWM1A on event A, down count - - EPwm1Regs.AQCTLB.bit.CBU = AQ_SET; // Set PWM1B on event B, up count - EPwm1Regs.AQCTLB.bit.CBD = AQ_CLEAR; // Clear PWM1B on event B, down count - - // Interrupt where we will change the Compare Values - EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // Select INT on Zero event - EPwm1Regs.ETSEL.bit.INTEN = 1; // Enable INT - EPwm1Regs.ETPS.bit.INTPRD = ET_3RD; // Generate INT on 3rd event - - // Information this example uses to keep track - // of the direction the CMPA/CMPB values are - // moving, the min and max allowed values and - // a pointer to the correct ePWM registers - epwm1_info.EPwm_CMPA_Direction = EPWM_CMP_UP; // Start by increasing CMPA & - epwm1_info.EPwm_CMPB_Direction = EPWM_CMP_DOWN; // decreasing CMPB - epwm1_info.EPwmTimerIntCount = 0; // Zero the interrupt counter - epwm1_info.EPwmRegHandle = &EPwm1Regs; // Set the pointer to the ePWM module - epwm1_info.EPwmMaxCMPA = EPWM1_MAX_CMPA; // Setup min/max CMPA/CMPB values - epwm1_info.EPwmMinCMPA = EPWM1_MIN_CMPA; - epwm1_info.EPwmMaxCMPB = EPWM1_MAX_CMPB; - epwm1_info.EPwmMinCMPB = EPWM1_MIN_CMPB; - -} - - -void InitEPwm2Example() -{ - - - // Setup TBCLK - EPwm2Regs.TBPRD = EPWM2_TIMER_TBPRD; // Set timer period 801 TBCLKs - EPwm2Regs.TBPHS.half.TBPHS = 0x0000; // Phase is 0 - EPwm2Regs.TBCTR = 0x0000; // Clear counter - - // Set Compare values - EPwm2Regs.CMPA.half.CMPA = EPWM2_MIN_CMPA; // Set compare A value - EPwm2Regs.CMPB = EPWM2_MIN_CMPB; // Set Compare B value - - // Setup counter mode - EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count up - EPwm2Regs.TBCTL.bit.PHSEN = TB_DISABLE; // Disable phase loading - EPwm2Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // Clock ratio to SYSCLKOUT - EPwm2Regs.TBCTL.bit.CLKDIV = TB_DIV1; - - // Setup shadowing - EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; - EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; - EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // Load on Zero - EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; - - - // Set actions - EPwm2Regs.AQCTLA.bit.CAU = AQ_SET; // Set PWM2A on event A, up count - EPwm2Regs.AQCTLA.bit.CBD = AQ_CLEAR; // Clear PWM2A on event B, down count - - EPwm2Regs.AQCTLB.bit.ZRO = AQ_CLEAR; // Clear PWM2B on zero - EPwm2Regs.AQCTLB.bit.PRD = AQ_SET ; // Set PWM2B on period - - // Interrupt where we will change the Compare Values - EPwm2Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // Select INT on Zero event - EPwm2Regs.ETSEL.bit.INTEN = 1; // Enable INT - EPwm2Regs.ETPS.bit.INTPRD = ET_3RD; // Generate INT on 3rd event - - // Information this example uses to keep track - // of the direction the CMPA/CMPB values are - // moving, the min and max allowed values and - // a pointer to the correct ePWM registers - epwm2_info.EPwm_CMPA_Direction = EPWM_CMP_UP; // Start by increasing CMPA & - epwm2_info.EPwm_CMPB_Direction = EPWM_CMP_UP; // increasing CMPB - epwm2_info.EPwmTimerIntCount = 0; // Zero the interrupt counter - epwm2_info.EPwmRegHandle = &EPwm2Regs; // Set the pointer to the ePWM module - epwm2_info.EPwmMaxCMPA = EPWM2_MAX_CMPA; // Setup min/max CMPA/CMPB values - epwm2_info.EPwmMinCMPA = EPWM2_MIN_CMPA; - epwm2_info.EPwmMaxCMPB = EPWM2_MAX_CMPB; - epwm2_info.EPwmMinCMPB = EPWM2_MIN_CMPB; - -} - -void InitEPwm3Example(void) -{ - - - // Setup TBCLK - EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;// Count up/down - EPwm3Regs.TBPRD = EPWM3_TIMER_TBPRD; // Set timer period - EPwm3Regs.TBCTL.bit.PHSEN = TB_DISABLE; // Disable phase loading - EPwm3Regs.TBPHS.half.TBPHS = 0x0000; // Phase is 0 - EPwm3Regs.TBCTR = 0x0000; // Clear counter - EPwm3Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // Clock ratio to SYSCLKOUT - EPwm3Regs.TBCTL.bit.CLKDIV = TB_DIV1; - - // Setup shadow register load on ZERO - EPwm3Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; - EPwm3Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; - EPwm3Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; - EPwm3Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; - - // Set Compare values - EPwm3Regs.CMPA.half.CMPA = EPWM3_MIN_CMPA; // Set compare A value - EPwm3Regs.CMPB = EPWM3_MAX_CMPB; // Set Compare B value - - // Set Actions - EPwm3Regs.AQCTLA.bit.PRD = AQ_SET; // Set PWM3A on period - EPwm3Regs.AQCTLA.bit.CBD = AQ_CLEAR; // Clear PWM3A on event B, down count - - EPwm3Regs.AQCTLB.bit.PRD = AQ_CLEAR; // Clear PWM3A on period - EPwm3Regs.AQCTLB.bit.CAU = AQ_SET; // Set PWM3A on event A, up count - - // Interrupt where we will change the Compare Values - EPwm3Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // Select INT on Zero event - EPwm3Regs.ETSEL.bit.INTEN = 1; // Enable INT - EPwm3Regs.ETPS.bit.INTPRD = ET_3RD; // Generate INT on 3rd event - - // Information this example uses to keep track - // of the direction the CMPA/CMPB values are - // moving, the min and max allowed values and - // a pointer to the correct ePWM registers - epwm3_info.EPwm_CMPA_Direction = EPWM_CMP_UP; // Start by increasing CMPA & - epwm3_info.EPwm_CMPB_Direction = EPWM_CMP_DOWN; // decreasing CMPB - epwm3_info.EPwmTimerIntCount = 0; // Zero the interrupt counter - epwm3_info.EPwmRegHandle = &EPwm3Regs; // Set the pointer to the ePWM module - epwm3_info.EPwmMaxCMPA = EPWM3_MAX_CMPA; // Setup min/max CMPA/CMPB values - epwm3_info.EPwmMinCMPA = EPWM3_MIN_CMPA; - epwm3_info.EPwmMaxCMPB = EPWM3_MAX_CMPB; - epwm3_info.EPwmMinCMPB = EPWM3_MIN_CMPB; - -} - - - -void update_compare(EPWM_INFO *epwm_info) -{ - - - // Every 10'th interrupt, change the CMPA/CMPB values - if(epwm_info->EPwmTimerIntCount == 10) - { - epwm_info->EPwmTimerIntCount = 0; - - // If we were increasing CMPA, check to see if - // we reached the max value. If not, increase CMPA - // else, change directions and decrease CMPA - if(epwm_info->EPwm_CMPA_Direction == EPWM_CMP_UP) - { - if(epwm_info->EPwmRegHandle->CMPA.half.CMPA < epwm_info->EPwmMaxCMPA) - { - epwm_info->EPwmRegHandle->CMPA.half.CMPA++; - } - else - { - epwm_info->EPwm_CMPA_Direction = EPWM_CMP_DOWN; - epwm_info->EPwmRegHandle->CMPA.half.CMPA--; - } - } - - // If we were decreasing CMPA, check to see if - // we reached the min value. If not, decrease CMPA - // else, change directions and increase CMPA - else - { - if(epwm_info->EPwmRegHandle->CMPA.half.CMPA == epwm_info->EPwmMinCMPA) - { - epwm_info->EPwm_CMPA_Direction = EPWM_CMP_UP; - epwm_info->EPwmRegHandle->CMPA.half.CMPA++; - } - else - { - epwm_info->EPwmRegHandle->CMPA.half.CMPA--; - } - } - - // If we were increasing CMPB, check to see if - // we reached the max value. If not, increase CMPB - // else, change directions and decrease CMPB - if(epwm_info->EPwm_CMPB_Direction == EPWM_CMP_UP) - { - if(epwm_info->EPwmRegHandle->CMPB < epwm_info->EPwmMaxCMPB) - { - epwm_info->EPwmRegHandle->CMPB++; - } - else - { - epwm_info->EPwm_CMPB_Direction = EPWM_CMP_DOWN; - epwm_info->EPwmRegHandle->CMPB--; - } - } - - // If we were decreasing CMPB, check to see if - // we reached the min value. If not, decrease CMPB - // else, change directions and increase CMPB - - else - { - if(epwm_info->EPwmRegHandle->CMPB == epwm_info->EPwmMinCMPB) - { - epwm_info->EPwm_CMPB_Direction = EPWM_CMP_UP; - epwm_info->EPwmRegHandle->CMPB++; - } - else - { - epwm_info->EPwmRegHandle->CMPB--; - } - } - } - else - { - epwm_info->EPwmTimerIntCount++; - } - - return; -} - - - -//=========================================================================== -// No more. -//=========================================================================== diff --git a/Source/External/v120/DSP2833x_examples/epwm_updown_aq/Example_2833xEPwmUpDownAQ.gel b/Source/External/v120/DSP2833x_examples/epwm_updown_aq/Example_2833xEPwmUpDownAQ.gel deleted file mode 100644 index 017de80..0000000 --- a/Source/External/v120/DSP2833x_examples/epwm_updown_aq/Example_2833xEPwmUpDownAQ.gel +++ /dev/null @@ -1,40 +0,0 @@ -/* -// TI File $Revision: /main/5 $ -// Checkin $Date: August 9, 2007 17:14:28 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// project. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -menuitem "DSP2833x ePWM UpDown AQ" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xEPwmUpDownAQ.pjt"); - GEL_ProjectBuild("Example_2833xEPwmUpDownAQ.pjt"); -} - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xEPwmUpDownAQ.out"); - Setup_WatchWindow(); -} - -hotmenu Setup_WatchWindow() -{ - GEL_WatchReset(); - GEL_WatchAdd("EPwm1Regs,x"); - GEL_WatchAdd("EPwm2Regs,x"); - GEL_WatchAdd("EPwm3Regs,x"); -} - - - - diff --git a/Source/External/v120/DSP2833x_examples/epwm_updown_aq/Example_2833xEPwmUpDownAQ.pjt b/Source/External/v120/DSP2833x_examples/epwm_updown_aq/Example_2833xEPwmUpDownAQ.pjt deleted file mode 100644 index 56449fe..0000000 --- a/Source/External/v120/DSP2833x_examples/epwm_updown_aq/Example_2833xEPwmUpDownAQ.pjt +++ /dev/null @@ -1,46 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\epwm_updown_aq\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CpuTimers.c" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_EPwm.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xEPwmUpDownAQ.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\epwm_updown_aq\Debug" -fs"C:\tidcs\c28\DSP2833x\006\DSP2833x_examples\epwm_Symmetric_aq\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" --float_support=fpu32 -ml -mt -v28 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\epwm_updown_aq\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -ecode_start -m".\Debug\Example_2833xEPwmUpDownAQ.map" -o".\Debug\Example_2833xEPwmUpDownAQ.out" -stack0x380 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xEPwmUpDownAQ.out" -x - diff --git a/Source/External/v120/DSP2833x_examples/eqep_freqcal/Example_2833xEqep_freqcal.c b/Source/External/v120/DSP2833x_examples/eqep_freqcal/Example_2833xEqep_freqcal.c deleted file mode 100644 index 443b1b7..0000000 --- a/Source/External/v120/DSP2833x_examples/eqep_freqcal/Example_2833xEqep_freqcal.c +++ /dev/null @@ -1,178 +0,0 @@ -// TI File $Revision: /main/12 $ -// Checkin $Date: July 10, 2008 11:07:26 $ -//########################################################################### -// -// FILE: Example_2833xEqep_freqcal.c -// -// TITLE: Frequency measurement using EQEP peripheral -// -// ASSUMPTIONS: -// -// This program requires the DSP2833x header files. -// As supplied, this project is configured for "boot to SARAM" operation. -// -// Test requires the following hardware connections -// -// GPIO20/EQEP1A <- External input - connect to GPIO0/EPWM1A -// -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// DESCRIPTION: -// -// This test will provide frequency measurement using capture unit (freqhz_pr) -// and unit time out (freqhz_fr). The EPWM1A frequency will be measured by the EQEP. -// -// By default, EPWM1A is configured to generate a frequency of 5 kHz - measured -// frequency found in freqhz_pr and freqhz_fr should be 5000. -// -// See DESCRIPTION in Example_freqcal.c for more details on the frequency calculation -// performed in this example. -// -// In addition to this file, the following files must be included in this project: -// Example_freqcal.c - includes all eQEP functions -// Example_EPwmSetup.c - sets up EPWM1A for use with this example -// Example_freqcalh - includes initialization values for frequency structure. -// -// * Maximum frequency is configured to 10Khz (BaseFreq) -// * Minimum frequency is assumed at 50Hz for capture pre-scalar selection -// -// SPEED_FR: High Frequency Measurement is obtained by counting the external input pulses -// for 10ms (unit timer set to 100Hz). -// -// SPEED_FR = { (Count Delta)/10ms } -// -// -// SPEED_PR: Low Frequency Measurement is obtained by measuring time period of input edges. -// Time measurement is averaged over 64edges for better results and -// capture unit performs the time measurement using pre-scaled SYSCLK -// -// Note that pre-scaler for capture unit clock is selected such that -// capture timer does not overflow at the required minimum frequency -// -// This example runs forever until the user stops it. -// -// -// Watch Variables: freq.freqhz_fr - Frequency measurement using position counter/unit time out -// freq.freqhz_pr - Frequency measurement using capture unit -// -//########################################################################### -// Original Author: SD -// -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File -#include "Example_freqcal.h" // Example specific include file - -void EPwmSetup(void); -interrupt void prdTick(void); - -FREQCAL freq=FREQCAL_DEFAULTS; - -void main(void) -{ - -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - -// Step 2. Initalize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); // Skipped for this example - -// Only init the GPIO for EQep1 and EPwm1 in this case -// This function is found in DSP2833x_EQep.c - InitEQep1Gpio(); - InitEPwm1Gpio(); - -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize the PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - -// Interrupts that are used in this example are re-mapped to -// ISR functions found within this file. - EALLOW; // This is needed to write to EALLOW protected registers - PieVectTable.EPWM1_INT= &prdTick; - EDIS; // This is needed to disable write to EALLOW protected registers - -// Step 4. Initialize all the Device Peripherals: -// Example specific ePWM setup. This function is found -// in Example_EPwmSetup.c - EPwmSetup(); - -// Step 5. User specific code, enable interrupts: -// Enable CPU INT1 which is connected to CPU-Timer 0: - IER |= M_INT3; - -// Enable TINT0 in the PIE: Group 3 interrupt 1 - PieCtrlRegs.PIEIER3.bit.INTx1 = 1; - -// Enable global Interrupts and higher priority real-time debug events: - EINT; // Enable Global interrupt INTM - ERTM; // Enable Global realtime interrupt DBGM - - freq.init(&freq); // Initializes eQEP for frequency calculation in - // FREQCAL_Init(void)function in Example_EPwmSetup.c - for(;;) - { - } - -} - -interrupt void prdTick(void) // Interrupts once per ePWM period -{ - freq.calc(&freq); // Checks for event and calculates frequency in FREQCAL_Calc(FREQCAL *p) - // function in Example_EPwmSetup.c - // Acknowledge this interrupt to receive more interrupts from group 1 - PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; - EPwm1Regs.ETCLR.bit.INT=1; -} - diff --git a/Source/External/v120/DSP2833x_examples/eqep_freqcal/Example_2833xEqep_freqcal.gel b/Source/External/v120/DSP2833x_examples/eqep_freqcal/Example_2833xEqep_freqcal.gel deleted file mode 100644 index e76a9e2..0000000 --- a/Source/External/v120/DSP2833x_examples/eqep_freqcal/Example_2833xEqep_freqcal.gel +++ /dev/null @@ -1,37 +0,0 @@ -/* -// TI File $Revision: /main/6 $ -// Checkin $Date: August 9, 2007 17:14:43 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// projectn. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -menuitem "DSP2833x eQEP Frequency Calc" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xEqep_freqcal.pjt"); - GEL_ProjectBuild("Example_2833xEqep_freqcal.pjt"); - Setup_WatchWindow(); -} - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xEqep_freqcal.out"); - Setup_WatchWindow(); -} - -hotmenu Setup_WatchWindow() -{ - GEL_WatchReset(); - GEL_WatchAdd("freq.freqhz_fr",,""); - GEL_WatchAdd("freq.freqhz_pr",,""); - GEL_WatchAdd("EQep1Regs,x"); -} diff --git a/Source/External/v120/DSP2833x_examples/eqep_freqcal/Example_2833xEqep_freqcal.pjt b/Source/External/v120/DSP2833x_examples/eqep_freqcal/Example_2833xEqep_freqcal.pjt deleted file mode 100644 index 46676a4..0000000 --- a/Source/External/v120/DSP2833x_examples/eqep_freqcal/Example_2833xEqep_freqcal.pjt +++ /dev/null @@ -1,49 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\eqep_freqcal\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="CustomBuilder" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_EPwm.c" -Source="..\..\DSP2833x_common\source\DSP2833x_EQep.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="..\..\DSP2833x_common\lib\IQmath_fpu32.lib" -Source="Example_2833xEqep_freqcal.c" -Source="Example_EPwmSetup.c" -Source="Example_freqcal.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\eqep_freqcal\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\eqep_freqcal\Debug" -i".." -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -i"..\..\DSP2833x_common\lib" -d"_DEBUG" -d"LARGE_MODEL" -ml -mt -v28 --float_support=fpu32 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\eqep_freqcal\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -ecode_start -m".\Debug\Example_2833xEqep_freqcal.map" -o".\Debug\Example_2833xEqep_freqcal.out" -stack0x380 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xEqep_freqcal.out" -x \ No newline at end of file diff --git a/Source/External/v120/DSP2833x_examples/eqep_freqcal/Example_EPwmSetup.c b/Source/External/v120/DSP2833x_examples/eqep_freqcal/Example_EPwmSetup.c deleted file mode 100644 index 9f5aa7f..0000000 --- a/Source/External/v120/DSP2833x_examples/eqep_freqcal/Example_EPwmSetup.c +++ /dev/null @@ -1,76 +0,0 @@ -// TI File $Revision: /main/10 $ -// Checkin $Date: April 21, 2008 15:42:03 $ -//########################################################################### -// -// FILE: Example_EpwmSetup.c -// -// TITLE: Frequency measurement using EQEP peripheral -// -// DESCRIPTION: -// -// This file contains source for the ePWM initialization for the -// freq calculation module -// -//########################################################################### -// Original Author: SD -// -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File -#include "Example_freqcal.h" // Example specific include file - -#if (CPU_FRQ_150MHZ) - #define CPU_CLK 150e6 -#endif -#if (CPU_FRQ_100MHZ) - #define CPU_CLK 100e6 -#endif -#define PWM_CLK 5e3 // If diff freq. desired, change freq here. -#define SP CPU_CLK/(2*PWM_CLK) -#define TBCTLVAL 0x200E // Up-down cnt, timebase = SYSCLKOUT - - -void EPwmSetup() -{ - InitEPwm1Gpio(); - EPwm1Regs.TBSTS.all=0; - EPwm1Regs.TBPHS.half.TBPHS=0; - EPwm1Regs.TBCTR=0; - - EPwm1Regs.CMPCTL.all=0x50; // Immediate mode for CMPA and CMPB - EPwm1Regs.CMPA.half.CMPA =SP/2; - EPwm1Regs.CMPB=0; - - EPwm1Regs.AQCTLA.all=0x60; // EPWMxA = 1 when CTR=CMPA and counter inc - // EPWMxA = 0 when CTR=CMPA and counter dec - EPwm1Regs.AQCTLB.all=0; - EPwm1Regs.AQSFRC.all=0; - EPwm1Regs.AQCSFRC.all=0; - - EPwm1Regs.DBCTL.all=0xb; // EPWMxB is inverted - EPwm1Regs.DBRED=0; - EPwm1Regs.DBFED=0; - - EPwm1Regs.TZSEL.all=0; - EPwm1Regs.TZCTL.all=0; - EPwm1Regs.TZEINT.all=0; - EPwm1Regs.TZFLG.all=0; - EPwm1Regs.TZCLR.all=0; - EPwm1Regs.TZFRC.all=0; - - EPwm1Regs.ETSEL.all=9; // Interrupt when TBCTR = 0x0000 - EPwm1Regs.ETPS.all=1; // Interrupt on first event - EPwm1Regs.ETFLG.all=0; - EPwm1Regs.ETCLR.all=0; - EPwm1Regs.ETFRC.all=0; - - EPwm1Regs.PCCTL.all=0; - - EPwm1Regs.TBCTL.all=0x0010+TBCTLVAL; // Enable Timer - EPwm1Regs.TBPRD=SP; - -} - - diff --git a/Source/External/v120/DSP2833x_examples/eqep_freqcal/Example_freqcal.c b/Source/External/v120/DSP2833x_examples/eqep_freqcal/Example_freqcal.c deleted file mode 100644 index 500705e..0000000 --- a/Source/External/v120/DSP2833x_examples/eqep_freqcal/Example_freqcal.c +++ /dev/null @@ -1,186 +0,0 @@ -// TI File $Revision: /main/10 $ -// Checkin $Date: April 21, 2008 15:42:07 $ -//########################################################################### -// -// FILE: Example_freqcal.c -// -// TITLE: Frequency measurement using EQEP peripheral -// -// DESCRIPTION: -// -// This file includes the EQEP initialization and frequency calcuation -// functions called by Example_2833xEqep_freqcal.c. The frequency calculation -// steps performed by FREQCAL_Calc()at SYSCLKOUT = 150 MHz and 100 MHz are -// described below: -// -// For 150 MHz Operation: -// ---------------------- -// -// 1. This program calculates: **freqhz_fr** -// freqhz_fr or v = (x2-x1)/T - Equation 1 -// -// If max/base freq = 10kHz: 10kHz = (x2-x1)/(2/100Hz) - Equation 2 -// max (x2-x1) = 200 counts = freqScaler_fr -// Note: T = 2/100Hz. 2 is from (x2-x1)/2 - because QPOSCNT counts 2 edges per cycle -// (rising and falling) -// -// If both sides of Equation 2 are divided by 10 kHz, then: -// 1 = (x2-x1)/[10kHz*(2/100Hz)] where [10kHz* (2/100Hz)] = 200 -// Because (x2-x1) must be <200 (max), -// (x2-x1)/200 < 1 for all frequencies less than max -// freq_fr = (x2-x1)/200 or (x2-x1)/[10kHz*(2/100Hz)] - Equation 3 -// -// To get back to original velocity equation, Equation 1, multiply Equation 3 by 10 kHz -// freqhz_fr (or velocity) = 10kHz*(x2-x1)/[10kHz*(2/100Hz)] -// = (x2-x1)/(2/100Hz) - Final equation -// -// 2. min freq = 1 count/(2/100Hz) = 50 Hz -// -// 3. **freqhz_pr** -// freqhz_pr or v = X/(t2-t1) - Equation 4 -// -// If max/base freq = 10kHz: 10kHz = (4/2)/T = 4/2T -// where 4 = QCAPCTL [UPPS] (Unit timeout - once every 4 edges) -// 2 = divide by 2 because QPOSCNT counts 2 edges per cycle (rising and falling) -// T = time in seconds -// = t2-t1/(150MHz/128), t2-t1= # of QCAPCLK cycles, and -// 1 QCAPCLK cycle = 1/(150MHz/128) -// = QCPRDLAT -// -// So: 10 kHz = 4(150MHz/128)/2(t2-t1) -// t2-t1 = 4(150MHz/128)/(10kHz*2) = (150MHz/128)/(2*10kHz/4) - Equation 5 -// = 234 QCAPCLK cycles = maximum (t2-t1) = freqScaler_pr -// -// Divide both sides by (t2-t1), and: -// 1 = 234/(t2-t1) = [150MHz/128)/(2*10kHz/4)]/(t2-t1) -// Because (t2-t1) must be <234 (max). -// 234/(t2-t1) < 1 for all frequencies less than max -// freq_pr = 234/(t2-t1) or [150MHz/128)/(2*10kHz/4)]/(t2-t1) - Equation 6 -// Now within velocity limits, to get back to original velocity equation, Equation 1, -// multiply Equation 6 by 10 kHz: -// freqhz_fr (or velocity) = 10kHz*[150MHz/128)/(2*10kHz/4)]/(t2-t1) -// = (105MHz/128)*4/[2(t2-t1)] -// or 4/[2*(t2-t1)(QCPRDLAT)] - Final Equation -// -// -// For 100 MHz Operation: -// ---------------------- -// -// The same calculations as above are performed, but with 100 MHz -// instead of 150MHz when calculating freqhz_pr, and at UPPS of 8 instead of 4. -// The value for freqScaler_pr becomes: (100MHz/128)/(2*10kHz/8) = 313 -// More detailed calculation results can be found in the Example_freqcal.xls -// spreadsheet included in the example folder. -// -// -// This file contains source for the freq calculation module -// -//########################################################################### -// Original Author: SD -// -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File -#include "Example_freqcal.h" // Example specific include file - -void FREQCAL_Init(void) -{ - #if (CPU_FRQ_150MHZ) - EQep1Regs.QUPRD=1500000; // Unit Timer for 100Hz at 150MHz SYSCLKOUT - #endif - #if (CPU_FRQ_100MHZ) - EQep1Regs.QUPRD=1000000; // Unit Timer for 100Hz at 100MHz SYSCLKOUT - #endif - - EQep1Regs.QDECCTL.bit.QSRC=2; // Up count mode (freq. measurement) - EQep1Regs.QDECCTL.bit.XCR=0; // 2x resolution (cnt falling and rising edges) - - EQep1Regs.QEPCTL.bit.FREE_SOFT=2; - EQep1Regs.QEPCTL.bit.PCRM=00; // QPOSCNT reset on index evnt - EQep1Regs.QEPCTL.bit.UTE=1; // Unit Timer Enable - EQep1Regs.QEPCTL.bit.QCLM=1; // Latch on unit time out - EQep1Regs.QPOSMAX=0xffffffff; - EQep1Regs.QEPCTL.bit.QPEN=1; // QEP enable - - #if (CPU_FRQ_150MHZ) - EQep1Regs.QCAPCTL.bit.UPPS=2; // 1/4 for unit position at 150MHz SYSCLKOUT - #endif - #if (CPU_FRQ_100MHZ) - EQep1Regs.QCAPCTL.bit.UPPS=3; // 1/8 for unit position at 100MHz SYSCLKOUT - #endif - - EQep1Regs.QCAPCTL.bit.CCPS=7; // 1/128 for CAP clock - EQep1Regs.QCAPCTL.bit.CEN=1; // QEP Capture Enable - -} - -void FREQCAL_Calc(FREQCAL *p) -{ - unsigned long tmp; - _iq newp,oldp; - - -//**** Freq Calcultation using QEP position counter ****// -// Check unit Time out-event for speed calculation: -// Unit Timer is configured for 100Hz in INIT function - -// For a more detailed explanation of the calculation, read -// the description at the top of this file - - if(EQep1Regs.QFLG.bit.UTO==1) // Unit Timeout event - { - /** Differentiator **/ - newp=EQep1Regs.QPOSLAT; // Latched POSCNT value - oldp=p->oldpos; - - if (newp>oldp) - tmp = newp - oldp; // x2-x1 in v=(x2-x1)/T equation - else - tmp = (0xFFFFFFFF-oldp)+newp; - - p->freq_fr = _IQdiv(tmp,p->freqScaler_fr); // p->freq_fr = (x2-x1)/(T*10KHz) - tmp=p->freq_fr; - - if (tmp>=_IQ(1)) // is freq greater than max freq (10KHz for this example)? - p->freq_fr = _IQ(1); - else - p->freq_fr = tmp; - - p->freqhz_fr = _IQmpy(p->BaseFreq,p->freq_fr); // Q0 = Q0*GLOBAL_Q => _IQXmpy(), X = GLOBAL_Q - // p->freqhz_fr = (p->freq_fr)*10kHz = (x2-x1)/T - - // Update position counter - p->oldpos = newp; - //======================================= - - EQep1Regs.QCLR.bit.UTO=1; // Clear interrupt flag - } - -//**** Freq Calcultation using QEP capture counter ****// - if(EQep1Regs.QEPSTS.bit.UPEVNT==1) // Unit Position Event - { - if(EQep1Regs.QEPSTS.bit.COEF==0) // No Capture overflow - tmp=(unsigned long)EQep1Regs.QCPRDLAT; - else // Capture overflow, saturate the result - tmp=0xFFFF; - - p->freq_pr = _IQdiv(p->freqScaler_pr,tmp); // p->freq_pr = X/[(t2-t1)*10KHz] - tmp=p->freq_pr; - - if (tmp>_IQ(1)) - p->freq_pr = _IQ(1); - else - p->freq_pr = tmp; - - p->freqhz_pr = _IQmpy(p->BaseFreq,p->freq_pr); // Q0 = Q0*GLOBAL_Q => _IQXmpy(), X = GLOBAL_Q - // p->freqhz_pr =( p->freq_pr)*10kHz = X/(t2-t1) - EQep1Regs.QEPSTS.all=0x88; // Clear Unit position event flag - // Clear overflow error flag - } - - -} - - diff --git a/Source/External/v120/DSP2833x_examples/eqep_freqcal/Example_freqcal.h b/Source/External/v120/DSP2833x_examples/eqep_freqcal/Example_freqcal.h deleted file mode 100644 index 874e66f..0000000 --- a/Source/External/v120/DSP2833x_examples/eqep_freqcal/Example_freqcal.h +++ /dev/null @@ -1,112 +0,0 @@ -// TI File $Revision: /main/6 $ -// Checkin $Date: August 9, 2007 17:14:59 $ -//########################################################################### -// -// FILE: Example_freqcal.h -// -// TITLE: Frequency measurement using EQEP peripheral -// -// DESCRIPTION: -// -// Header file containing data type and object definitions and -// initializers. -// -//########################################################################### -// Original Author: SD -// -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#ifndef __FREQCAL__ -#define __FREQCAL__ - -#include "IQmathLib.h" // Include header for IQmath library -/*----------------------------------------------------------------------------- -Define the structure of the FREQCAL Object ------------------------------------------------------------------------------*/ -typedef struct { - Uint32 freqScaler_pr; // Parameter : Scaler converting 1/N cycles to a GLOBAL_Q freq (Q0) - independently with global Q - Uint32 freqScaler_fr; // Parameter : Scaler converting 1/N cycles to a GLOBAL_Q freq (Q0) - independently with global Q - Uint32 BaseFreq; // Parameter : Maximum Freq - _iq freq_pr; // Output : Freq in per-unit using capture unit - int32 freqhz_pr; // Output: Freq in Hz, measured using Capture unit - Uint32 oldpos; - _iq freq_fr; // Output : Freq in per-unit using position counter - int32 freqhz_fr; // Output: Freq in Hz, measured using Capture unit - void (*init)(); // Pointer to the init funcion - void (*calc)(); // Pointer to the calc funtion - } FREQCAL; - -/*----------------------------------------------------------------------------- -Define a QEP_handle ------------------------------------------------------------------------------*/ -typedef FREQCAL *FREQCAL_handle; - -/*----------------------------------------------------------------------------- -Default initializer for the FREQCAL Object. ------------------------------------------------------------------------------*/ - - -#if (CPU_FRQ_150MHZ) - #define FREQCAL_DEFAULTS {\ - 234,200,10000,0,0,\ - 0,0,0,\ - (void (*)(long))FREQCAL_Init,\ - (void (*)(long))FREQCAL_Calc } -#endif -#if (CPU_FRQ_100MHZ) - #define FREQCAL_DEFAULTS {\ - 313,200,10000,0,0,\ - 0,0,0,\ - (void (*)(long))FREQCAL_Init,\ - (void (*)(long))FREQCAL_Calc } -#endif - -/*----------------------------------------------------------------------------- -Prototypes for the functions in Example_freqcal.c ------------------------------------------------------------------------------*/ -void FREQCAL_Init(void); -void FREQCAL_Calc(FREQCAL_handle); - -#endif /* __FREQCAL__ */ - -/* Notes: - -For 150 MHz Operation: ----------------------- -1. freqScaler_fr - v = (x2-x1)/T - Equation 1 - - If max/base freq = 10kHz: 10kHz = (x2-x1)/(2/100Hz) - Equation 2 - max (x2-x1) = 200 counts = freqScaler_fr - Note: T = 2/100Hz. 2 is from (x2-x1)/2 - because QPOSCNT counts 2 edges per cycle - (rising and falling) - freqhz_fr = 200 default - -2. min freq = 1 count/(2/100Hz) = 50 Hz - -3. freqScaler_pr - v = X/(t2-t1) - Equation 4 - - If max/base freq = 10kHz: 10kHz = 8/(2T) - where 4 = QCAPCTL [UPPS] (Unit timeout - once every 4 edges) - T = time in seconds = t2-t1/(150MHz/128), t2-t1= # of QCAPCLK cycles, and - 1 QCAPCLK cycle = 1/(150MHz/128) - = QCPRDLAT - So: 10 kHz = 4(150MHz/128)/2(t2-t1) - t2-t1 = 4(150MHz/128)/(10kHz*2) = (150MHz/128)/(2*10kHz/4) - Equation 5 - = 234 seconds = maximum (t2-t1) = freqScaler_pr - freqhz_pr = 234 default - - -For 100 MHz Operation: ----------------------- - -The same calculations as above are performed, but with 100 MHz -instead of 150MHz when calculation freqhr_pr, and at UPPS of 8 instead of 4. -The value for freqScaler_pr becomes: (100MHz/128)/(2*10kHz/8) = 313 -More detailed calculation results can be found in the Example_freqcal.xls -spreadsheet included in the example folder. - -*/ diff --git a/Source/External/v120/DSP2833x_examples/eqep_freqcal/Example_freqcal.xls b/Source/External/v120/DSP2833x_examples/eqep_freqcal/Example_freqcal.xls deleted file mode 100644 index a7128d2d72eee8a03a556d932b7f015f12dbcc66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16896 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 A3;+NC diff --git a/Source/External/v120/DSP2833x_examples/eqep_pos_speed/Example_2833xEqep_pos_speed.c b/Source/External/v120/DSP2833x_examples/eqep_pos_speed/Example_2833xEqep_pos_speed.c deleted file mode 100644 index 9475939..0000000 --- a/Source/External/v120/DSP2833x_examples/eqep_pos_speed/Example_2833xEqep_pos_speed.c +++ /dev/null @@ -1,201 +0,0 @@ -// TI File $Revision: /main/11 $ -// Checkin $Date: July 10, 2008 11:06:28 $ -//########################################################################### -// -// FILE: Example_2833xEqep_pos_speed_.c -// -// TITLE: EQEP Speed and Position measurement -// -// ASSUMPTIONS: -// -// This program requires the DSP2833x header files. -// -// Test requires the following hardware connections from EPWM1 and -// GPIO pins (simulating QEP sensor) to QEP peripheral -// -// GPIO20/EQEP1A <- GPIO0/EPWM1A (simulates EQEP Phase A signal) -// GPIO21/EQEP1B <- GPIO1/EPWM1B (simulates EQEP Phase B signal) -// GPIO23/EQEP1I <- GPIO4 (simulates EQEP Index Signal) -// -// -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// DESCRIPTION: -// -// This test will provide position measurement, speed measurement using the capture unit, and -// speed measurement using unit time out. This example uses the IQMath library. It is used -// merely to simplify high-precision calculations. -// -// See DESCRIPTION in Example_posspeed.c for more details on the calculations -// performed in this example. -// -// In addition to this file, the following files must be included in this project: -// Example_posspeed.c - includes all eQEP functions -// Example_EPwmSetup.c - sets up EPWM1A and EPWM1B as simulated QA and QB encoder signals -// Example_posspeed.h - includes initialization values for pos and speed structure -// -// Notes: -// * Maximum speed is configured to 6000rpm(BaseRpm) -// * Minimum speed is assumed at 10rpm for capture pre-scalar selection -// * Pole pair is configured to 2 (pole_pairs) -// * QEP Encoder resolution is configured to 4000counts/revolution (mech_scaler) -// which means: 4000/4 = 1000 line/revolution quadrature encoder (simulated by EPWM1) -// * EPWM1 (simulating QEP encoder signals) is configured for 5kHz frequency or 300 rpm -// (=4*5000 cnts/sec * 60 sec/min)/4000 cnts/rev) -// * 300 rpm EPWM1 speed will be measured by EQEP. -// -// SPEEDRPM_FR: High Speed Measurement is obtained by counting the QEP input pulses -// for 10ms (unit timer set to 100Hz). -// -// SPEEDRPM_FR = { (Position Delta)/10ms } * 60 rpm -// -// -// SPEEDRPM_PR: Low Speed Measurement is obtained by measuring time period of QEP edges. -// Time measurement is averaged over 64edges for better results and -// capture unit performs the time measurement using pre-scaled SYSCLK -// -// Note that pre-scaler for capture unit clock is selected such that -// capture timer does not overflow at the required minimum RPM speed -// -// Watch Variables: qep_posspeed.SpeedRpm_fr - Speed meas. in rpm using QEP position counter -// qep_posspeed.SpeedRpm_pr - Speed meas. in rpm using capture unit -// qep_posspeed.theta_mech - Motor mechanical angle (Q15) -// qep_posspeed.theta_elec - Motor electrical angle (Q15) -// -//########################################################################### -// Original Author S.D. -// -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File -#include "Example_posspeed.h" // Example specific Include file - -void initEpwm(); -interrupt void prdTick(void); - -POSSPEED qep_posspeed=POSSPEED_DEFAULTS; -Uint16 Interrupt_Count = 0; - -void main(void) -{ - -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); -// Step 2. Initalize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); // Skipped for this example - -// For this case only init GPIO for eQEP1 and ePWM1 -// This function is found in DSP2833x_EQep.c - InitEQep1Gpio(); - InitEPwm1Gpio(); - EALLOW; - GpioCtrlRegs.GPADIR.bit.GPIO4 = 1; // GPIO4 as output simulates Index signal - GpioDataRegs.GPACLEAR.bit.GPIO4 = 1; // Normally low - EDIS; -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize the PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - -// Interrupts that are used in this example are re-mapped to -// ISR functions found within this file. - EALLOW; // This is needed to write to EALLOW protected registers - PieVectTable.EPWM1_INT= &prdTick; - EDIS; // This is needed to disable write to EALLOW protected registers - -// Step 4. Initialize all the Device Peripherals: - initEpwm(); // This function exists in Example_EPwmSetup.c - -// Step 5. User specific code, enable interrupts: -// Enable CPU INT1 which is connected to CPU-Timer 0: - IER |= M_INT3; - -// Enable TINT0 in the PIE: Group 3 interrupt 1 - PieCtrlRegs.PIEIER3.bit.INTx1 = 1; - -// Enable global Interrupts and higher priority real-time debug events: - EINT; // Enable Global interrupt INTM - ERTM; // Enable Global realtime interrupt DBGM - - qep_posspeed.init(&qep_posspeed); - - for(;;) - { - } - -} - - -interrupt void prdTick(void) // EPWM1 Interrupts once every 4 QCLK counts (one period) -{ Uint16 i; - // Position and Speed measurement - qep_posspeed.calc(&qep_posspeed); - - // Control loop code for position control & Speed contol - Interrupt_Count++; - if (Interrupt_Count==1000) // Every 1000 interrupts(4000 QCLK counts or 1 rev.) - { - EALLOW; - GpioDataRegs.GPASET.bit.GPIO4 = 1; // Pulse Index signal (1 pulse/rev.) - for (i=0; i<700; i++){ - } - GpioDataRegs.GPACLEAR.bit.GPIO4 = 1; - Interrupt_Count = 0; // Reset count - EDIS; - } - - // Acknowledge this interrupt to receive more interrupts from group 1 - PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; - EPwm1Regs.ETCLR.bit.INT=1; -} - diff --git a/Source/External/v120/DSP2833x_examples/eqep_pos_speed/Example_2833xEqep_pos_speed.gel b/Source/External/v120/DSP2833x_examples/eqep_pos_speed/Example_2833xEqep_pos_speed.gel deleted file mode 100644 index eb40b6a..0000000 --- a/Source/External/v120/DSP2833x_examples/eqep_pos_speed/Example_2833xEqep_pos_speed.gel +++ /dev/null @@ -1,39 +0,0 @@ -/* -// TI File $Revision: /main/6 $ -// Checkin $Date: August 9, 2007 17:15:15 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// project. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -menuitem "DSP2833x eQEP Posspeed" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xEqep_pos_speed.pjt"); - GEL_ProjectBuild("Example_2833xEqep_pos_speed.pjt"); - Setup_WatchWindow(); -} - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xEqep_pos_speed.out"); - Setup_WatchWindow(); -} - -hotmenu Setup_WatchWindow() -{ - GEL_WatchReset(); - GEL_WatchAdd("qep_posspeed.SpeedRpm_fr",,""); - GEL_WatchAdd("qep_posspeed.SpeedRpm_pr",,""); - GEL_WatchAdd("qep_posspeed.theta_mech",,""); - GEL_WatchAdd("qep_posspeed.theta_elec",,""); - GEL_WatchAdd("EQep1Regs,x"); -} diff --git a/Source/External/v120/DSP2833x_examples/eqep_pos_speed/Example_2833xEqep_pos_speed.pjt b/Source/External/v120/DSP2833x_examples/eqep_pos_speed/Example_2833xEqep_pos_speed.pjt deleted file mode 100644 index 1463168..0000000 --- a/Source/External/v120/DSP2833x_examples/eqep_pos_speed/Example_2833xEqep_pos_speed.pjt +++ /dev/null @@ -1,56 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\eqep_pos_speed\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="CustomBuilder" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_EPwm.c" -Source="..\..\DSP2833x_common\source\DSP2833x_EQep.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="..\..\DSP2833x_common\lib\IQmath_fpu32.lib" -Source="Example_2833xEqep_pos_speed.c" -Source="Example_EPwmSetup.c" -Source="Example_posspeed.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\eqep_pos_speed\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\eqep_pos_speed\Debug" -i".." -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -i"..\..\DSP2833x_common\lib" -d"_DEBUG" -d"LARGE_MODEL" -ml -mt -v28 --float_support=fpu32 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\eqep_pos_speed\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -ecode_start -m".\Debug\Example_2833xEqep_pos_speed.map" -o".\Debug\Example_2833xEqep_pos_speed.out" -stack0x380 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xEqep_pos_speed.out" -x - -["..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" Settings: "Debug"] -LinkOrder=1 - -["..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" Settings: "Release"] - - diff --git a/Source/External/v120/DSP2833x_examples/eqep_pos_speed/Example_EPwmSetup.c b/Source/External/v120/DSP2833x_examples/eqep_pos_speed/Example_EPwmSetup.c deleted file mode 100644 index 9d4ef5a..0000000 --- a/Source/External/v120/DSP2833x_examples/eqep_pos_speed/Example_EPwmSetup.c +++ /dev/null @@ -1,69 +0,0 @@ -// TI File $Revision: /main/9 $ -// Checkin $Date: April 21, 2008 15:42:18 $ -//########################################################################### -// -// FILE: Example_EpwmSetup.c -// -// TITLE: Pos speed measurement using EQEP peripheral -// -// DESCRIPTION: -// -// This file contains source for the ePWM initialization for the -// pos/speed module -// -//########################################################################### -// Original Author: SD -// -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File -#include "Example_posspeed.h" // Example specific Include file - -#if (CPU_FRQ_150MHZ) - #define CPU_CLK 150e6 -#endif -#if (CPU_FRQ_100MHZ) - #define CPU_CLK 100e6 -#endif - -#define PWM_CLK 5e3 // 5kHz (300rpm) EPWM1 frequency. Freq. can be changed here -#define SP CPU_CLK/(2*PWM_CLK) -#define TBCTLVAL 0x200E // up-down count, timebase=SYSCLKOUT - - -void initEpwm() -{ - EPwm1Regs.TBSTS.all=0; - EPwm1Regs.TBPHS.half.TBPHS =0; - EPwm1Regs.TBCTR=0; - - EPwm1Regs.CMPCTL.all=0x50; // immediate mode for CMPA and CMPB - EPwm1Regs.CMPA.half.CMPA=SP/2; - EPwm1Regs.CMPB=0; - - EPwm1Regs.AQCTLA.all=0x60; // CTR=CMPA when inc->EPWM1A=1, when dec->EPWM1A=0 - EPwm1Regs.AQCTLB.all=0x09; // CTR=PRD ->EPWM1B=1, CTR=0 ->EPWM1B=0 - EPwm1Regs.AQSFRC.all=0; - EPwm1Regs.AQCSFRC.all=0; - - EPwm1Regs.TZSEL.all=0; - EPwm1Regs.TZCTL.all=0; - EPwm1Regs.TZEINT.all=0; - EPwm1Regs.TZFLG.all=0; - EPwm1Regs.TZCLR.all=0; - EPwm1Regs.TZFRC.all=0; - - EPwm1Regs.ETSEL.all=0x0A; // Interrupt on PRD - EPwm1Regs.ETPS.all=1; - EPwm1Regs.ETFLG.all=0; - EPwm1Regs.ETCLR.all=0; - EPwm1Regs.ETFRC.all=0; - - EPwm1Regs.PCCTL.all=0; - - EPwm1Regs.TBCTL.all=0x0010+TBCTLVAL; // Enable Timer - EPwm1Regs.TBPRD=SP; -} - diff --git a/Source/External/v120/DSP2833x_examples/eqep_pos_speed/Example_posspeed.c b/Source/External/v120/DSP2833x_examples/eqep_pos_speed/Example_posspeed.c deleted file mode 100644 index 7b25307..0000000 --- a/Source/External/v120/DSP2833x_examples/eqep_pos_speed/Example_posspeed.c +++ /dev/null @@ -1,245 +0,0 @@ -// TI File $Revision: /main/9 $ -// Checkin $Date: April 21, 2008 15:42:23 $ -//########################################################################### -// -// FILE: Example_posspeed.c -// -// TITLE: Pos/speed measurement using EQEP peripheral -// -// DESCRIPTION: -// -// This file includes the EQEP initialization and position and speed calcuation -// functions called by Example_2833xEqep_posspeed.c. The position and -// speed calculation steps performed by POSSPEED_Calc() at SYSCLKOUT = 150 MHz -// and 100 MHz are described in detail below: -// -// For 150 MHz Operation: -// ---------------------- -// -// 1. This program calculates: **theta_mech** -// -// theta_mech = QPOSCNT/mech_Scaler = QPOSCNT/4000, where 4000 is the number of -// counts in 1 revolution.(4000/4 = 1000 line/rev. quadrature encoder) -// -// 2. This program calculates: **theta_elec** -// -// theta_elec = (# pole pairs) * theta_mech = 2*QPOSCNT/4000 for this example -// -// 3. This program calculates: **SpeedRpm_fr** -// -// SpeedRpm_fr = [(x2-x1)/4000]/T - Equation 1 -// Note (x2-x1) = difference in number of QPOSCNT counts. Dividing (x2-x1) by -// 4000 gives position relative to Index in one revolution. -// If base RPM = 6000 rpm: 6000 rpm = [(x2-x1)/4000]/10ms - Equation 2 -// = [(x2-x1)/4000]/(.01s*1 min/60 sec) -// = [(x2-x1)/4000]/(1/6000) min -// max (x2-x1) = 4000 counts, or 1 revolution in 10 ms -// -// -// If both sides of Equation 2 are divided by 6000 rpm, then: -// 1 = [(x2-x1)/4000] rev./[(1/6000) min * 6000rpm] -// Because (x2-x1) must be <4000 (max) for QPOSCNT increment, -// (x2-x1)/4000 < 1 for CW rotation -// And because (x2-x1) must be >-4000 for QPOSCNT decrement, -// (x2-x1)/4000>-1 for CCW rotation -// speed_fr = [(x2-x1)/4000]/[(1/6000) min * 6000rpm] -// = (x2-x1)/4000 - Equation 3 -// -// To convert speed_fr to RPM, multiply Equation 3 by 6000 rpm -// SpeedRpm_fr = 6000rpm *(x2-x1)/4000 - Final Equation -// -// -// 2. **min rpm ** = selected at 10 rpm based on CCPS prescaler options available (128 is greatest) -// -// 3. **SpeedRpm_pr** -// SpeedRpm_pr = X/(t2-t1) - Equation 4 -// where X = QCAPCTL [UPPS]/4000 rev. (position relative to Index in 1 revolution) -// If max/base speed = 6000 rpm: 6000 = (32/4000)/[(t2-t1)/(150MHz/128)] -// where 32 = QCAPCTL [UPPS] (Unit timeout - once every 32 edges) -// 32/4000 = position in 1 revolution (position as a fraction of 1 revolution) -// t2-t1/(150MHz/128), t2-t1= # of QCAPCLK cycles, and -// 1 QCAPCLK cycle = 1/(150MHz/128) -// = QCPRDLAT -// -// So: 6000 rpm = [32(150MHz/128)*60s/min]/[4000(t2-t1)] -// t2-t1 = [32(150MHz/128)*60 s/min]/(4000*6000rpm) - Equation 5 -// = 94 CAPCLK cycles = maximum (t2-t1) = SpeedScaler -// -// Divide both sides by (t2-t1), and: -// 1 = 94/(t2-t1) = [32(150MHz/128)*60 s/min]/(4000*6000rpm)]/(t2-t1) -// Because (t2-t1) must be < 94 for QPOSCNT increment: -// 94/(t2-t1) < 1 for CW rotation -// And because (t2-t1) must be >-94 for QPOSCNT decrement: -// 94/(t2-t1)> -1 for CCW rotation -// -// speed_pr = 94/(t2-t1) -// or [32(150MHz/128)*60 s/min]/(4000*6000rpm)]/(t2-t1) - Equation 6 -// -// To convert speed_pr to RPM: -// Multiply Equation 6 by 6000rpm: -// SpeedRpm_fr = 6000rpm * [32(150MHz/128)*60 s/min]/[4000*6000rpm*(t2-t1)] -// = [32(150MHz/128)*60 s/min]/[4000*(t2-t1)] -// or [(32/4000)rev * 60 s/min]/[(t2-t1)(QCPRDLAT)]- Final Equation -// -// -// For 100 MHz Operation: -// ---------------------- -// -// The same calculations as above are performed, but with 100 MHz -// instead of 150MHz when calculating SpeedRpm_pr. -// The value for freqScaler_pr becomes: [32*(100MHz/128)*60s/min]/(4000*6000rpm) = 63 -// More detailed calculation results can be found in the Example_freqcal.xls -// spreadsheet included in the example folder. -// -// -// -// This file contains source for the posspeed module -// -//########################################################################### -// Original Author: SD -// -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File -#include "Example_posspeed.h" // Example specific Include file - -void POSSPEED_Init(void) -{ - - #if (CPU_FRQ_150MHZ) - EQep1Regs.QUPRD=1500000; // Unit Timer for 100Hz at 150 MHz SYSCLKOUT - #endif - #if (CPU_FRQ_100MHZ) - EQep1Regs.QUPRD=1000000; // Unit Timer for 100Hz at 100 MHz SYSCLKOUT - #endif - - EQep1Regs.QDECCTL.bit.QSRC=00; // QEP quadrature count mode - - EQep1Regs.QEPCTL.bit.FREE_SOFT=2; - EQep1Regs.QEPCTL.bit.PCRM=00; // PCRM=00 mode - QPOSCNT reset on index event - EQep1Regs.QEPCTL.bit.UTE=1; // Unit Timeout Enable - EQep1Regs.QEPCTL.bit.QCLM=1; // Latch on unit time out - EQep1Regs.QPOSMAX=0xffffffff; - EQep1Regs.QEPCTL.bit.QPEN=1; // QEP enable - - EQep1Regs.QCAPCTL.bit.UPPS=5; // 1/32 for unit position - EQep1Regs.QCAPCTL.bit.CCPS=7; // 1/128 for CAP clock - EQep1Regs.QCAPCTL.bit.CEN=1; // QEP Capture Enable - - -} - -void POSSPEED_Calc(POSSPEED *p) -{ - long tmp; - unsigned int pos16bval,temp1; - _iq Tmp1,newp,oldp; - -//**** Position calculation - mechanical and electrical motor angle ****// - p->DirectionQep = EQep1Regs.QEPSTS.bit.QDF; // Motor direction: 0=CCW/reverse, 1=CW/forward - - pos16bval=(unsigned int)EQep1Regs.QPOSCNT; // capture position once per QA/QB period - p->theta_raw = pos16bval+ p->cal_angle; // raw theta = current pos. + ang. offset from QA - - // The following lines calculate p->theta_mech ~= QPOSCNT/mech_scaler [current cnt/(total cnt in 1 rev.)] - // where mech_scaler = 4000 cnts/revolution - tmp = (long)((long)p->theta_raw*(long)p->mech_scaler); // Q0*Q26 = Q26 - tmp &= 0x03FFF000; - p->theta_mech = (int)(tmp>>11); // Q26 -> Q15 - p->theta_mech &= 0x7FFF; - - // The following lines calculate p->elec_mech - p->theta_elec = p->pole_pairs*p->theta_mech; // Q0*Q15 = Q15 - p->theta_elec &= 0x7FFF; - -// Check an index occurrence - if (EQep1Regs.QFLG.bit.IEL == 1) - { - p->index_sync_flag = 0x00F0; - EQep1Regs.QCLR.bit.IEL=1; // Clear interrupt flag - } - - - -//**** High Speed Calcultation using QEP Position counter ****// -// Check unit Time out-event for speed calculation: -// Unit Timer is configured for 100Hz in INIT function - - if(EQep1Regs.QFLG.bit.UTO==1) // If unit timeout (one 100Hz period) - { - /** Differentiator **/ - // The following lines calculate position = (x2-x1)/4000 (position in 1 revolution) - pos16bval=(unsigned int)EQep1Regs.QPOSLAT; // Latched POSCNT value - tmp = (long)((long)pos16bval*(long)p->mech_scaler); // Q0*Q26 = Q26 - tmp &= 0x03FFF000; - tmp = (int)(tmp>>11); // Q26 -> Q15 - tmp &= 0x7FFF; - newp=_IQ15toIQ(tmp); - oldp=p->oldpos; - - if (p->DirectionQep==0) // POSCNT is counting down - { - if (newp>oldp) - Tmp1 = - (_IQ(1) - newp + oldp); // x2-x1 should be negative - else - Tmp1 = newp -oldp; - } - else if (p->DirectionQep==1) // POSCNT is counting up - { - if (newp_IQ(1)) - p->Speed_fr = _IQ(1); - else if (Tmp1<_IQ(-1)) - p->Speed_fr = _IQ(-1); - else - p->Speed_fr = Tmp1; - - // Update the electrical angle - p->oldpos = newp; - - // Change motor speed from pu value to rpm value (Q15 -> Q0) - // Q0 = Q0*GLOBAL_Q => _IQXmpy(), X = GLOBAL_Q - p->SpeedRpm_fr = _IQmpy(p->BaseRpm,p->Speed_fr); - //======================================= - - EQep1Regs.QCLR.bit.UTO=1; // Clear interrupt flag - } - -//**** Low-speed computation using QEP capture counter ****// - if(EQep1Regs.QEPSTS.bit.UPEVNT==1) // Unit position event - { - if(EQep1Regs.QEPSTS.bit.COEF==0) // No Capture overflow - temp1=(unsigned long)EQep1Regs.QCPRDLAT; // temp1 = t2-t1 - else // Capture overflow, saturate the result - temp1=0xFFFF; - - p->Speed_pr = _IQdiv(p->SpeedScaler,temp1); // p->Speed_pr = p->SpeedScaler/temp1 - Tmp1=p->Speed_pr; - - if (Tmp1>_IQ(1)) - p->Speed_pr = _IQ(1); - else - p->Speed_pr = Tmp1; - - // Convert p->Speed_pr to RPM - if (p->DirectionQep==0) // Reverse direction = negative - p->SpeedRpm_pr = -_IQmpy(p->BaseRpm,p->Speed_pr); // Q0 = Q0*GLOBAL_Q => _IQXmpy(), X = GLOBAL_Q - else // Forward direction = positive - p->SpeedRpm_pr = _IQmpy(p->BaseRpm,p->Speed_pr); // Q0 = Q0*GLOBAL_Q => _IQXmpy(), X = GLOBAL_Q - - - EQep1Regs.QEPSTS.all=0x88; // Clear Unit position event flag - // Clear overflow error flag - } - - -} - - diff --git a/Source/External/v120/DSP2833x_examples/eqep_pos_speed/Example_posspeed.h b/Source/External/v120/DSP2833x_examples/eqep_pos_speed/Example_posspeed.h deleted file mode 100644 index 14d1761..0000000 --- a/Source/External/v120/DSP2833x_examples/eqep_pos_speed/Example_posspeed.h +++ /dev/null @@ -1,85 +0,0 @@ -// TI File $Revision: /main/6 $ -// Checkin $Date: August 9, 2007 17:15:33 $ -//########################################################################### -// -// FILE: Example_posspeed.h -// -// TITLE: Pos/speed measurement using EQEP peripheral -// -// DESCRIPTION: -// -// Header file containing data type and object definitions and -// initializers. -// -//########################################################################### -// Original Author: SD -// -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#ifndef __POSSPEED__ -#define __POSSPEED__ - -#include "IQmathLib.h" // Include header for IQmath library -/*----------------------------------------------------------------------------- -Define the structure of the POSSPEED Object ------------------------------------------------------------------------------*/ -typedef struct {int theta_elec; // Output: Motor Electrical angle (Q15) - int theta_mech; // Output: Motor Mechanical Angle (Q15) - int DirectionQep; // Output: Motor rotation direction (Q0) - int QEP_cnt_idx; // Variable: Encoder counter index (Q0) - int theta_raw; // Variable: Raw angle from Timer 2 (Q0) - int mech_scaler; // Parameter: 0.9999/total count, total count = 4000 (Q26) - int pole_pairs; // Parameter: Number of pole pairs (Q0) - int cal_angle; // Parameter: Raw angular offset between encoder and phase a (Q0) - int index_sync_flag; // Output: Index sync status (Q0) - - Uint32 SpeedScaler; // Parameter : Scaler converting 1/N cycles to a GLOBAL_Q speed (Q0) - independently with global Q - _iq Speed_pr; // Output : speed in per-unit - Uint32 BaseRpm; // Parameter : Scaler converting GLOBAL_Q speed to rpm (Q0) speed - independently with global Q - int32 SpeedRpm_pr; // Output : speed in r.p.m. (Q0) - independently with global Q - - _iq oldpos; // Input: Electrical angle (pu) - _iq Speed_fr; // Output : speed in per-unit - int32 SpeedRpm_fr; // Output : Speed in rpm (Q0) - independently with global Q - void (*init)(); // Pointer to the init funcion - void (*calc)(); // Pointer to the calc funtion - } POSSPEED; - -/*----------------------------------------------------------------------------- -Define a POSSPEED_handle ------------------------------------------------------------------------------*/ -typedef POSSPEED *POSSPEED_handle; - -/*----------------------------------------------------------------------------- -Default initializer for the POSSPEED Object. ------------------------------------------------------------------------------*/ - -#if (CPU_FRQ_150MHZ) - #define POSSPEED_DEFAULTS {0x0, 0x0,0x0,0x0,0x0,16776,2,0,0x0,\ - 94,0,6000,0,\ - 0,0,0,\ - (void (*)(long))POSSPEED_Init,\ - (void (*)(long))POSSPEED_Calc } -#endif -#if (CPU_FRQ_100MHZ) - #define POSSPEED_DEFAULTS {0x0, 0x0,0x0,0x0,0x0,16776,2,0,0x0,\ - 63,0,6000,0,\ - 0,0,0,\ - (void (*)(long))POSSPEED_Init,\ - (void (*)(long))POSSPEED_Calc } -#endif - - -/*----------------------------------------------------------------------------- -Prototypes for the functions in posspeed.c ------------------------------------------------------------------------------*/ -void POSSPEED_Init(void); -void POSSPEED_Calc(POSSPEED_handle); - -#endif /* __POSSPEED__ */ - - - - diff --git a/Source/External/v120/DSP2833x_examples/eqep_pos_speed/Example_posspeed.xls b/Source/External/v120/DSP2833x_examples/eqep_pos_speed/Example_posspeed.xls deleted file mode 100644 index 367b4e9332573955b4be230d2648200896e1bccf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16896 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 R_-gvp{1^S_yEt9`e*jM}?#KWD diff --git a/Source/External/v120/DSP2833x_examples/external_interrupt/Example_2833xExternalInterrupt.c b/Source/External/v120/DSP2833x_examples/external_interrupt/Example_2833xExternalInterrupt.c deleted file mode 100644 index 903a088..0000000 --- a/Source/External/v120/DSP2833x_examples/external_interrupt/Example_2833xExternalInterrupt.c +++ /dev/null @@ -1,260 +0,0 @@ -// TI File $Revision: /main/10 $ -// Checkin $Date: May 5, 2008 15:25:49 $ -//########################################################################### -// -// FILE: Example_2833xExternalInterrupt.c -// -// TITLE: DSP2833x External Interrupt test program. -// -// ASSUMPTIONS: -// -// This program requires the DSP2833x header files. -// As supplied, this project is configured for "boot to SARAM" operation. -// -// Connect GPIO30 to GPIO0. GPIO0 will be assigned to Xint1 -// Connect GPIO31 to GPIO1. GPIO1 will be assigned to XINT2 -// -// Monitor GPIO34 with an oscilloscope. GPIO34 will be high outside of the -// ISRs and low within each ISR. -// -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// DESCRIPTION: -// -// This program sets up GPIO0 as Xint1 and GPIO1 as XINT2. Two other -// GPIO signals are used to trigger the interrupt (GPIO30 triggers -// Xint1 and GPIO31 triggers XINT2). The user is required to -// externally connect these signals for the program to work -// properly. -// -// Xint1 input is synched to SYSCLKOUT -// XINT2 has a long qualification - 6 samples at 510*SYSCLKOUT each. -// -// GPIO34 will go high outside of the interrupts and low within the -// interrupts. This signal can be monitored on a scope. -// -// Each interrupt is fired in sequence - Xint1 first and then XINT2 -// -// -// Watch Variables: -// Xint1Count for the number of times through Xint1 interrupt -// Xint2Count for the number of times through XINT2 interrupt -// LoopCount for the number of times through the idle loop -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File - -// Prototype statements for functions found within this file. -interrupt void xint1_isr(void); -interrupt void xint2_isr(void); - -// Global variables for this example -volatile Uint32 Xint1Count; -volatile Uint32 Xint2Count; -Uint32 LoopCount; - -#define DELAY 35.700L - -void main(void) -{ - Uint32 TempX1Count; - Uint32 TempX2Count; - -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - -// Step 2. Initalize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); // Skipped for this example - -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - -// Interrupts that are used in this example are re-mapped to -// ISR functions found within this file. - EALLOW; // This is needed to write to EALLOW protected registers - PieVectTable.XINT1 = &xint1_isr; - PieVectTable.XINT2 = &xint2_isr; - EDIS; // This is needed to disable write to EALLOW protected registers - -// Step 4. Initialize all the Device Peripherals: -// This function is found in DSP2833x_InitPeripherals.c -// InitPeripherals(); // Not required for this example - -// Step 5. User specific code, enable interrupts: - -// Clear the counters - Xint1Count = 0; // Count Xint1 interrupts - Xint2Count = 0; // Count XINT2 interrupts - LoopCount = 0; // Count times through idle loop - -// Enable Xint1 and XINT2 in the PIE: Group 1 interrupt 4 & 5 -// Enable int1 which is connected to WAKEINT: - PieCtrlRegs.PIECTRL.bit.ENPIE = 1; // Enable the PIE block - PieCtrlRegs.PIEIER1.bit.INTx4 = 1; // Enable PIE Gropu 1 INT4 - PieCtrlRegs.PIEIER1.bit.INTx5 = 1; // Enable PIE Gropu 1 INT5 - IER |= M_INT1; // Enable CPU int1 - EINT; // Enable Global Interrupts - -// GPIO30 & GPIO31 are outputs, start GPIO30 high and GPIO31 low - EALLOW; - GpioDataRegs.GPASET.bit.GPIO30 = 1; // Load the output latch - GpioCtrlRegs.GPAMUX2.bit.GPIO30 = 0; // GPIO - GpioCtrlRegs.GPADIR.bit.GPIO30 = 1; // output - - GpioDataRegs.GPACLEAR.bit.GPIO31 = 1; // Load the output latch - GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 0; // GPIO - GpioCtrlRegs.GPADIR.bit.GPIO31 = 1; // output - EDIS; - -// GPIO0 and GPIO1 are inputs - EALLOW; - GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0; // GPIO - GpioCtrlRegs.GPADIR.bit.GPIO0 = 0; // input - GpioCtrlRegs.GPAQSEL1.bit.GPIO0 = 0; // Xint1 Synch to SYSCLKOUT only - - GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 0; // GPIO - GpioCtrlRegs.GPADIR.bit.GPIO1 = 0; // input - GpioCtrlRegs.GPAQSEL1.bit.GPIO1 = 2; // XINT2 Qual using 6 samples - GpioCtrlRegs.GPACTRL.bit.QUALPRD0 = 0xFF; // Each sampling window is 510*SYSCLKOUT - EDIS; - -// GPIO0 is XINT1, GPIO1 is XINT2 - EALLOW; - GpioIntRegs.GPIOXINT1SEL.bit.GPIOSEL = 0; // Xint1 is GPIO0 - GpioIntRegs.GPIOXINT2SEL.bit.GPIOSEL = 1; // XINT2 is GPIO1 - EDIS; - -// Configure XINT1 - XIntruptRegs.XINT1CR.bit.POLARITY = 0; // Falling edge interrupt - XIntruptRegs.XINT2CR.bit.POLARITY = 1; // Rising edge interrupt - -// Enable XINT1 and XINT2 - XIntruptRegs.XINT1CR.bit.ENABLE = 1; // Enable Xint1 - XIntruptRegs.XINT2CR.bit.ENABLE = 1; // Enable XINT2 - - -// GPIO34 will go low inside each interrupt. Monitor this on a scope - EALLOW; - GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 0; // GPIO - GpioCtrlRegs.GPBDIR.bit.GPIO34 = 1; // output - EDIS; - -// Step 6. IDLE loop: - for(;;) - { - - TempX1Count = Xint1Count; - TempX2Count = Xint2Count; - - // Trigger both XINT1 - GpioDataRegs.GPBSET.bit.GPIO34 = 1; // GPIO34 is high - GpioDataRegs.GPACLEAR.bit.GPIO30 = 1; // Lower GPIO30, trigger Xint1 - while(Xint1Count == TempX1Count) {} - - // Trigger both XINT2 - - GpioDataRegs.GPBSET.bit.GPIO34 = 1; // GPIO34 is high - DELAY_US(DELAY); // Wait for Qual period - GpioDataRegs.GPASET.bit.GPIO31 = 1; // Raise GPIO31, trigger XINT2 - while(Xint2Count == TempX2Count) {} - - // Check that the counts were incremented properly and get ready - // to start over. - if(Xint1Count == TempX1Count+1 && Xint2Count == TempX2Count+1) - { - LoopCount++; - GpioDataRegs.GPASET.bit.GPIO30 = 1; // raise GPIO30 - GpioDataRegs.GPACLEAR.bit.GPIO31 = 1; // lower GPIO31 - } - else - { - asm(" ESTOP0"); // stop here - } - - } - - -} - - -// Step 7. Insert all local Interrupt Service Routines (ISRs) and functions here: - // If local ISRs are used, reassign vector addresses in vector table as - // shown in Step 5 - -interrupt void xint1_isr(void) -{ - GpioDataRegs.GPBCLEAR.all = 0x4; // GPIO34 is low - Xint1Count++; - - // Acknowledge this interrupt to get more from group 1 - PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; -} - -interrupt void xint2_isr(void) -{ - GpioDataRegs.GPBCLEAR.all = 0x4; // GPIO34 is low - Xint2Count++; - - // Acknowledge this interrupt to get more from group 1 - PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; -} - - -//=========================================================================== -// No more. -//=========================================================================== diff --git a/Source/External/v120/DSP2833x_examples/external_interrupt/Example_2833xExternalInterrupt.gel b/Source/External/v120/DSP2833x_examples/external_interrupt/Example_2833xExternalInterrupt.gel deleted file mode 100644 index f2542a3..0000000 --- a/Source/External/v120/DSP2833x_examples/external_interrupt/Example_2833xExternalInterrupt.gel +++ /dev/null @@ -1,41 +0,0 @@ -/* -// TI File $Revision: /main/5 $ -// Checkin $Date: August 9, 2007 17:15:49 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// project. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -menuitem "DSP2833x ExternalInterrupt" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xExternalInterrupt.pjt"); - GEL_ProjectBuild("Example_2833xExternalInterrupt.pjt"); - Setup_WatchWindow(); -} - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xExternalInterrupt.out"); - Setup_WatchWindow(); -} - -hotmenu Setup_WatchWindow() -{ - GEL_WatchReset(); - GEL_WatchAdd("Xint1Count,x"); - GEL_WatchAdd("Xint2Count,x"); - GEL_WatchAdd("LoopCount,x"); - GEL_WatchAdd("XIntruptRegs,x"); - GEL_WatchAdd("GpioCtrlRegs,x"); -} - - diff --git a/Source/External/v120/DSP2833x_examples/external_interrupt/Example_2833xExternalInterrupt.pjt b/Source/External/v120/DSP2833x_examples/external_interrupt/Example_2833xExternalInterrupt.pjt deleted file mode 100644 index 0e88e0e..0000000 --- a/Source/External/v120/DSP2833x_examples/external_interrupt/Example_2833xExternalInterrupt.pjt +++ /dev/null @@ -1,44 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\external_interrupt\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xExternalInterrupt.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -as -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\external_interrupt\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\external_interrupt\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" --float_support=fpu32 -ml -mt -v28 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x\DSP2833x_examples\external_interrupt\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -ecode_start -m".\Debug\Example_2833xExternalInterrupt.map" -o".\Debug\Example_2833xExternalInterrupt.out" -stack0x200 -w -x -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xExternalInterrupt.out" -x - diff --git a/Source/External/v120/DSP2833x_examples/flash/Example_28332_Flash.gel b/Source/External/v120/DSP2833x_examples/flash/Example_28332_Flash.gel deleted file mode 100644 index d254c08..0000000 --- a/Source/External/v120/DSP2833x_examples/flash/Example_28332_Flash.gel +++ /dev/null @@ -1,45 +0,0 @@ -/* -// TI File $Revision: /main/5 $ -// Checkin $Date: August 9, 2007 17:15:59 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// project. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -menuitem "DSP28332 Flash Example" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_28332_Flash.pjt"); - GEL_ProjectBuild("Example_28332_Flash.pjt"); - Setup_WatchWindow(); -} - -hotmenu Load_Symbols() -{ - GEL_SymbolLoad(".\\debug\\Example_28332_Flash.out"); - Setup_WatchWindow(); -} - -hotmenu Setup_WatchWindow() -{ - GEL_WatchReset(); - GEL_WatchAdd("EPwm1TimerIntCount,x"); - GEL_WatchAdd("EPwm2TimerIntCount,x"); - GEL_WatchAdd("EPwm3TimerIntCount,x"); - GEL_WatchAdd("LoopCount,x"); - GEL_WatchAdd("EPwm1Regs,x"); - GEL_WatchAdd("EPwm2Regs,x"); - GEL_WatchAdd("EPwm3Regs,x"); -} - - - - diff --git a/Source/External/v120/DSP2833x_examples/flash/Example_28332_Flash.pjt b/Source/External/v120/DSP2833x_examples/flash/Example_28332_Flash.pjt deleted file mode 100644 index 1d116ed..0000000 --- a/Source/External/v120/DSP2833x_examples/flash/Example_28332_Flash.pjt +++ /dev/null @@ -1,46 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\flash\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CSMPasswords.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_MemCopy.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xFlash.c" -Source="..\..\DSP2833x_common\cmd\F28332.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\flash\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\flash\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" --float_support=fpu32 -ml -mt -v28 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\flash\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -ecode_start -m".\Debug\Example_28332_Flash.map" -o".\Debug\Example_28332_Flash.out" -stack0x380 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xFlash.out" -x - diff --git a/Source/External/v120/DSP2833x_examples/flash/Example_28334_Flash.gel b/Source/External/v120/DSP2833x_examples/flash/Example_28334_Flash.gel deleted file mode 100644 index df91989..0000000 --- a/Source/External/v120/DSP2833x_examples/flash/Example_28334_Flash.gel +++ /dev/null @@ -1,45 +0,0 @@ -/* -// TI File $Revision: /main/5 $ -// Checkin $Date: August 9, 2007 17:16:06 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// project. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -menuitem "DSP28334 Flash Example" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_28334_Flash.pjt"); - GEL_ProjectBuild("Example_28334_Flash.pjt"); - Setup_WatchWindow(); -} - -hotmenu Load_Symbols() -{ - GEL_SymbolLoad(".\\debug\\Example_28334_Flash.out"); - Setup_WatchWindow(); -} - -hotmenu Setup_WatchWindow() -{ - GEL_WatchReset(); - GEL_WatchAdd("EPwm1TimerIntCount,x"); - GEL_WatchAdd("EPwm2TimerIntCount,x"); - GEL_WatchAdd("EPwm3TimerIntCount,x"); - GEL_WatchAdd("LoopCount,x"); - GEL_WatchAdd("EPwm1Regs,x"); - GEL_WatchAdd("EPwm2Regs,x"); - GEL_WatchAdd("EPwm3Regs,x"); -} - - - - diff --git a/Source/External/v120/DSP2833x_examples/flash/Example_28334_Flash.pjt b/Source/External/v120/DSP2833x_examples/flash/Example_28334_Flash.pjt deleted file mode 100644 index 74faf44..0000000 --- a/Source/External/v120/DSP2833x_examples/flash/Example_28334_Flash.pjt +++ /dev/null @@ -1,46 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\flash\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CSMPasswords.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_MemCopy.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xFlash.c" -Source="..\..\DSP2833x_common\cmd\F28334.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\flash\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\flash\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" --float_support=fpu32 -ml -mt -v28 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\flash\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -ecode_start -m".\Debug\Example_28334_Flash.map" -o".\Debug\Example_28334_Flash.out" -stack0x380 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xFlash.out" -x - diff --git a/Source/External/v120/DSP2833x_examples/flash/Example_28335_Flash.gel b/Source/External/v120/DSP2833x_examples/flash/Example_28335_Flash.gel deleted file mode 100644 index daf0d95..0000000 --- a/Source/External/v120/DSP2833x_examples/flash/Example_28335_Flash.gel +++ /dev/null @@ -1,45 +0,0 @@ -/* -// TI File $Revision: /main/5 $ -// Checkin $Date: August 9, 2007 17:16:14 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// project. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -menuitem "DSP28335 Flash Example" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_28335_Flash.pjt"); - GEL_ProjectBuild("Example_28335_Flash.pjt"); - Setup_WatchWindow(); -} - -hotmenu Load_Symbols() -{ - GEL_SymbolLoad(".\\debug\\Example_28335_Flash.out"); - Setup_WatchWindow(); -} - -hotmenu Setup_WatchWindow() -{ - GEL_WatchReset(); - GEL_WatchAdd("EPwm1TimerIntCount,x"); - GEL_WatchAdd("EPwm2TimerIntCount,x"); - GEL_WatchAdd("EPwm3TimerIntCount,x"); - GEL_WatchAdd("LoopCount,x"); - GEL_WatchAdd("EPwm1Regs,x"); - GEL_WatchAdd("EPwm2Regs,x"); - GEL_WatchAdd("EPwm3Regs,x"); -} - - - - diff --git a/Source/External/v120/DSP2833x_examples/flash/Example_28335_Flash.pjt b/Source/External/v120/DSP2833x_examples/flash/Example_28335_Flash.pjt deleted file mode 100644 index 766eeb9..0000000 --- a/Source/External/v120/DSP2833x_examples/flash/Example_28335_Flash.pjt +++ /dev/null @@ -1,46 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\flash\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CSMPasswords.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_MemCopy.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xFlash.c" -Source="..\..\DSP2833x_common\cmd\F28335.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\flash\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\flash\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" --float_support=fpu32 -ml -mt -v28 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\flash\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -ecode_start -m".\Debug\Example_28335_Flash.map" -o".\Debug\Example_28335_Flash.out" -stack0x380 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xFlash.out" -x - diff --git a/Source/External/v120/DSP2833x_examples/flash/Example_2833xFlash.c b/Source/External/v120/DSP2833x_examples/flash/Example_2833xFlash.c deleted file mode 100644 index 7e7d4db..0000000 --- a/Source/External/v120/DSP2833x_examples/flash/Example_2833xFlash.c +++ /dev/null @@ -1,342 +0,0 @@ -// TI File $Revision: /main/10 $ -// Checkin $Date: April 21, 2008 15:42:33 $ -//########################################################################### -// -// FILE: Example_2833xFlash.c -// -// TITLE: DSP2833x ePWM Timer Interrupt From Flash Example. -// -// ASSUMPTIONS: -// -// This program requires the DSP2833x header files. -// -// As supplied, this project is configured for "boot to FLASH" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash <- "boot to Flash" -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// DESCRIPTION: -// -// This example runs the ePWM interrupt example from flash. -// -// 1) Build the project -// 2) Flash the .out file into the device. -// 3) Set the hardware jumpers to boot to Flash -// 4) Use the included GEL file to load the project, symbols -// defined within the project and the variables into the watch -// window. -// -// Steps that were taken to convert the ePWM example from RAM -// to Flash execution: -// -// - Change the linker cmd file to reflect the flash memory map. -// - Make sure any initialized sections are mapped to Flash. -// In SDFlash utility this can be checked by the View->Coff/Hex -// status utility. Any section marked as "load" should be -// allocated to Flash. -// - Make sure there is a branch instruction from the entry to Flash -// at 0x33FFF6 to the beginning of code execution. This example -// uses the DSP2833x_CodeStartBranch.asm file to accomplish this. -// - Set boot mode Jumpers to "boot to Flash" -// - For best performance from the flash, modify the waitstates -// and enable the flash pipeline as shown in this example. -// Note: any code that manipulates the flash waitstate and pipeline -// control must be run from RAM. Thus these functions are located -// in their own memory section called ramfuncs. -// -// -// ePwm1 Interrupt will run from RAM and puts the flash into sleep mode -// ePwm2 Interrupt will run from RAM and puts the flash into standby mode -// ePWM3 Interrupt will run from FLASH -// -// As supplied: -// -// All timers have the same period -// The timers are started sync'ed -// An interrupt is taken on a zero event for each ePWM timer -// -// ePWM1: takes an interrupt every event -// ePWM2: takes an interrupt every 2nd event -// ePWM3: takes an interrupt every 3rd event -// -// Thus the Interrupt count for ePWM1, ePWM4-ePWM6 should be equal -// The interrupt count for ePWM2 should be about half that of ePWM1 -// and the interrupt count for ePWM3 should be about 1/3 that of ePWM1 -// -// Watch Variables: -// EPwm1TimerIntCount -// EPwm2TimerIntCount -// EPwm3TimerIntCount -// -// Toggle GPIO32 while in the background loop. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File - -// Configure which ePWM timer interrupts are enabled at the PIE level: -// 1 = enabled, 0 = disabled -#define PWM1_INT_ENABLE 1 -#define PWM2_INT_ENABLE 1 -#define PWM3_INT_ENABLE 1 - -// Configure the period for each timer -#define PWM1_TIMER_TBPRD 0x1FFF -#define PWM2_TIMER_TBPRD 0x1FFF -#define PWM3_TIMER_TBPRD 0x1FFF - -// Make this long enough so that we can see an LED toggle -#define DELAY 1000000L - -// Functions that will be run from RAM need to be assigned to -// a different section. This section will then be mapped using -// the linker cmd file. -#pragma CODE_SECTION(epwm1_timer_isr, "ramfuncs"); -#pragma CODE_SECTION(epwm2_timer_isr, "ramfuncs"); - -// Prototype statements for functions found within this file. -interrupt void epwm1_timer_isr(void); -interrupt void epwm2_timer_isr(void); -interrupt void epwm3_timer_isr(void); -void InitEPwmTimer(void); - -// Global variables used in this example -Uint32 EPwm1TimerIntCount; -Uint32 EPwm2TimerIntCount; -Uint32 EPwm3TimerIntCount; -Uint32 LoopCount; - -// These are defined by the linker (see F28335.cmd) -extern Uint16 RamfuncsLoadStart; -extern Uint16 RamfuncsLoadEnd; -extern Uint16 RamfuncsRunStart; - -void main(void) -{ - -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - -// Step 2. Initalize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); // Skipped for this example - - -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize the PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - -// Interrupts that are used in this example are re-mapped to -// ISR functions found within this file. - EALLOW; // This is needed to write to EALLOW protected registers - PieVectTable.EPWM1_INT = &epwm1_timer_isr; - PieVectTable.EPWM2_INT = &epwm2_timer_isr; - PieVectTable.EPWM3_INT = &epwm3_timer_isr; - EDIS; // This is needed to disable write to EALLOW protected registers - -// Step 4. Initialize all the Device Peripherals: -// This function is found in DSP2833x_InitPeripherals.c -// InitPeripherals(); // Not required for this example - InitEPwmTimer(); // For this example, only initialize the ePWM Timers - -// Step 5. User specific code, enable interrupts: - -// Copy time critical code and Flash setup code to RAM -// This includes the following ISR functions: epwm1_timer_isr(), epwm2_timer_isr() -// epwm3_timer_isr and and InitFlash(); -// The RamfuncsLoadStart, RamfuncsLoadEnd, and RamfuncsRunStart -// symbols are created by the linker. Refer to the F28335.cmd file. - MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart); - -// Call Flash Initialization to setup flash waitstates -// This function must reside in RAM - InitFlash(); - -// Initalize counters: - EPwm1TimerIntCount = 0; - EPwm2TimerIntCount = 0; - EPwm3TimerIntCount = 0; - LoopCount = 0; - -// Enable CPU INT3 which is connected to EPWM1-3 INT: - IER |= M_INT3; - -// Enable EPWM INTn in the PIE: Group 3 interrupt 1-3 - PieCtrlRegs.PIEIER3.bit.INTx1 = PWM1_INT_ENABLE; - PieCtrlRegs.PIEIER3.bit.INTx2 = PWM2_INT_ENABLE; - PieCtrlRegs.PIEIER3.bit.INTx3 = PWM3_INT_ENABLE; - -// Enable global Interrupts and higher priority real-time debug events: - EINT; // Enable Global interrupt INTM - ERTM; // Enable Global realtime interrupt DBGM - -// Step 6. IDLE loop. Just sit and loop forever (optional): - EALLOW; - GpioCtrlRegs.GPBMUX1.bit.GPIO32 = 0; - GpioCtrlRegs.GPBDIR.bit.GPIO32 = 1; - EDIS; - - for(;;) - { - // This loop will be interrupted, so the overall - // delay between pin toggles will be longer. - DELAY_US(DELAY); - LoopCount++; - GpioDataRegs.GPBTOGGLE.bit.GPIO32 = 1; - } - -} - - -void InitEPwmTimer() -{ - - EALLOW; - SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0; // Stop all the TB clocks - EDIS; - - // Setup Sync - EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN; // Pass through - EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN; // Pass through - EPwm3Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN; // Pass through - - // Allow each timer to be sync'ed - - EPwm1Regs.TBCTL.bit.PHSEN = TB_ENABLE; - EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE; - EPwm3Regs.TBCTL.bit.PHSEN = TB_ENABLE; - - EPwm1Regs.TBPHS.half.TBPHS = 100; - EPwm2Regs.TBPHS.half.TBPHS = 200; - EPwm3Regs.TBPHS.half.TBPHS = 300; - - EPwm1Regs.TBPRD = PWM1_TIMER_TBPRD; - EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; // Count up - EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // Select INT on Zero event - EPwm1Regs.ETSEL.bit.INTEN = PWM1_INT_ENABLE; // Enable INT - EPwm1Regs.ETPS.bit.INTPRD = ET_1ST; // Generate INT on 1st event - - - EPwm2Regs.TBPRD = PWM2_TIMER_TBPRD; - EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; // Count up - EPwm2Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // Enable INT on Zero event - EPwm2Regs.ETSEL.bit.INTEN = PWM2_INT_ENABLE; // Enable INT - EPwm2Regs.ETPS.bit.INTPRD = ET_2ND; // Generate INT on 2nd event - - - EPwm3Regs.TBPRD = PWM3_TIMER_TBPRD; - EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; // Count up - EPwm3Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // Enable INT on Zero event - EPwm3Regs.ETSEL.bit.INTEN = PWM3_INT_ENABLE; // Enable INT - EPwm3Regs.ETPS.bit.INTPRD = ET_3RD; // Generate INT on 3rd event - - EALLOW; - SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; // Start all the timers synced - EDIS; - - -} - -// This ISR MUST be executed from RAM as it will put the Flash into Sleep -// Interrupt routines uses in this example: -interrupt void epwm1_timer_isr(void) -{ - - // Put the Flash to sleep - FlashRegs.FPWR.bit.PWR = FLASH_SLEEP; - - EPwm1TimerIntCount++; - - // Clear INT flag for this timer - EPwm1Regs.ETCLR.bit.INT = 1; - - // Acknowledge this interrupt to receive more interrupts from group 3 - PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; -} - -// This ISR MUST be executed from RAM as it will put the Flash into Standby -interrupt void epwm2_timer_isr(void) -{ - EPwm2TimerIntCount++; - - // Put the Flash into standby - FlashRegs.FPWR.bit.PWR = FLASH_STANDBY; - - // Clear INT flag for this timer - EPwm2Regs.ETCLR.bit.INT = 1; - - // Acknowledge this interrupt to receive more interrupts from group 3 - PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; -} - -interrupt void epwm3_timer_isr(void) -{ - Uint16 i; - - EPwm3TimerIntCount++; - - // Short Delay to simulate some ISR Code - for(i = 1; i < 0x01FF; i++) {} - - // Clear INT flag for this timer - EPwm3Regs.ETCLR.bit.INT = 1; - - // Acknowledge this interrupt to receive more interrupts from group 3 - PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; -} - - - - -//=========================================================================== -// No more. -//=========================================================================== diff --git a/Source/External/v120/DSP2833x_examples/fpu/Example_2833xFPU.c b/Source/External/v120/DSP2833x_examples/fpu/Example_2833xFPU.c deleted file mode 100644 index 66654f2..0000000 --- a/Source/External/v120/DSP2833x_examples/fpu/Example_2833xFPU.c +++ /dev/null @@ -1,167 +0,0 @@ -// TI File $Revision: /main/2 $ -// Checkin $Date: April 21, 2008 15:44:31 $ -//########################################################################### -// -// FILE: Example_2833xFPU.c -// -// TITLE: DSP2833x Device Getting Started Program. -// -// ASSUMPTIONS: -// -// This program requires the DSP2833x header files. -// -// Other then boot mode configuration, no other hardware configuration -// is required. -// -// -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// DESCRIPTION: -// -// The code calculates two y=mx+b equations. The variables are all -// 32-bit floating-point. -// -// Two projects are supplied: -// -// Example_fpu_hardware.pjt (floating-point): -// -// If the Example_2833xFPU_hardware.pjt file is used then the compiler -// will generate floating point instructions to do these calculations. -// To compile the project for floating point, the following Build Options were used: -// 1. Project->Build Options-> Compiler Tab-> Advanced category: -// a. in textbox: compiler options -v28 --float_support=fpu32 are set -// b. OR the following is equivalent to "a.": pull-down menu next to -// "Floating Point Support"-> "fpu32" selected. -// 2. Project->Build Options-> Linker Tab-> Libraries category: -// a. runtime support library used is rts2800_fpu32.lib. -// 3. Not included in this example: If the project includes any other libraries, -// they must also be compiled with floating point instructions. -// -// Example_fpu_software.pjt (fixed-point emulates floating-point with software): -// -// If the Example_2833xFPU_software.pjt file is used, then the compiler -// will only used fixed point instructions. This means the runtime -// support library will be used to emulate floating point. -// This will also run on C28x devices without the floating point unit. -// To compile the project for fixed point, the following Build Options were used: -// 1. Project->Build Options-> Compiler Tab-> Advanced category: -// a. in textbox: compiler option --float_support=fpu32 is REMOVED -// -v28 should not be removed -// b. OR the following is equivalent to "a.": pull-down menu next to -// "Floating Point Support"-> "None" selected. -// 2. Project->Build Options-> Linker Tab-> Libraries category: -// a. runtime support library used is rts2800.lib or rts2800_ml.lib. -// 3. Not included in this example: If the project includes any other libraries, -// they must also be compiled with fixed point instructions. -// -// Watch Variables: -// y1 -// y2 -// FPU registers (optional) -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File - -float y1, y2; -float m1, m2; -float x1, x2; -float b1, b2; - - -void main(void) -{ - -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - -// Step 2. Initalize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); // Skipped for this example - - -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize the PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - -// Interrupts that are used in this example are re-mapped to -// ISR functions found within this file. - - -// Step 5. User specific code, enable interrupts: - -// -// Calculate two y=mx+b equations. - - y1 = 0; - y2 = 0; - m1 = .5; - m2 = .6; - x1 = 3.4; - x2 = 7.3; - b1 = 4.2; - b2 = 8.9; - - y1 = m1*x1 + b1; - y2 = m2*x2 + b2; - - - ESTOP0; // This is a software breakpoint -} - - -//=========================================================================== -// No more. -//=========================================================================== diff --git a/Source/External/v120/DSP2833x_examples/fpu/Example_2833xFPU.gel b/Source/External/v120/DSP2833x_examples/fpu/Example_2833xFPU.gel deleted file mode 100644 index b6531eb..0000000 --- a/Source/External/v120/DSP2833x_examples/fpu/Example_2833xFPU.gel +++ /dev/null @@ -1,50 +0,0 @@ -/* -// TI File $Revision: /main/1 $ -// Checkin $Date: August 29, 2007 14:07:24 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// project. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -menuitem "DSP2833x FPU Example" - -hotmenu Load_and_Build_Fixed_Point_Project() -{ - GEL_ProjectLoad("Example_2833xFPU_software.pjt"); - GEL_ProjectBuild("Example_2833xFPU_software.pjt"); - Setup_WatchWindow(); -} - -hotmenu Load_and_Build_Floating_Point_Project() -{ - GEL_ProjectLoad("Example_2833xFPU_hardware.pjt"); - GEL_ProjectBuild("Example_2833xFPU_hardware.pjt"); - Setup_WatchWindow(); -} - -hotmenu Load_Fixed_Point_Code() -{ - GEL_Load(".\\debug\\Example_2833xFPU_software.out"); - Setup_WatchWindow(); -} - -hotmenu Load_Floating_Point_Code() -{ - GEL_Load(".\\debug\\Example_2833xFPU_hardware.out"); - Setup_WatchWindow(); -} - -hotmenu Setup_WatchWindow() -{ - GEL_WatchReset(); - GEL_WatchAdd("y1,f"); - GEL_WatchAdd("y2,f"); - All_FPU_Single_Precision_Regs(); -} diff --git a/Source/External/v120/DSP2833x_examples/fpu/Example_2833xFPU_hardware.pjt b/Source/External/v120/DSP2833x_examples/fpu/Example_2833xFPU_hardware.pjt deleted file mode 100644 index 863f8f7..0000000 --- a/Source/External/v120/DSP2833x_examples/fpu/Example_2833xFPU_hardware.pjt +++ /dev/null @@ -1,46 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\fpu\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="CustomBuilder" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CpuTimers.c" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xFPU.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -al -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\fpu\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\fpu\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" -ml -mt -v28 --float_support=fpu32 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\fpu\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -ecode_start -m".\Debug\Example_2833xFPU_hardware.map" -o".\Debug\Example_2833xFPU_hardware.out" -stack0x200 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xFPU_hardware.out" -x - diff --git a/Source/External/v120/DSP2833x_examples/fpu/Example_2833xFPU_software.pjt b/Source/External/v120/DSP2833x_examples/fpu/Example_2833xFPU_software.pjt deleted file mode 100644 index c4cdc70..0000000 --- a/Source/External/v120/DSP2833x_examples/fpu/Example_2833xFPU_software.pjt +++ /dev/null @@ -1,46 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\fpu\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="CustomBuilder" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CpuTimers.c" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xFPU.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\fpu\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\fpu\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" -ml -mt -v28 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\fpu\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -ecode_start -m".\Debug\Example_2833xFPU_software.map" -o".\Debug\Example_2833xFPU_software.out" -stack0x200 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_ml.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xFPU_software.out" -x - diff --git a/Source/External/v120/DSP2833x_examples/gpio_setup/Example_2833xGpioSetup.c b/Source/External/v120/DSP2833x_examples/gpio_setup/Example_2833xGpioSetup.c deleted file mode 100644 index ff9c488..0000000 --- a/Source/External/v120/DSP2833x_examples/gpio_setup/Example_2833xGpioSetup.c +++ /dev/null @@ -1,458 +0,0 @@ -// TI File $Revision: /main/9 $ -// Checkin $Date: April 21, 2008 15:42:38 $ -//########################################################################### -// -// FILE: Example_2833xGpioSetup.c -// -// TITLE: DSP2833x Device GPIO Setup -// -// ASSUMPTIONS: -// -// This program requires the DSP2833x header files. -// -// Two different examples are included. Select the example -// to execute before compiling using the #define statements -// found at the top of the code. -// -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// DESCRIPTION: -// -// -// Configures the 2833x GPIO into two different configurations -// This code is verbose to illustrate how the GPIO could be setup. -// In a real application, lines of code can be combined for improved -// code size and efficency. -// -// This example only sets-up the GPIO.. nothing is actually done with -// the pins after setup. -// -// In general: -// -// All pullup resistors are enabled. For ePWMs this may not be desired. -// Input qual for communication ports (eCAN, SPI, SCI, I2C) is asynchronous -// Input qual for Trip pins (TZ) is asynchronous -// Input qual for eCAP and eQEP signals is synch to SYSCLKOUT -// Input qual for some I/O's and interrupts may have a sampling window -// -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File - -// Select the example to compile in. Only one example should be set as 1 -// the rest should be set as 0. - -#define EXAMPLE1 1 // Basic pinout configuration example -#define EXAMPLE2 0 // Communication pinout example - -// Prototype statements for functions found within this file. -void Gpio_setup1(void); -void Gpio_setup2(void); - -void main(void) -{ - -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - -// Step 2. Initalize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. - // InitGpio(); Skipped for this example - -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - - -// Step 4. Initialize all the Device Peripherals: -// This function is found in DSP2833x_InitPeripherals.c -// InitPeripherals(); // Not required for this example - -// Step 5. User specific code: - -#if EXAMPLE1 - - // This example is a basic pinout - Gpio_setup1(); - -#endif // - EXAMPLE1 - -#if EXAMPLE2 - - // This example is a communications pinout - Gpio_setup2(); - -#endif - -} - - -void Gpio_setup1(void) -{ - // Example 1: - // Basic Pinout. - // This basic pinout includes: - // PWM1-3, ECAP1, ECAP2, TZ1-TZ4, SPI-A, EQEP1, SCI-A, I2C - // and a number of I/O pins - - // These can be combined into single statements for improved - // code efficiency. - - // Enable PWM1-3 on GPIO0-GPIO5 - EALLOW; - GpioCtrlRegs.GPAPUD.bit.GPIO0 = 0; // Enable pullup on GPIO0 - GpioCtrlRegs.GPAPUD.bit.GPIO1 = 0; // Enable pullup on GPIO1 - GpioCtrlRegs.GPAPUD.bit.GPIO2 = 0; // Enable pullup on GPIO2 - GpioCtrlRegs.GPAPUD.bit.GPIO3 = 0; // Enable pullup on GPIO3 - GpioCtrlRegs.GPAPUD.bit.GPIO4 = 0; // Enable pullup on GPIO4 - GpioCtrlRegs.GPAPUD.bit.GPIO5 = 0; // Enable pullup on GPIO5 - GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1; // GPIO0 = PWM1A - GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 1; // GPIO1 = PWM1B - GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 1; // GPIO2 = PWM2A - GpioCtrlRegs.GPAMUX1.bit.GPIO3 = 1; // GPIO3 = PWM2B - GpioCtrlRegs.GPAMUX1.bit.GPIO4 = 1; // GPIO4 = PWM3A - GpioCtrlRegs.GPAMUX1.bit.GPIO5 = 1; // GPIO5 = PWM3B - - // Enable an GPIO output on GPIO6, set it high - GpioCtrlRegs.GPAPUD.bit.GPIO6 = 0; // Enable pullup on GPIO6 - GpioDataRegs.GPASET.bit.GPIO6 = 1; // Load output latch - GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 0; // GPIO6 = GPIO6 - GpioCtrlRegs.GPADIR.bit.GPIO6 = 1; // GPIO6 = output - - // Enable eCAP1 on GPIO7 - GpioCtrlRegs.GPAPUD.bit.GPIO7 = 0; // Enable pullup on GPIO7 - GpioCtrlRegs.GPAQSEL1.bit.GPIO7 = 0; // Synch to SYSCLOUT - GpioCtrlRegs.GPAMUX1.bit.GPIO7 = 3; // GPIO7 = ECAP2 - - // Enable GPIO outputs on GPIO8 - GPIO11, set it high - GpioCtrlRegs.GPAPUD.bit.GPIO8 = 0; // Enable pullup on GPIO8 - GpioDataRegs.GPASET.bit.GPIO8 = 1; // Load output latch - GpioCtrlRegs.GPAMUX1.bit.GPIO8 = 0; // GPIO8 = GPIO8 - GpioCtrlRegs.GPADIR.bit.GPIO8 = 1; // GPIO8 = output - - GpioCtrlRegs.GPAPUD.bit.GPIO9 = 0; // Enable pullup on GPIO9 - GpioDataRegs.GPASET.bit.GPIO9 = 1; // Load output latch - GpioCtrlRegs.GPAMUX1.bit.GPIO9 = 0; // GPIO9 = GPIO9 - GpioCtrlRegs.GPADIR.bit.GPIO9 = 1; // GPIO9 = output - - GpioCtrlRegs.GPAPUD.bit.GPIO10 = 0; // Enable pullup on GPIO10 - GpioDataRegs.GPASET.bit.GPIO10 = 1; // Load output latch - GpioCtrlRegs.GPAMUX1.bit.GPIO10 = 0; // GPIO10 = GPIO10 - GpioCtrlRegs.GPADIR.bit.GPIO6 = 1; // GPIO10 = output - - GpioCtrlRegs.GPAPUD.bit.GPIO11 = 0; // Enable pullup on GPIO11 - GpioCtrlRegs.GPAMUX1.bit.GPIO11 = 0; // GPIO11 = GPIO11 - GpioCtrlRegs.GPADIR.bit.GPIO11 = 1; // GPIO11 = output - - // Enable Trip Zone inputs on GPIO12 - GPIO15 - GpioCtrlRegs.GPAPUD.bit.GPIO12 = 0; // Enable pullup on GPIO12 - GpioCtrlRegs.GPAPUD.bit.GPIO13 = 0; // Enable pullup on GPIO13 - GpioCtrlRegs.GPAPUD.bit.GPIO14 = 0; // Enable pullup on GPIO14 - GpioCtrlRegs.GPAPUD.bit.GPIO15 = 0; // Enable pullup on GPIO15 - GpioCtrlRegs.GPAQSEL1.bit.GPIO12 = 3; // asynch input - GpioCtrlRegs.GPAQSEL1.bit.GPIO13 = 3; // asynch input - GpioCtrlRegs.GPAQSEL1.bit.GPIO14 = 3; // asynch input - GpioCtrlRegs.GPAQSEL1.bit.GPIO15 = 3; // asynch input - GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 1; // GPIO12 = TZ1 - GpioCtrlRegs.GPAMUX1.bit.GPIO13 = 1; // GPIO13 = TZ2 - GpioCtrlRegs.GPAMUX1.bit.GPIO14 = 1; // GPIO14 = TZ3 - GpioCtrlRegs.GPAMUX1.bit.GPIO15 = 1; // GPIO15 = TZ4 - - // Enable SPI-A on GPIO16 - GPIO19 - GpioCtrlRegs.GPAPUD.bit.GPIO16 = 0; // Enable pullup on GPIO16 - GpioCtrlRegs.GPAPUD.bit.GPIO17 = 0; // Enable pullup on GPIO17 - GpioCtrlRegs.GPAPUD.bit.GPIO18 = 0; // Enable pullup on GPIO18 - GpioCtrlRegs.GPAPUD.bit.GPIO19 = 0; // Enable pullup on GPIO19 - GpioCtrlRegs.GPAQSEL2.bit.GPIO16 = 3; // asynch input - GpioCtrlRegs.GPAQSEL2.bit.GPIO17 = 3; // asynch input - GpioCtrlRegs.GPAQSEL2.bit.GPIO18 = 3; // asynch input - GpioCtrlRegs.GPAQSEL2.bit.GPIO19 = 3; // asynch input - GpioCtrlRegs.GPAMUX2.bit.GPIO16 = 1; // GPIO16 = SPICLKA - GpioCtrlRegs.GPAMUX2.bit.GPIO17 = 1; // GPIO17 = SPIS0MIA - GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 1; // GPIO18 = SPICLKA - GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 1; // GPIO19 = SPISTEA - - // Enable EQEP1 on GPIO20 - GPIO23 - GpioCtrlRegs.GPAPUD.bit.GPIO20 = 0; // Enable pullup on GPIO20 - GpioCtrlRegs.GPAPUD.bit.GPIO21 = 0; // Enable pullup on GPIO21 - GpioCtrlRegs.GPAPUD.bit.GPIO22 = 0; // Enable pullup on GPIO22 - GpioCtrlRegs.GPAPUD.bit.GPIO23 = 0; // Enable pullup on GPIO23 - GpioCtrlRegs.GPAQSEL2.bit.GPIO20 = 0; // Synch to SYSCLKOUT - GpioCtrlRegs.GPAQSEL2.bit.GPIO21 = 0; // Synch to SYSCLKOUT - GpioCtrlRegs.GPAQSEL2.bit.GPIO22 = 0; // Synch to SYSCLKOUT - GpioCtrlRegs.GPAQSEL2.bit.GPIO23 = 0; // Synch to SYSCLKOUT - GpioCtrlRegs.GPAMUX2.bit.GPIO20 = 1; // GPIO20 = EQEP1A - GpioCtrlRegs.GPAMUX2.bit.GPIO21 = 1; // GPIO21 = EQEP1B - GpioCtrlRegs.GPAMUX2.bit.GPIO22 = 1; // GPIO22 = EQEP1S - GpioCtrlRegs.GPAMUX2.bit.GPIO23 = 1; // GPIO23 = EQEP1I - - // Enable eCAP1 on GPIO24 - GpioCtrlRegs.GPAPUD.bit.GPIO24 = 0; // Enable pullup on GPIO24 - GpioCtrlRegs.GPAQSEL2.bit.GPIO24 = 0; // Synch to SYSCLKOUT - GpioCtrlRegs.GPAMUX2.bit.GPIO24 = 1; // GPIO24 = ECAP1 - - // Set input qualifcation period for GPIO25 & GPIO26 - GpioCtrlRegs.GPACTRL.bit.QUALPRD3=1; // Qual period = SYSCLKOUT/2 - GpioCtrlRegs.GPAQSEL2.bit.GPIO25=2; // 6 samples - GpioCtrlRegs.GPAQSEL2.bit.GPIO26=2; // 6 samples - - // Make GPIO25 the input source for Xint1 - GpioCtrlRegs.GPAMUX2.bit.GPIO25 = 0; // GPIO25 = GPIO25 - GpioCtrlRegs.GPADIR.bit.GPIO25 = 0; // GPIO25 = input - GpioIntRegs.GPIOXINT1SEL.all = 25; // Xint1 connected to GPIO25 - - // Make GPIO26 the input source for XINT2 - GpioCtrlRegs.GPAMUX2.bit.GPIO26 = 0; // GPIO26 = GPIO26 - GpioCtrlRegs.GPADIR.bit.GPIO26 = 0; // GPIO26 = input - GpioIntRegs.GPIOXINT2SEL.all = 26; // XINT2 connected to GPIO26 - - // Make GPIO27 wakeup from HALT/STANDBY Low Power Modes - GpioCtrlRegs.GPAMUX2.bit.GPIO27 = 0; // GPIO27 = GPIO27 - GpioCtrlRegs.GPADIR.bit.GPIO27 = 0; // GPIO27 = input - GpioIntRegs.GPIOLPMSEL.bit.GPIO27=1; // GPIO27 will wake the device - SysCtrlRegs.LPMCR0.bit.QUALSTDBY=2; // Qualify GPIO27 by 2 OSCCLK - // cycles before waking the device - // from STANDBY - - // Enable SCI-A on GPIO28 - GPIO29 - GpioCtrlRegs.GPAPUD.bit.GPIO28 = 0; // Enable pullup on GPIO28 - GpioCtrlRegs.GPAQSEL2.bit.GPIO28 = 3; // Asynch input - GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 1; // GPIO28 = SCIRXDA - GpioCtrlRegs.GPAPUD.bit.GPIO29 = 0; // Enable pullup on GPIO29 - GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 1; // GPIO29 = SCITXDA - - // Enable CAN-A on GPIO30 - GPIO31 - GpioCtrlRegs.GPAPUD.bit.GPIO30 = 0; // Enable pullup on GPIO30 - GpioCtrlRegs.GPAMUX2.bit.GPIO30 = 1; // GPIO30 = CANTXA - GpioCtrlRegs.GPAPUD.bit.GPIO31 = 0; // Enable pullup on GPIO31 - GpioCtrlRegs.GPAQSEL2.bit.GPIO31 = 3; // Asynch input - GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 1; // GPIO31 = CANRXA - - - // Enable I2C-A on GPIO32 - GPIO33 - GpioCtrlRegs.GPBPUD.bit.GPIO32 = 0; // Enable pullup on GPIO32 - GpioCtrlRegs.GPBMUX1.bit.GPIO32 = 1; // GPIO32 = SDAA - GpioCtrlRegs.GPBQSEL1.bit.GPIO33 = 3; // Asynch input - GpioCtrlRegs.GPBPUD.bit.GPIO33 = 0; // Enable pullup on GPIO33 - GpioCtrlRegs.GPBQSEL1.bit.GPIO33 = 3; // Asynch input - GpioCtrlRegs.GPBMUX1.bit.GPIO33 = 1; // GPIO33 = SCLA - - // Make GPIO34 an input - GpioCtrlRegs.GPBPUD.bit.GPIO34 = 0; // Enable pullup on GPIO34 - GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 0; // GPIO34 = GPIO34 - GpioCtrlRegs.GPBDIR.bit.GPIO34 = 0; // GPIO34 = input - EDIS; -} - -void Gpio_setup2(void) -{ - // Example 1: - // Communications Pinout. - // This basic communications pinout includes: - // PWM1-3, CAP1, CAP2, SPI-A, SPI-B, CAN-A, SCI-A and I2C - // and a number of I/O pins - - // Enable PWM1-3 on GPIO0-GPIO5 - EALLOW; - GpioCtrlRegs.GPAPUD.bit.GPIO0 = 0; // Enable pullup on GPIO0 - GpioCtrlRegs.GPAPUD.bit.GPIO1 = 0; // Enable pullup on GPIO1 - GpioCtrlRegs.GPAPUD.bit.GPIO2 = 0; // Enable pullup on GPIO2 - GpioCtrlRegs.GPAPUD.bit.GPIO3 = 0; // Enable pullup on GPIO3 - GpioCtrlRegs.GPAPUD.bit.GPIO4 = 0; // Enable pullup on GPIO4 - GpioCtrlRegs.GPAPUD.bit.GPIO5 = 0; // Enable pullup on GPIO5 - GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1; // GPIO0 = PWM1A - GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 1; // GPIO1 = PWM1B - GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 1; // GPIO2 = PWM2A - GpioCtrlRegs.GPAMUX1.bit.GPIO3 = 1; // GPIO3 = PWM2B - GpioCtrlRegs.GPAMUX1.bit.GPIO4 = 1; // GPIO4 = PWM3A - GpioCtrlRegs.GPAMUX1.bit.GPIO5 = 1; // GPIO5 = PWM3B - - // Enable an GPIO output on GPIO6 - GpioCtrlRegs.GPAPUD.bit.GPIO6 = 0; // Enable pullup on GPIO6 - GpioDataRegs.GPASET.bit.GPIO6 = 1; // Load output latch - GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 0; // GPIO6 = GPIO6 - GpioCtrlRegs.GPADIR.bit.GPIO6 = 1; // GPIO6 = output - - // Enable eCAP1 on GPIO7 - GpioCtrlRegs.GPAPUD.bit.GPIO7 = 0; // Enable pullup on GPIO7 - GpioCtrlRegs.GPAQSEL1.bit.GPIO7 = 0; // Synch to SYSCLKOUT - GpioCtrlRegs.GPAMUX1.bit.GPIO7 = 3; // GPIO7 = ECAP2 - - // Enable GPIO outputs on GPIO8 - GPIO11 - GpioCtrlRegs.GPAPUD.bit.GPIO8 = 0; // Enable pullup on GPIO8 - GpioDataRegs.GPASET.bit.GPIO8 = 1; // Load output latch - GpioCtrlRegs.GPAMUX1.bit.GPIO8 = 0; // GPIO8 = GPIO8 - GpioCtrlRegs.GPADIR.bit.GPIO8 = 1; // GPIO8 = output - - GpioCtrlRegs.GPAPUD.bit.GPIO9 = 0; // Enable pullup on GPIO9 - GpioDataRegs.GPASET.bit.GPIO9 = 1; // Load output latch - GpioCtrlRegs.GPAMUX1.bit.GPIO9 = 0; // GPIO9 = GPIO9 - GpioCtrlRegs.GPADIR.bit.GPIO9 = 1; // GPIO9 = output - - GpioCtrlRegs.GPAPUD.bit.GPIO10 = 0; // Enable pullup on GPIO10 - GpioDataRegs.GPASET.bit.GPIO10 = 1; // Load output latch - GpioCtrlRegs.GPAMUX1.bit.GPIO10 = 0; // GPIO10 = GPIO10 - GpioCtrlRegs.GPADIR.bit.GPIO10 = 1; // GPIO10 = output - - GpioCtrlRegs.GPAPUD.bit.GPIO11 = 0; // Enable pullup on GPIO11 - GpioDataRegs.GPASET.bit.GPIO11 = 1; // Load output latch - GpioCtrlRegs.GPAMUX1.bit.GPIO11 = 0; // GPIO11 = GPIO11 - GpioCtrlRegs.GPADIR.bit.GPIO11 = 1; // GPIO11 = output - - // Enable SPI-B on GPIO12 - GPIO15 - GpioCtrlRegs.GPAPUD.bit.GPIO12 = 0; // Enable pullup on GPIO12 (SPISIMOB) - GpioCtrlRegs.GPAPUD.bit.GPIO12 = 0; // Enable pullup on GPIO13 (SPISOMIB) - GpioCtrlRegs.GPAPUD.bit.GPIO14 = 0; // Enable pullup on GPIO14 (SPICLKB) - GpioCtrlRegs.GPAPUD.bit.GPIO15 = 0; // Enable pullup on GPIO15 (SPISTEB) - GpioCtrlRegs.GPAQSEL1.bit.GPIO12 = 3; // asynch input - GpioCtrlRegs.GPAQSEL1.bit.GPIO13 = 3; // asynch input - GpioCtrlRegs.GPAQSEL1.bit.GPIO14 = 3; // asynch input - GpioCtrlRegs.GPAQSEL1.bit.GPIO15 = 3; // asynch input - GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 3; // GPIO12 = SPISIMOB - GpioCtrlRegs.GPAMUX1.bit.GPIO13 = 3; // GPIO13 = SPISOMIB - GpioCtrlRegs.GPAMUX1.bit.GPIO14 = 3; // GPIO14 = SPICLKB - GpioCtrlRegs.GPAMUX1.bit.GPIO15 = 3; // GPIO15 = SPISTEB - - // Enable SPI-A on GPIO16 - GPIO19 - GpioCtrlRegs.GPAPUD.bit.GPIO16 = 0; // Enable pullup on GPIO16 (SPICLKA) - GpioCtrlRegs.GPAPUD.bit.GPIO17 = 0; // Enable pullup on GPIO17 (SPIS0MIA) - GpioCtrlRegs.GPAPUD.bit.GPIO18 = 0; // Enable pullup on GPIO18 (SPICLKA) - GpioCtrlRegs.GPAPUD.bit.GPIO19 = 0; // Enable pullup on GPIO19 (SPISTEA) - GpioCtrlRegs.GPAQSEL2.bit.GPIO16 = 3; // asynch input - GpioCtrlRegs.GPAQSEL2.bit.GPIO17 = 3; // asynch input - GpioCtrlRegs.GPAQSEL2.bit.GPIO18 = 3; // asynch input - GpioCtrlRegs.GPAQSEL2.bit.GPIO19 = 3; // asynch input - GpioCtrlRegs.GPAMUX2.bit.GPIO16 = 1; // GPIO16 = SPICLKA - GpioCtrlRegs.GPAMUX2.bit.GPIO17 = 1; // GPIO17 = SPIS0MIA - GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 1; // GPIO18 = SPICLKA - GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 1; // GPIO19 = SPISTEA - - // Enable EQEP1 on GPIO20 - GPIO23 - GpioCtrlRegs.GPAPUD.bit.GPIO20 = 0; // Enable pullup on GPIO20 (EQEP1A) - GpioCtrlRegs.GPAPUD.bit.GPIO21 = 0; // Enable pullup on GPIO21 (EQEP1B) - GpioCtrlRegs.GPAPUD.bit.GPIO22 = 0; // Enable pullup on GPIO22 (EQEP1S) - GpioCtrlRegs.GPAPUD.bit.GPIO23 = 0; // Enable pullup on GPIO23 (EQEP1I) - GpioCtrlRegs.GPAQSEL2.bit.GPIO20 = 0; // Synch to SYSCLKOUT - GpioCtrlRegs.GPAQSEL2.bit.GPIO21 = 0; // Synch to SYSCLKOUT - GpioCtrlRegs.GPAQSEL2.bit.GPIO22 = 0; // Synch to SYSCLKOUT - GpioCtrlRegs.GPAQSEL2.bit.GPIO23 = 0; // Synch to SYSCLKOUT - GpioCtrlRegs.GPAMUX2.bit.GPIO20 = 1; // GPIO20 = EQEP1A - GpioCtrlRegs.GPAMUX2.bit.GPIO21 = 1; // GPIO21 = EQEP1B - GpioCtrlRegs.GPAMUX2.bit.GPIO22 = 1; // GPIO22 = EQEP1S - GpioCtrlRegs.GPAMUX2.bit.GPIO23 = 1; // GPIO23 = EQEP1I - - // Enable eCAP1 on GPIO24 - GpioCtrlRegs.GPAPUD.bit.GPIO24 = 0; // Enable pullup on GPIO24 (ECAP1) - GpioCtrlRegs.GPAQSEL2.bit.GPIO24 = 0; // Synch to SYSCLKOUT - GpioCtrlRegs.GPAMUX2.bit.GPIO24 = 1; // GPIO24 = ECAP1 - - // Set input qualifcation period for GPIO25 & GPIO26 inputs - GpioCtrlRegs.GPACTRL.bit.QUALPRD3=1; // Qual period = SYSCLKOUT/2 - GpioCtrlRegs.GPAQSEL2.bit.GPIO25=2; // 6 samples - GpioCtrlRegs.GPAQSEL2.bit.GPIO26=1; // 3 samples - - // Make GPIO25 the input source for Xint1 - GpioCtrlRegs.GPAMUX2.bit.GPIO25 = 0; // GPIO25 = GPIO25 - GpioCtrlRegs.GPADIR.bit.GPIO25 = 0; // GPIO25 = input - GpioIntRegs.GPIOXINT1SEL.all = 25; // Xint1 connected to GPIO25 - - // Make GPIO26 the input source for XINT2 - GpioCtrlRegs.GPAMUX2.bit.GPIO26 = 0; // GPIO26 = GPIO26 - GpioCtrlRegs.GPADIR.bit.GPIO26 = 0; // GPIO26 = input - GpioIntRegs.GPIOXINT2SEL.all = 26; // XINT2 connected to GPIO26 - - // Make GPIO27 wakeup from HALT/STANDBY Low Power Modes - GpioCtrlRegs.GPAMUX2.bit.GPIO27 = 0; // GPIO27 = GPIO27 - GpioCtrlRegs.GPADIR.bit.GPIO27 = 0; // GPIO27 = input - GpioIntRegs.GPIOLPMSEL.bit.GPIO27=1; // GPIO27 will wake the device - SysCtrlRegs.LPMCR0.bit.QUALSTDBY=2; // Qualify GPIO27 by 2 OSCCLK - // cycles before waking the device - // from STANDBY - - // Enable SCI-A on GPIO28 - GPIO29 - GpioCtrlRegs.GPAPUD.bit.GPIO28 = 0; // Enable pullup on GPIO28 - GpioCtrlRegs.GPAQSEL2.bit.GPIO28 = 3; // asynch input - GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 1; // GPIO28 = SCIRXDA - GpioCtrlRegs.GPAPUD.bit.GPIO29 = 0; // Enable pullup on GPIO29 - GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 1; // GPIO29 = SCITXDA - - // Enable CAN-A on GPIO30 - GPIO31 - GpioCtrlRegs.GPAPUD.bit.GPIO30 = 0; // Enable pullup on GPIO30 - GpioCtrlRegs.GPAMUX2.bit.GPIO30 = 1; // GPIO30 = CANTXA - GpioCtrlRegs.GPAPUD.bit.GPIO31 = 0; // Enable pullup on GPIO31 - GpioCtrlRegs.GPAQSEL2.bit.GPIO31 = 3; // asynch input - GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 1; // GPIO31 = CANRXA - - // Enable I2C-A on GPIO32 - GPIO33 - GpioCtrlRegs.GPBPUD.bit.GPIO32 = 0; // Enable pullup on GPIO32 - GpioCtrlRegs.GPBPUD.bit.GPIO33 = 0; // Enable pullup on GPIO33 - GpioCtrlRegs.GPBQSEL1.bit.GPIO32 = 3; // asynch input - GpioCtrlRegs.GPBQSEL1.bit.GPIO32 = 3; // asynch input - GpioCtrlRegs.GPBMUX1.bit.GPIO32 = 1; // GPIO32 = SDAA - GpioCtrlRegs.GPBMUX1.bit.GPIO33 = 1; // GPIO33 = SCLA - - // Make GPIO34 an input - GpioCtrlRegs.GPBPUD.bit.GPIO32 = 0; // Enable pullup on GPIO34 - GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 0; // GPIO34 = GPIO34 - GpioCtrlRegs.GPBDIR.bit.GPIO34 = 0; // GPIO34 = input - - EDIS; -} - - -//=========================================================================== -// No more. -//=========================================================================== - diff --git a/Source/External/v120/DSP2833x_examples/gpio_setup/Example_2833xGpioSetup.gel b/Source/External/v120/DSP2833x_examples/gpio_setup/Example_2833xGpioSetup.gel deleted file mode 100644 index 84616d3..0000000 --- a/Source/External/v120/DSP2833x_examples/gpio_setup/Example_2833xGpioSetup.gel +++ /dev/null @@ -1,35 +0,0 @@ -/* -// TI File $Revision: /main/5 $ -// Checkin $Date: August 9, 2007 17:16:35 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// project. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -menuitem "DSP2833x GPIO Setup Example" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xGpioSetup.pjt"); - GEL_ProjectBuild("Example_2833xGpioSetup.pjt"); - Setup_WatchWindow(); -} - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xGpioSetup.out"); - Setup_WatchWindow(); -} - -hotmenu Setup_WatchWindow() -{ - GEL_WatchReset(); - GEL_WatchAdd(" GpioCtrlRegs,x"); -} diff --git a/Source/External/v120/DSP2833x_examples/gpio_setup/Example_2833xGpioSetup.pjt b/Source/External/v120/DSP2833x_examples/gpio_setup/Example_2833xGpioSetup.pjt deleted file mode 100644 index 246125c..0000000 --- a/Source/External/v120/DSP2833x_examples/gpio_setup/Example_2833xGpioSetup.pjt +++ /dev/null @@ -1,44 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\gpio_setup\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xGpioSetup.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\gpio_setup\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\gpio_setup\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" --float_support=fpu32 -ml -mt -v28 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\gpio_setup\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -ecode_start -m".\Debug\Example_2833xGpioSetup.map" -o".\Debug\Example_2833xGpioSetup.out" -stack0x200 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xGpioToggle.out" -x - diff --git a/Source/External/v120/DSP2833x_examples/gpio_toggle/Example_2833xGpioToggle.c b/Source/External/v120/DSP2833x_examples/gpio_toggle/Example_2833xGpioToggle.c deleted file mode 100644 index 017a1f7..0000000 --- a/Source/External/v120/DSP2833x_examples/gpio_toggle/Example_2833xGpioToggle.c +++ /dev/null @@ -1,245 +0,0 @@ -// TI File $Revision: /main/8 $ -// Checkin $Date: April 21, 2008 15:42:43 $ -//########################################################################### -// -// FILE: Example_2833xGpioToggle.c -// -// TITLE: DSP2833x Device GPIO toggle test program. -// -// ASSUMPTIONS: -// -// This program requires the DSP2833x header files. -// -// ALL OF THE I/O'S TOGGLE IN THIS PROGRAM. MAKE SURE -// THIS WILL NOT DAMAGE YOUR HARDWARE BEFORE RUNNING THIS -// EXAMPLE. -// -// Monitor desired pins on an oscilloscope. -// -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// DESCRIPTION: -// -// Three different examples are included. Select the example -// (data, set/clear or toggle) to execute before compiling using -// the #define statements found at the top of the code. -// -// -// Toggle all of the GPIO PORT pins -// -// The pins can be observed using Oscilloscope. -// -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File - -// Select the example to compile in. Only one example should be set as 1 -// the rest should be set as 0. -#define EXAMPLE1 1 // Use DATA registers to toggle I/O's -#define EXAMPLE2 0 // Use SET/CLEAR registers to toggle I/O's -#define EXAMPLE3 0 // Use TOGGLE registers to toggle I/O's - - -// Prototype statements for functions found within this file. -void delay_loop(void); -void Gpio_select(void); -void Gpio_example1(void); -void Gpio_example2(void); -void Gpio_example3(void); - -void main(void) -{ - -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - -// Step 2. Initalize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); // Skipped for this example - -// For this example use the following configuration: - Gpio_select(); - -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - - -// Step 4. Initialize all the Device Peripherals: -// This function is found in DSP2833x_InitPeripherals.c -// InitPeripherals(); // Not required for this example - -// Step 5. User specific code: - -#if EXAMPLE1 - - // This example uses DATA registers to toggle I/O's - Gpio_example1(); - -#endif // - EXAMPLE1 - -#if EXAMPLE2 - - // This example uses SET/CLEAR registers to toggle I/O's - Gpio_example2(); - -#endif - -#if EXAMPLE3 - - // This example uses TOGGLE registers to toggle I/O's - Gpio_example3(); - -#endif - -} - -void delay_loop() -{ - short i; - for (i = 0; i < 1000; i++) {} -} - - -void Gpio_example1(void) -{ - // Example 1: - // Toggle I/Os using DATA registers - - for(;;) - { - GpioDataRegs.GPADAT.all =0xAAAAAAAA; - GpioDataRegs.GPBDAT.all =0x0000000A; - - delay_loop(); - - GpioDataRegs.GPADAT.all =0x55555555; - GpioDataRegs.GPBDAT.all =0x00000005; - - delay_loop(); - } -} - -void Gpio_example2(void) -{ - // Example 2: - // Toggle I/Os using SET/CLEAR registers - for(;;) - { - - GpioDataRegs.GPASET.all =0xAAAAAAAA; - GpioDataRegs.GPACLEAR.all =0x55555555; - - GpioDataRegs.GPBSET.all =0x0000000A; - GpioDataRegs.GPBCLEAR.all =0x00000005; - - delay_loop(); - - GpioDataRegs.GPACLEAR.all =0xAAAAAAAA; - GpioDataRegs.GPASET.all =0x55555555; - - GpioDataRegs.GPBCLEAR.all =0x0000000A; - GpioDataRegs.GPBSET.all =0x00000005; - - delay_loop(); - - } -} - -void Gpio_example3(void) -{ - // Example 2: - // Toggle I/Os using TOGGLE registers - - // Set pins to a known state - - GpioDataRegs.GPASET.all =0xAAAAAAAA; - GpioDataRegs.GPACLEAR.all =0x55555555; - - GpioDataRegs.GPBSET.all =0x0000000A; - GpioDataRegs.GPBCLEAR.all =0x00000005; - - // Use TOGGLE registers to flip the state of - // the pins. - // Any bit set to a 1 will flip state (toggle) - // Any bit set to a 0 will not toggle. - - for(;;) - { - GpioDataRegs.GPATOGGLE.all =0xFFFFFFFF; - GpioDataRegs.GPBTOGGLE.all =0x0000000F; - delay_loop(); - } -} - - - -void Gpio_select(void) -{ - - - EALLOW; - GpioCtrlRegs.GPAMUX1.all = 0x00000000; // All GPIO - GpioCtrlRegs.GPAMUX2.all = 0x00000000; // All GPIO - GpioCtrlRegs.GPAMUX1.all = 0x00000000; // All GPIO - GpioCtrlRegs.GPADIR.all = 0xFFFFFFFF; // All outputs - GpioCtrlRegs.GPBDIR.all = 0x0000000F; // All outputs - EDIS; - -} -//=========================================================================== -// No more. -//=========================================================================== - diff --git a/Source/External/v120/DSP2833x_examples/gpio_toggle/Example_2833xGpioToggle.gel b/Source/External/v120/DSP2833x_examples/gpio_toggle/Example_2833xGpioToggle.gel deleted file mode 100644 index 5e49d74..0000000 --- a/Source/External/v120/DSP2833x_examples/gpio_toggle/Example_2833xGpioToggle.gel +++ /dev/null @@ -1,36 +0,0 @@ -/* -// TI File $Revision: /main/5 $ -// Checkin $Date: August 9, 2007 17:16:50 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// project. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -menuitem "DSP2833x GPIO Toggle Test" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xGpioToggle.pjt"); - GEL_ProjectBuild("Example_2833xGpioToggle.pjt"); - Setup_WatchWindow(); -} - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xGpioToggle.out"); - Setup_WatchWindow(); -} - -hotmenu Setup_WatchWindow() -{ - GEL_WatchReset(); - GEL_WatchAdd("GpioDataRegs,x"); - GEL_WatchAdd("GpioCtrlRegs,x"); -} diff --git a/Source/External/v120/DSP2833x_examples/gpio_toggle/Example_2833xGpioToggle.pjt b/Source/External/v120/DSP2833x_examples/gpio_toggle/Example_2833xGpioToggle.pjt deleted file mode 100644 index ae80e72..0000000 --- a/Source/External/v120/DSP2833x_examples/gpio_toggle/Example_2833xGpioToggle.pjt +++ /dev/null @@ -1,44 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\gpio_toggle\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xGpioToggle.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\gpio_toggle\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\gpio_toggle\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" --float_support=fpu32 -ml -mt -v28 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\gpio_toggle\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -ecode_start -m".\Debug\Example_2833xGpioToggle.map" -o".\Debug\Example_2833xGpioToggle.out" -stack0x200 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xGpioToggle.out" -x - diff --git a/Source/External/v120/DSP2833x_examples/hrpwm/Example_2833xHRPWM.c b/Source/External/v120/DSP2833x_examples/hrpwm/Example_2833xHRPWM.c deleted file mode 100644 index 66c2b43..0000000 --- a/Source/External/v120/DSP2833x_examples/hrpwm/Example_2833xHRPWM.c +++ /dev/null @@ -1,376 +0,0 @@ -// TI File $Revision: /main/14 $ -// Checkin $Date: May 5, 2008 15:25:53 $ -//########################################################################### -// -// FILE: Example_2833xHRPWM.c -// -// TITLE: DSP2833x Device HRPWM example -// -// ASSUMPTIONS: -// -// -// This program requires the DSP2833x header files. -// -// Monitor ePWM1-ePWM4 pins on an oscilloscope as described -// below. -// -// EPWM1A is on GPIO0 -// EPWM1B is on GPIO1 -// -// EPWM2A is on GPIO2 -// EPWM2B is on GPIO3 -// -// EPWM3A is on GPIO4 -// EPWM3B is on GPIO5 -// -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// DESCRIPTION: -// -// This example modifies the MEP control registers to show edge displacement -// due to the HRPWM control extension of the respective ePWM module -// All ePWM1A,2A,3A,4A channels (GPIO0, GPIO2, GPIO4, GPIO6) will have fine edge movement -// due to HRPWM logic -// -// 1. 15MHz PWM (for 150 MHz SYSCLKOUT) or 10MHz PWM (for 100MHz SYSCLKOUT), -// ePWM1A toggle low/high with MEP control on rising edge -// 15MHz PWM (for 150 MHz SYSCLKOUT) or 10MHz PWM (for 100MHz SYSCLKOUT), -// ePWM1B toggle low/high with NO HRPWM control -// -// 2. 7.5MHz PWM (for 150 MHz SYSCLKOUT) or 5MHz PWM (for 100MHz SYSCLKOUT), -// ePWM2A toggle low/high with MEP control on rising edge -// 7.5MHz PWM (for 150 MHz SYSCLKOUT) or 5MHz PWM (for 100MHz SYSCLKOUT), -// ePWM2B toggle low/high with NO HRPWM control -// -// 3. 15MHz PWM (for 150 MHz SYSCLKOUT) or 10MHz PWM (for 100MHz SYSCLKOUT), -// ePWM3A toggle as high/low with MEP control on falling edge -// 15MHz PWM (for 150 MHz SYSCLKOUT) or 10MHz PWM (for 100MHz SYSCLKOUT), -// ePWM3B toggle low/high with NO HRPWM control -// -// 4. 7.5MHz PWM (for 150 MHz SYSCLKOUT) or 5MHz PWM (for 100MHz SYSCLKOUT), -// ePWM4A toggle as high/low with MEP control on falling edge -// 7.5MHz PWM (for 150 MHz SYSCLKOUT) or 5MHz PWM (for 100MHz SYSCLKOUT), -// ePWM4B toggle low/high with NO HRPWM control -// -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File -#include "DSP2833x_EPwm_defines.h" // useful defines for initialization - - -// Declare your function prototypes here -//--------------------------------------------------------------- - -void HRPWM1_Config(int); -void HRPWM2_Config(int); -void HRPWM3_Config(int); -void HRPWM4_Config(int); - -// General System nets - Useful for debug -Uint16 i,j, DutyFine, n,update; - -Uint32 temp; - -void main(void) -{ - -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - -// Step 2. Initalize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); // Skipped for this example -// For this case, just init GPIO for ePWM1-ePWM4 - -// For this case just init GPIO pins for ePWM1, ePWM2, ePWM3, ePWM4 -// These functions are in the DSP2833x_EPwm.c file - InitEPwm1Gpio(); - InitEPwm2Gpio(); - InitEPwm3Gpio(); - InitEPwm4Gpio(); - -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize the PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - -// Step 4. Initialize all the Device Peripherals: -// This function is found in DSP2833x_InitPeripherals.c -// InitPeripherals(); // Not required for this example - -// For this example, only initialize the ePWM -// Step 5. User specific code, enable interrupts: - - update =1; - DutyFine =0; - - EALLOW; - SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0; - EDIS; - -// Some useful Period vs Frequency values -// SYSCLKOUT = 150MHz 100 MHz -// ----------------------------------------- -// Period Frequency Frequency -// 1000 150 kHz 100 KHz -// 800 187 kHz 125 KHz -// 600 250 kHz 167 KHz -// 500 300 kHz 200 KHz -// 250 600 kHz 400 KHz -// 200 750 kHz 500 KHz -// 100 1.5 MHz 1.0 MHz -// 50 3.0 MHz 2.0 MHz -// 25 6.0 MHz 4.0 MHz -// 20 7.5 MHz 5.0 MHz -// 12 12.5 MHz 8.33 MHz -// 10 15.0 MHz 10.0 MHz -// 9 16.7 MHz 11.1 MHz -// 8 18.8 MHz 12.5 MHz -// 7 21.4 MHz 14.3 MHz -// 6 25.0 MHz 16.7 MHz -// 5 30.0 MHz 20.0 MHz - -//==================================================================== -// ePWM and HRPWM register initializaition -//==================================================================== - HRPWM1_Config(10); // ePWM1 target, 15 MHz PWM (SYSCLK=150MHz) or 10 MHz PWM (SYSCLK=100MHz) - HRPWM2_Config(20); // ePWM2 target, 7.5 MHz PWM (SYSCLK=150MHz) or 5 MHz PWM (SYSCLK=100MHz) - HRPWM3_Config(10); // ePWM3 target, 15 MHz PWM (SYSCLK=150MHz) or 10 MHz PWM (SYSCLK=100MHz) - HRPWM4_Config(20); // ePWM4 target, 7.5 MHz PWM (SYSCLK=150MHz) or 5 MHz PWM (SYSCLK=100MHz) - - EALLOW; - SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; - EDIS; - - while (update ==1) - - { - - for(DutyFine =1; DutyFine <256 ;DutyFine ++) - { - - // Example, write to the HRPWM extension of CMPA - EPwm1Regs.CMPA.half.CMPAHR = DutyFine << 8; // Left shift by 8 to write into MSB bits - EPwm2Regs.CMPA.half.CMPAHR = DutyFine << 8; // Left shift by 8 to write into MSB bits - - // Example, 32-bit write to CMPA:CMPAHR - EPwm3Regs.CMPA.all = ((Uint32)EPwm3Regs.CMPA.half.CMPA << 16) + (DutyFine << 8); - EPwm4Regs.CMPA.all = ((Uint32)EPwm4Regs.CMPA.half.CMPA << 16) + (DutyFine << 8); - - for (i=0;i<10000;i++){} // Dummy delay between MEP changes - } - } - -} - - -void HRPWM1_Config(period) -{ -// ePWM1 register configuration with HRPWM -// ePWM1A toggle low/high with MEP control on Rising edge - - EPwm1Regs.TBCTL.bit.PRDLD = TB_IMMEDIATE; // set Immediate load - EPwm1Regs.TBPRD = period-1; // PWM frequency = 1 / period - EPwm1Regs.CMPA.half.CMPA = period / 2; // set duty 50% initially - EPwm1Regs.CMPA.half.CMPAHR = (1 << 8); // initialize HRPWM extension - EPwm1Regs.CMPB = period / 2; // set duty 50% initially - EPwm1Regs.TBPHS.all = 0; - EPwm1Regs.TBCTR = 0; - - EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; - EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // EPWM1 is the Master - EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; - EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; - EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1; - - EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; - EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; - EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; - EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; - - EPwm1Regs.AQCTLA.bit.ZRO = AQ_CLEAR; // PWM toggle low/high - EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; - EPwm1Regs.AQCTLB.bit.ZRO = AQ_CLEAR; - EPwm1Regs.AQCTLB.bit.CBU = AQ_SET; - - EALLOW; - EPwm1Regs.HRCNFG.all = 0x0; - EPwm1Regs.HRCNFG.bit.EDGMODE = HR_REP; //MEP control on Rising edge - EPwm1Regs.HRCNFG.bit.CTLMODE = HR_CMP; - EPwm1Regs.HRCNFG.bit.HRLOAD = HR_CTR_ZERO; - EDIS; -} - -void HRPWM2_Config(period) -{ -// ePWM2 register configuration with HRPWM -// ePWM2A toggle low/high with MEP control on Rising edge - - EPwm2Regs.TBCTL.bit.PRDLD = TB_IMMEDIATE; // set Immediate load - EPwm2Regs.TBPRD = period-1; // PWM frequency = 1 / period - EPwm2Regs.CMPA.half.CMPA = period / 2; // set duty 50% initially - EPwm2Regs.CMPA.half.CMPAHR = (1 << 8); // initialize HRPWM extension - EPwm2Regs.CMPB = period / 2; // set duty 50% initially - EPwm2Regs.TBPHS.all = 0; - EPwm2Regs.TBCTR = 0; - - EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; - EPwm2Regs.TBCTL.bit.PHSEN = TB_DISABLE; // ePWM2 is the Master - EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; - EPwm2Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; - EPwm2Regs.TBCTL.bit.CLKDIV = TB_DIV1; - - EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; - EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; - EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; - EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; - - EPwm2Regs.AQCTLA.bit.ZRO = AQ_CLEAR; // PWM toggle low/high - EPwm2Regs.AQCTLA.bit.CAU = AQ_SET; - EPwm2Regs.AQCTLB.bit.ZRO = AQ_CLEAR; - EPwm2Regs.AQCTLB.bit.CBU = AQ_SET; - - EALLOW; - EPwm2Regs.HRCNFG.all = 0x0; - EPwm2Regs.HRCNFG.bit.EDGMODE = HR_REP; //MEP control on Rising edge - EPwm2Regs.HRCNFG.bit.CTLMODE = HR_CMP; - EPwm2Regs.HRCNFG.bit.HRLOAD = HR_CTR_ZERO; - - EDIS; - -} -void HRPWM3_Config(period) -{ -// ePWM3 register configuration with HRPWM -// ePWM3A toggle high/low with MEP control on falling edge - - EPwm3Regs.TBCTL.bit.PRDLD = TB_IMMEDIATE; // set Immediate load - EPwm3Regs.TBPRD = period-1; // PWM frequency = 1 / period - EPwm3Regs.CMPA.half.CMPA = period / 2; // set duty 50% initially - EPwm3Regs.CMPA.half.CMPAHR = (1 << 8); // initialize HRPWM extension - EPwm3Regs.CMPB = period / 2; // set duty 50% initially - EPwm3Regs.TBPHS.all = 0; - EPwm3Regs.TBCTR = 0; - - EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; - EPwm3Regs.TBCTL.bit.PHSEN = TB_DISABLE; // ePWM3 is the Master - EPwm3Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; - EPwm3Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; - EPwm3Regs.TBCTL.bit.CLKDIV = TB_DIV1; - - EPwm3Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; - EPwm3Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; - EPwm3Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; - EPwm3Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; - - EPwm3Regs.AQCTLA.bit.ZRO = AQ_SET; // PWM toggle high/low - EPwm3Regs.AQCTLA.bit.CAU = AQ_CLEAR; - EPwm3Regs.AQCTLB.bit.ZRO = AQ_SET; - EPwm3Regs.AQCTLB.bit.CBU = AQ_CLEAR; - - EALLOW; - EPwm3Regs.HRCNFG.all = 0x0; - EPwm3Regs.HRCNFG.bit.EDGMODE = HR_FEP; //MEP control on falling edge - EPwm3Regs.HRCNFG.bit.CTLMODE = HR_CMP; - EPwm3Regs.HRCNFG.bit.HRLOAD = HR_CTR_ZERO; - EDIS; -} - -void HRPWM4_Config(period) -{ -// ePWM4 register configuration with HRPWM -// ePWM4A toggle high/low with MEP control on falling edge - - EPwm4Regs.TBCTL.bit.PRDLD = TB_IMMEDIATE; // set Immediate load - EPwm4Regs.TBPRD = period-1; // PWM frequency = 1 / period - EPwm4Regs.CMPA.half.CMPA = period / 2; // set duty 50% initially - EPwm4Regs.CMPA.half.CMPAHR = (1 << 8); // initialize HRPWM extension - EPwm4Regs.CMPB = period / 2; // set duty 50% initially - EPwm4Regs.TBPHS.all = 0; - EPwm4Regs.TBCTR = 0; - - EPwm4Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; - EPwm4Regs.TBCTL.bit.PHSEN = TB_DISABLE; // ePWM4 is the Master - EPwm4Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; - EPwm4Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; - EPwm4Regs.TBCTL.bit.CLKDIV = TB_DIV1; - - EPwm4Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; - EPwm4Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; - EPwm4Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; - EPwm4Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; - - EPwm4Regs.AQCTLA.bit.ZRO = AQ_SET; // PWM toggle high/low - EPwm4Regs.AQCTLA.bit.CAU = AQ_CLEAR; - EPwm4Regs.AQCTLB.bit.ZRO = AQ_SET; - EPwm4Regs.AQCTLB.bit.CBU = AQ_CLEAR; - - EALLOW; - EPwm4Regs.HRCNFG.all = 0x0; - EPwm4Regs.HRCNFG.bit.EDGMODE = HR_FEP; // MEP control on falling edge - EPwm4Regs.HRCNFG.bit.CTLMODE = HR_CMP; - EPwm4Regs.HRCNFG.bit.HRLOAD = HR_CTR_ZERO; - EDIS; -} - - - - - - - - - - - diff --git a/Source/External/v120/DSP2833x_examples/hrpwm/Example_2833xHRPWM.gel b/Source/External/v120/DSP2833x_examples/hrpwm/Example_2833xHRPWM.gel deleted file mode 100644 index 5ccf383..0000000 --- a/Source/External/v120/DSP2833x_examples/hrpwm/Example_2833xHRPWM.gel +++ /dev/null @@ -1,42 +0,0 @@ -/* -// TI File $Revision: /main/5 $ -// Checkin $Date: August 9, 2007 17:17:09 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// project. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -menuitem "DSP2833x HRPWM" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xHRPWM.pjt"); - GEL_ProjectBuild("Example_2833xHRPWM.pjt"); - Setup_WatchWindow(); -} - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xHRPWM.out"); - Setup_WatchWindow(); -} - - -hotmenu Setup_WatchWindow() -{ - GEL_WatchReset(); - GEL_WatchAdd("DutyFine,x"); - GEL_WatchAdd("update,x"); - GEL_WatchAdd("EPwm1Regs,x"); - GEL_WatchAdd("EPwm2Regs,x"); - GEL_WatchAdd("EPwm3Regs,x"); - GEL_WatchAdd("EPwm4Regs,x"); - -} diff --git a/Source/External/v120/DSP2833x_examples/hrpwm/Example_2833xHRPWM.pjt b/Source/External/v120/DSP2833x_examples/hrpwm/Example_2833xHRPWM.pjt deleted file mode 100644 index b92acda..0000000 --- a/Source/External/v120/DSP2833x_examples/hrpwm/Example_2833xHRPWM.pjt +++ /dev/null @@ -1,51 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\hrpwm\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_EPwm.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xHRPWM.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -k -q -al -as -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\hrpwm\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\hrpwm\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" --float_support=fpu32 -ml -mt -v28 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\hrpwm\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -cr -ecode_start -m".\Debug\Example_2833xHRPWM.map" -o".\Debug\Example_2833xHRPWM.out" -stack0x380 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xHRPWM.out" -x - -["..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" Settings: "Debug"] -LinkOrder=1 - -["..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" Settings: "Debug"] -LinkOrder=2 - diff --git a/Source/External/v120/DSP2833x_examples/hrpwm_sfo/Example_2833xHRPWM_SFO.c b/Source/External/v120/DSP2833x_examples/hrpwm_sfo/Example_2833xHRPWM_SFO.c deleted file mode 100644 index 9e092f6..0000000 --- a/Source/External/v120/DSP2833x_examples/hrpwm_sfo/Example_2833xHRPWM_SFO.c +++ /dev/null @@ -1,546 +0,0 @@ -// TI File $Revision: /main/15 $ -// Checkin $Date: May 5, 2008 15:25:56 $ -//########################################################################### -// -// FILE: Example_2833xHRPWM_SFO.c -// -// TITLE: DSP2833x Device HRPWM example -// -// ASSUMPTIONS: -// -// -// This program requires the DSP2833x header files, which include the -// SFO_TI_Build_fpu.lib (or SFO_TI_Build.lib for fixed-point) and SFO.h -// files required by this example. -// -// !!NOTE!! -// By default, this example project is configured for floating-point math. All -// included libraries must be pre-compiled for floating-point math. -// -// Therefore, SFO_TI_Build_fpu.lib (compiled for floating-point) is included in the -// project instead of the SFO_TI_Build.lib (compiled for fixed-point). -// -// To convert the example for fixed-point math, follow the instructions in sfo_readme.txt -// in the /doc directory of the header files and peripheral examples package. -// -// -// Monitor ePWM1-ePWM4 pins on an oscilloscope as described -// below. -// -// EPWM1A is on GPIO0 -// EPWM2A is on GPIO2 -// EPWM3A is on GPIO4 -// EPWM4A is on GPIO6 -// -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// DESCRIPTION: -// -// This example modifies the MEP control registers to show edge displacement -// due to the HRPWM control extension of the respective ePWM module. -// -// This example calls the following TI's MEP Scale Factor Optimizer (SFO) -// software library functions: -// -// void SFO_MepEn(int i); -// initialize MEP_Scalefactor[i] dynamically when HRPWM is in use. -// -// void SFO_MepDis(int i); -// initialize MEP_Scalefactor[i] when HRPWM is not used -// -// Where MEP_ScaleFactor[5] is a global array variable used by the SFO library -// -// This example is intended to explain the HRPWM capabilities. The code can be -// optimized for code efficiency. Refer to TI's Digital power application -// examples and TI Digital Power Supply software libraries for details. -// -// All ePWM1A,2A,3A,4A channels (GPIO0, GPIO2, GPIO4, GPIO6) will have fine -// edge movement due to the HRPWM logic -// -// 1. 5MHz PWM (SYSCLK=150MHz) or 3.33MHz PWM (SYSCLK=100MHz), ePWM1A toggle low/high with MEP control on falling edge -// -// 2. 5MHz PWM (SYSCLK=150MHz) or 3.33MHz PWM (SYSCLK=100MHz) ePWM2A toggle low/high with MEP control on falling edge -// -// 3. 5MHz PWM (SYSCLK=150MHz) or 3.33MHz PWM (SYSCLK=100MHz) ePWM3A toggle high/low with MEP control on falling edge -// -// 4. 5MHz PWM (SYSCLK=150MHz) or 3.33MHz PWM (SYSCLK=100MHz) ePWM4A toggle high/low with MEP control on falling edge -// -// To load and run this example: -// 1. Run this example at 150MHz SYSCLKOUT (or 100 MHz SYSCLKOUT for 100 MHz devices) -// 2. Load the Example_2833xHRPWM_SFO.gel and observe variables in the watch window -// 3. Activate Real time mode -// 4. Run the code -// 5. Watch ePWM1A-4A waveforms on a Oscillosope -// 6. In the watch window: -// Set the variable UpdateFine = 1 to observe the ePWMxA output -// with HRPWM capabilites (default) -// Observe the duty cycle of the waveform changes in fine MEP steps -// 7. In the watch window: -// Change the variable UpdateFine to 0, to observe the -// ePWMxA output without HRPWM capabilites -// Observe the duty cycle of the waveform changes in coarse steps of 10nsec. -// -// -// Watch Variables: -// UpdateFine -// MEP_ScaleFactor -// EPwm1Regs.CMPA.all -// EPwm2Regs.CMPA.all -// EPwm3Regs.CMPA.all -// EPwm4Regs.CMPA.all -// -// -// IMPORTANT NOTE!!!!! -// -// THE SFO.H FUNCTIONS INCLUDED WITH THIS EXAMPLE ONLY SUPPORTS EPWM1-EPWM4. FOR -// SUPPORT FOR MORE THAN 4 EPWMS, USE SFO_V5.H WITH THE SFO_TI_BUILD_V5.LIB LIBRARY. -// SEE THE HRPWM REFERENCE GUIDE (SPRU924) FOR USAGE INFORMATION AND DIFFERENCES -// BETWEEN VERSIONS. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File -#include "DSP2833x_EPwm_defines.h" // useful defines for initialization -#include "SFO.h" // SFO library headerfile - -// Declare your function prototypes here -//--------------------------------------------------------------- -void HRPWM1_Config(int); -void HRPWM2_Config(int); -void HRPWM3_Config(int); -void HRPWM4_Config(int); - - -// General System nets - Useful for debug -Uint16 j,duty, DutyFine, n, UpdateFine; -volatile int i; -Uint32 temp; - -// Global array used by the SFO library -int16 MEP_ScaleFactor[5]; - - -volatile struct EPWM_REGS *ePWM[] = - { &EPwm1Regs, &EPwm1Regs, &EPwm2Regs, &EPwm3Regs, &EPwm4Regs, &EPwm5Regs, &EPwm6Regs}; - - -void main(void) -{ - -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - -// Step 2. Initalize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); // Skipped for this example -// For this case, just init GPIO for ePWM1-ePWM4 - -// For this case just init GPIO pins for ePWM1, ePWM2, ePWM3, ePWM4 -// These functions are in the DSP2833x_EPwm.c file - InitEPwm1Gpio(); - InitEPwm2Gpio(); - InitEPwm3Gpio(); - InitEPwm4Gpio(); - -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize the PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - -// Step 4. Initialize all the Device Peripherals: -// This function is found in DSP2833x_InitPeripherals.c -// InitPeripherals(); // Not required for this example - -// For this example, only initialize the ePWM -// Step 5. User specific code, enable interrupts: - - UpdateFine = 1; - DutyFine = 0; - - EALLOW; - SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0; - EDIS; - -// MEP_ScaleFactor variables iitialization for SFO library functions - MEP_ScaleFactor[0] = 0; //Common Variables for SFO functions - MEP_ScaleFactor[1] = 0; //SFO for HRPWM1 - MEP_ScaleFactor[2] = 0; //SFO for HRPWM2 - MEP_ScaleFactor[3] = 0; //SFO for HRPWM3 - MEP_ScaleFactor[4] = 0; //SFO for HRPWM4 - -// MEP_ScaleFactor variables initialized using function SFO_MepDis - while ( MEP_ScaleFactor[1] == 0 ) SFO_MepDis(1); //SFO for HRPWM1 - while ( MEP_ScaleFactor[2] == 0 ) SFO_MepDis(2); //SFO for HRPWM2 - while ( MEP_ScaleFactor[3] == 0 ) SFO_MepDis(3); //SFO for HRPWM3 - while ( MEP_ScaleFactor[4] == 0 ) SFO_MepDis(4); //SFO for HRPWM4 - -// Initialize a common seed variable MEP_ScaleFactor[0] required for all SFO functions - MEP_ScaleFactor[0] = MEP_ScaleFactor[1]; //Common Variable for SFO library functions - -/// Some useful Period vs Frequency values -// SYSCLKOUT = 150MHz 100 MHz -// ----------------------------------------- -// Period Frequency Frequency -// 1000 150 kHz 100 KHz -// 800 187 kHz 125 KHz -// 600 250 kHz 167 KHz -// 500 300 kHz 200 KHz -// 250 600 kHz 400 KHz -// 200 750 kHz 500 KHz -// 100 1.5 MHz 1.0 MHz -// 50 3.0 MHz 2.0 MHz -// 30 5.0 MHz 3.33 MHz -// 25 6.0 MHz 4.0 MHz -// 20 7.5 MHz 5.0 MHz -// 12 12.5 MHz 8.33 MHz -// 10 15.0 MHz 10.0 MHz -// 9 16.7 MHz 11.1 MHz -// 8 18.8 MHz 12.5 MHz -// 7 21.4 MHz 14.3 MHz -// 6 25.0 MHz 16.7 MHz -// 5 30.0 MHz 20.0 MHz - -//==================================================================== -// ePWM and HRPWM register initializaition -//==================================================================== - HRPWM1_Config(30); // ePWM1 target, 5 MHz PWM (SYSCLK=150MHz) or 3.33 MHz PWM (SYSCLK=100MHz) - HRPWM2_Config(30); // ePWM2 target, 5 MHz PWM (SYSCLK=150MHz) or 3.33 MHz PWM (SYSCLK=100MHz) - HRPWM3_Config(30); // ePWM3 target, 5 MHz PWM (SYSCLK=150MHz) or 3.33 MHz PWM (SYSCLK=100MHz) - HRPWM4_Config(30); // ePWM4 target, 5 MHz PWM (SYSCLK=150MHz) or 3.33 MHz PWM (SYSCLK=100MHz) - - EALLOW; - SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; - - EDIS; - - for(;;) - { - // Sweep DutyFine as a Q15 number from 0.2 - 0.999 - for(DutyFine = 0x2300; DutyFine < 0x7000; DutyFine++) - { - // Variables - int16 CMPA_reg_val, CMPAHR_reg_val; - int32 temp; - - if(UpdateFine) - { - /* - // CMPA_reg_val is calculated as a Q0. - // Since DutyFine is a Q15 number, and the period is Q0 - // the product is Q15. So to store as a Q0, we shift right - // 15 bits. - - CMPA_reg_val = ((long)DutyFine * EPwm1Regs.TBPRD)>>15; - - // This next step is to obtain the remainder which was - // truncated during our 15 bit shift above. - // compute the whole value, and then subtract CMPA_reg_val - // shifted LEFT 15 bits: - temp = ((long)DutyFine * EPwm1Regs.TBPRD) ; - temp = temp - ((long)CMPA_reg_val<<15); - - // This obtains the MEP count in digits, from - // 0,1, .... MEP_Scalefactor. Once again since this is Q15 - // convert to Q0 by shifting: - CMPAHR_reg_val = (temp*MEP_ScaleFactor[1])>>15; - - // Now the lower 8 bits contain the MEP count. - // Since the MEP count needs to be in the upper 8 bits of - // the 16 bit CMPAHR register, shift left by 8. - CMPAHR_reg_val = CMPAHR_reg_val << 8; - - // Add the offset and rounding - CMPAHR_reg_val += 0x0180; - - // Write the values to the registers as one 32-bit or two 16-bits - EPwm1Regs.CMPA.half.CMPA = CMPA_reg_val; - EPwm1Regs.CMPA.half.CMPAHR = CMPAHR_reg_val; - */ - - // All the above operations may be condensed into - // the following form: - // EPWM1 calculations - - CMPA_reg_val = ((long)DutyFine * EPwm1Regs.TBPRD)>>15; - temp = ((long)DutyFine * EPwm1Regs.TBPRD) ; - temp = temp - ((long)CMPA_reg_val<<15); - CMPAHR_reg_val = (temp*MEP_ScaleFactor[1])>>15; - CMPAHR_reg_val = CMPAHR_reg_val << 8; - CMPAHR_reg_val += 0x0180; - - // Example for a 32 bit write to CMPA:CMPAHR - EPwm1Regs.CMPA.all = ((long)CMPA_reg_val)<<16 | CMPAHR_reg_val; - - - // EPWM2 calculations - CMPA_reg_val = ((long)DutyFine * EPwm2Regs.TBPRD)>>15; - temp = ((long)DutyFine * EPwm2Regs.TBPRD) ; - temp = temp - ((long)CMPA_reg_val<<15); - CMPAHR_reg_val = (temp*MEP_ScaleFactor[2])>>15; - CMPAHR_reg_val = CMPAHR_reg_val << 8; - CMPAHR_reg_val += 0x0180; - // Example as a 16 bit write to CMPA and then a 16-bit write to CMPAHR - EPwm2Regs.CMPA.half.CMPA = CMPA_reg_val; - EPwm2Regs.CMPA.half.CMPAHR = CMPAHR_reg_val; - - // EPWM3 calculations - CMPA_reg_val = ((long)DutyFine * EPwm3Regs.TBPRD)>>15; - temp = ((long)DutyFine * EPwm3Regs.TBPRD) ; - temp = temp - ((long)CMPA_reg_val<<15); - CMPAHR_reg_val = (temp*MEP_ScaleFactor[3])>>15; - CMPAHR_reg_val = CMPAHR_reg_val << 8; - CMPAHR_reg_val += 0x0180; - EPwm3Regs.CMPA.half.CMPA = CMPA_reg_val; - EPwm3Regs.CMPA.half.CMPAHR = CMPAHR_reg_val; - - // EPWM4 calculations - CMPA_reg_val = ((long)DutyFine * EPwm4Regs.TBPRD)>>15; - temp = ((long)DutyFine * EPwm4Regs.TBPRD) ; - temp = temp - ((long)CMPA_reg_val<<15); - CMPAHR_reg_val = (temp*MEP_ScaleFactor[4])>>15; - CMPAHR_reg_val = CMPAHR_reg_val << 8; - CMPAHR_reg_val += 0x0180; - EPwm4Regs.CMPA.half.CMPA = CMPA_reg_val; - EPwm4Regs.CMPA.half.CMPAHR = CMPAHR_reg_val; - - } - else - { - // CMPA_reg_val is calculated as a Q0. - // Since DutyFine is a Q15 number, and the period is Q0 - // the product is Q15. So to store as a Q0, we shift right - // 15 bits. - - EPwm1Regs.CMPA.half.CMPA = ((long)DutyFine * EPwm1Regs.TBPRD>>15); - EPwm2Regs.CMPA.half.CMPA = ((long)DutyFine * EPwm2Regs.TBPRD)>>15; - EPwm3Regs.CMPA.half.CMPA = ((long)DutyFine * EPwm3Regs.TBPRD)>>15; - EPwm4Regs.CMPA.half.CMPA = ((long)DutyFine * EPwm4Regs.TBPRD)>>15; - - } - - - for (i=0;i<300;i++) - { - // Call the scale factor optimizer lib - SFO_MepEn(1); - SFO_MepEn(2); - SFO_MepEn(3); - SFO_MepEn(4); - - } - - - } - - } - -} - - -void HRPWM1_Config(period) -{ -// ePWM1 register configuration with HRPWM -// ePWM1A toggle low/high with MEP control on Rising edge - - EPwm1Regs.TBCTL.bit.PRDLD = TB_IMMEDIATE; // set Immediate load - EPwm1Regs.TBPRD = period-1; // PWM frequency = 1 / period - EPwm1Regs.CMPA.half.CMPA = period / 2; // set duty 50% initially - EPwm1Regs.CMPA.half.CMPAHR = (1 << 8); // initialize HRPWM extension - EPwm1Regs.CMPB = period / 2; // set duty 50% initially - EPwm1Regs.TBPHS.all = 0; - EPwm1Regs.TBCTR = 0; - - EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; - EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // EPWM1 is the Master - EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; - EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; - EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1; - EPwm1Regs.TBCTL.bit.FREE_SOFT = 11; - - EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; - EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; - EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; - EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; - - - EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET; // PWM toggle high/low - EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR; - EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET; - EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR; - - - - EALLOW; - EPwm1Regs.HRCNFG.all = 0x0; - EPwm1Regs.HRCNFG.bit.EDGMODE = HR_FEP; //MEP control on falling edge - EPwm1Regs.HRCNFG.bit.CTLMODE = HR_CMP; - EPwm1Regs.HRCNFG.bit.HRLOAD = HR_CTR_ZERO; - EDIS; -} - -void HRPWM2_Config(period) -{ -// ePWM2 register configuration with HRPWM -// ePWM2A toggle low/high with MEP control on Rising edge - - EPwm2Regs.TBCTL.bit.PRDLD = TB_IMMEDIATE; // set Immediate load - EPwm2Regs.TBPRD = period-1; // PWM frequency = 1 / period - EPwm2Regs.CMPA.half.CMPA = period / 2; // set duty 50% initially - EPwm1Regs.CMPA.half.CMPAHR = (1 << 8); // initialize HRPWM extension - EPwm2Regs.CMPB = period / 2; // set duty 50% initially - EPwm2Regs.TBPHS.all = 0; - EPwm2Regs.TBCTR = 0; - - EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; - EPwm2Regs.TBCTL.bit.PHSEN = TB_DISABLE; // ePWM2 is the Master - EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; - EPwm2Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; - EPwm2Regs.TBCTL.bit.CLKDIV = TB_DIV1; - EPwm2Regs.TBCTL.bit.FREE_SOFT = 11; - - EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; - EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; - EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; - EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; - - EPwm2Regs.AQCTLA.bit.ZRO = AQ_SET; // PWM toggle high/low - EPwm2Regs.AQCTLA.bit.CAU = AQ_CLEAR; - EPwm2Regs.AQCTLB.bit.ZRO = AQ_SET; - EPwm2Regs.AQCTLB.bit.CBU = AQ_CLEAR; - - EALLOW; - EPwm2Regs.HRCNFG.all = 0x0; - EPwm2Regs.HRCNFG.bit.EDGMODE = HR_FEP; //MEP control on falling edge - EPwm2Regs.HRCNFG.bit.CTLMODE = HR_CMP; - EPwm2Regs.HRCNFG.bit.HRLOAD = HR_CTR_ZERO; - - EDIS; - -} -void HRPWM3_Config(period) -{ -// ePWM3 register configuration with HRPWM -// ePWM3A toggle high/low with MEP control on falling edge - - EPwm3Regs.TBCTL.bit.PRDLD = TB_IMMEDIATE; // set Immediate load - EPwm3Regs.TBPRD = period-1; // PWM frequency = 1 / period - EPwm3Regs.CMPA.half.CMPA = period / 2; // set duty 50% initially - EPwm3Regs.CMPA.half.CMPAHR = (1 << 8); // initialize HRPWM extension - EPwm3Regs.TBPHS.all = 0; - EPwm3Regs.TBCTR = 0; - - EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; - EPwm3Regs.TBCTL.bit.PHSEN = TB_DISABLE; // ePWM3 is the Master - EPwm3Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; - EPwm3Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; - EPwm3Regs.TBCTL.bit.CLKDIV = TB_DIV1; - EPwm3Regs.TBCTL.bit.FREE_SOFT = 11; - - EPwm3Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; - EPwm3Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; - EPwm3Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; - EPwm3Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; - - EPwm3Regs.AQCTLA.bit.ZRO = AQ_SET; // PWM toggle high/low - EPwm3Regs.AQCTLA.bit.CAU = AQ_CLEAR; - EPwm3Regs.AQCTLB.bit.ZRO = AQ_SET; - EPwm3Regs.AQCTLB.bit.CBU = AQ_CLEAR; - - EALLOW; - EPwm3Regs.HRCNFG.all = 0x0; - EPwm3Regs.HRCNFG.bit.EDGMODE = HR_FEP; //MEP control on falling edge - EPwm3Regs.HRCNFG.bit.CTLMODE = HR_CMP; - EPwm3Regs.HRCNFG.bit.HRLOAD = HR_CTR_ZERO; - EDIS; -} - -void HRPWM4_Config(period) -{ -// ePWM4 register configuration with HRPWM -// ePWM4A toggle high/low with MEP control on falling edge - - EPwm4Regs.TBCTL.bit.PRDLD = TB_IMMEDIATE; // set Immediate load - EPwm4Regs.TBPRD = period-1; // PWM frequency = 1 / period - EPwm4Regs.CMPA.half.CMPA = period / 2; // set duty 50% initially - EPwm4Regs.CMPA.half.CMPAHR = (1 << 8); // initialize HRPWM extension - EPwm4Regs.CMPB = period / 2; // set duty 50% initially - EPwm4Regs.TBPHS.all = 0; - EPwm4Regs.TBCTR = 0; - - EPwm4Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; - EPwm4Regs.TBCTL.bit.PHSEN = TB_DISABLE; // ePWM4 is the Master - EPwm4Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; - EPwm4Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; - EPwm4Regs.TBCTL.bit.CLKDIV = TB_DIV1; - EPwm4Regs.TBCTL.bit.FREE_SOFT = 11; - - EPwm4Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; - EPwm4Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; - EPwm4Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; - EPwm4Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; - - EPwm4Regs.AQCTLA.bit.ZRO = AQ_SET; // PWM toggle high/low - EPwm4Regs.AQCTLA.bit.CAU = AQ_CLEAR; - EPwm4Regs.AQCTLB.bit.ZRO = AQ_SET; - EPwm4Regs.AQCTLB.bit.CBU = AQ_CLEAR; - - EALLOW; - EPwm4Regs.HRCNFG.all = 0x0; - EPwm4Regs.HRCNFG.bit.EDGMODE = HR_FEP; //MEP control on falling edge - EPwm4Regs.HRCNFG.bit.CTLMODE = HR_CMP; - EPwm4Regs.HRCNFG.bit.HRLOAD = HR_CTR_ZERO; - EDIS; -} - -// No more diff --git a/Source/External/v120/DSP2833x_examples/hrpwm_sfo/Example_2833xHRPWM_SFO.gel b/Source/External/v120/DSP2833x_examples/hrpwm_sfo/Example_2833xHRPWM_SFO.gel deleted file mode 100644 index 520f385..0000000 --- a/Source/External/v120/DSP2833x_examples/hrpwm_sfo/Example_2833xHRPWM_SFO.gel +++ /dev/null @@ -1,54 +0,0 @@ -/* -// TI File $Revision: /main/5 $ -// Checkin $Date: August 9, 2007 17:17:23 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// project. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -//########################################################################### -// Test Description: Run this GEL on F28335 or F2801. -// The Watch window should give a Scale factor value of 67-70 for the HRPWM -// modules in the device. F28335/6 will have four entries. F2801 will have three -//########################################################################### -*/ - -menuitem "DSP2833x HRPWM SFO" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xHRPWM_SFO.pjt"); - GEL_ProjectBuild("Example_2833xHRPWM_SFO.pjt"); - Setup_WatchWindow(); -} - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xHRPWM_SFO.out"); - Setup_WatchWindow(); -} - -hotmenu Setup_WatchWindow() -{ - - GEL_WatchReset(); - GEL_WatchAdd("UpdateFine"); - GEL_WatchAdd("EPwm1Regs.CMPA.all"); - GEL_WatchAdd("EPwm2Regs.CMPA.all"); - GEL_WatchAdd("EPwm3Regs.CMPA.all"); - GEL_WatchAdd("EPwm4Regs.CMPA.all"); - GEL_WatchAdd("MEP_ScaleFactor[1]"); - GEL_WatchAdd("MEP_ScaleFactor[2]"); - GEL_WatchAdd("MEP_ScaleFactor[3]"); - GEL_WatchAdd("MEP_ScaleFactor[4]"); - GEL_WatchAdd("EPwm1Regs,x"); - GEL_WatchAdd("EPwm2Regs,x"); - GEL_WatchAdd("EPwm3Regs,x"); - GEL_WatchAdd("EPwm4Regs,x"); -} diff --git a/Source/External/v120/DSP2833x_examples/hrpwm_sfo/Example_2833xHRPWM_SFO.pjt b/Source/External/v120/DSP2833x_examples/hrpwm_sfo/Example_2833xHRPWM_SFO.pjt deleted file mode 100644 index ba907e6..0000000 --- a/Source/External/v120/DSP2833x_examples/hrpwm_sfo/Example_2833xHRPWM_SFO.pjt +++ /dev/null @@ -1,59 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\hrpwm_sfo\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="CustomBuilder" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\lib\SFO_TI_Build_fpu.lib" -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_EPwm.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xHRPWM_SFO.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -k -q -pdr -pdv -al -as -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\hrpwm_sfo\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\hrpwm_sfo\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" -ml -mt -v28 --float_support=fpu32 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\hrpwm_sfo\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -ecode_start -m".\Debug\Example_2833xHRPWM_SFO.map" -o".\Debug\Example_2833xHRPWM_SFO.out" -stack0x380 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xHRPWM_SFO.out" -x - -["..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" Settings: "Debug"] -LinkOrder=1 - -["..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" Settings: "Debug"] -LinkOrder=1 - -["..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" Settings: "Release"] -LinkOrder=1 - -["..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" Settings: "Debug"] -LinkOrder=2 - diff --git a/Source/External/v120/DSP2833x_examples/hrpwm_sfo_v5/Example_2833xHRPWM_SFO_V5.c b/Source/External/v120/DSP2833x_examples/hrpwm_sfo_v5/Example_2833xHRPWM_SFO_V5.c deleted file mode 100644 index 6635f1c..0000000 --- a/Source/External/v120/DSP2833x_examples/hrpwm_sfo_v5/Example_2833xHRPWM_SFO_V5.c +++ /dev/null @@ -1,477 +0,0 @@ -// TI File $Revision: /main/14 $ -// Checkin $Date: June 23, 2008 08:58:36 $ -//########################################################################### -// -// FILE: Example_2833xHRPWM_SFO_V5.c -// -// TITLE: DSP2833x Device HRPWM SFO V5 example -// -// ASSUMPTIONS: -// -// -// This program requires the DSP2833x header files, which include -// the following files required for this example: -// SFO_V5.h and SFO_TI_Build_V5B_fpu.lib (or SFO_TI_Build_V5B.lib for fixed point) -// -// -// !!NOTE!! -// By default, this example project is configured for floating-point math. All included libraries -// must be pre-compiled for floating-point math. -// -// Therefore, SFO_TI_Build_V5B_fpu.lib (compiled for floating-point) is included in the -// project instead of the SFO_TI_Build_V5B.lib (compiled for fixed-point). -// -// To convert the example for fixed-point math, follow the instructions in sfo_readme.txt -// in the /doc directory of the header files and peripheral examples package. -// -// -// Monitor the following pins on an oscilloscope: -// ePWM1A (GPIO0) -// ePWM2A (GPIO2) -// ePWM3A (GPIO4) -// ePWM4A (GPIO6) -// ePWM5A (GPIO8) -// ePWM6A (GPIO10) -// -// -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// DESCRIPTION: -// -// This example modifies the MEP control registers to show edge displacement -// due to the HRPWM control extension of the respective ePWM module. -// -// This example calls the following TI's MEP Scale Factor Optimizer (SFO) -// software library V5 functions: -// -// -// int SFO_MepEn_V5(int i); -// updates MEP_ScaleFactor[i] dynamically when HRPWM is in use. -// - returns 1 when complete for the specified channel -// - returns 0 if not complete for the specified channel -// - returns 2 if there is a scale factor out-of-range error -// (MEP_ScaleFactor[n] differs from seed MEP_ScaleFactor[0] -// by more than +/-15). To remedy this: -// 1. Check your software to make sure MepEn completes for -// 1 channel before calling MepEn for another channel. -// 2. Re-run MepDis and re-seed MEP_ScaleFactor[0]. Then -// try again. -// 3. If reason is known and acceptable, treat return of "2" -// like a return of "1", indicating calibration complete. -// -// int SFO_MepDis_V5(int i); -// updates MEP_ScaleFactor[i] when HRPWM is not used -// - returns 1 when complete for the specified channel -// - returns 0 if not complete for the specified channel -// -// MEP_ScaleFactor[PWM_CH] is a global array variable used by the SFO library -// -// ======================================================================= -// NOTE: For more information on using the SFO software library, see the -// High-Resolution Pulse Width Modulator (HRPWM) Reference Guide (spru924) -// ======================================================================= -// -// This example is intended to explain the HRPWM capabilities. The code can be -// optimized for code efficiency. Refer to TI's Digital power application -// examples and TI Digital Power Supply software libraries for details. -// -// All ePWM1A-6A channels will have fine -// edge movement due to the HRPWM logic -// -// 5MHz PWM (for 150 MHz SYSCLKOUT), ePWMxA toggle high/low with MEP control on rising edge -// 3.33MHz PWM (for 100 MHz SYSCLKOUT), ePWMxA toggle high/low with MEP control on rising edge -// -// To load and run this example: -// 1. **!!IMPORTANT!!** - in SFO_V5.h, set PWM_CH to the max number of -// HRPWM channels plus one. For example, for the F28335, the -// maximum number of HRPWM channels is 6. 6+1=7, so set -// #define PWM_CH 7 in SFO_V5.h. (Default is 7) -// 2. Run this example at 150/100MHz SYSCLKOUT -// 3. Load the Example_2833xHRPWM_SFO.gel and observe variables in the watch window -// 4. Activate Real time mode -// 5. Run the code -// 6. Watch ePWM1-6 waveforms on a Oscillosope -// 7. In the watch window: -// Set the variable UpdateFine = 1 to observe the ePWMxA output -// with HRPWM capabilites (default) -// Observe the duty cycle of the waveform changes in fine MEP steps -// 8. In the watch window: -// Change the variable UpdateFine to 0, to observe the -// ePWMxA output without HRPWM capabilites -// Observe the duty cycle of the waveform changes in coarse steps of 10nsec. -// -// Watch Variables: -// UpdateFine -// MEP_ScaleFactor -// EPwm1Regs.CMPA.all -// EPwm2Regs.CMPA.all -// EPwm3Regs.CMPA.all -// EPwm4Regs.CMPA.all -// EPwm5Regs.CMPA.all -// EPwm6Regs.CMPA.all -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File -#include "DSP2833x_EPwm_defines.h" // useful defines for initialization -#include "SFO_V5.h" // SFO V5 library headerfile - required to use SFO library functions - -// **!!IMPORTANT!!** -// UPDATE NUMBER OF HRPWM CHANNELS + 1 USED IN SFO_V5.H -// i.e. #define PWM_CH // F28335 has a maximum of 6 HRPWM channels (7=6+1) - -// Declare your function prototypes here -//--------------------------------------------------------------- -void HRPWM_Config(int); -void error (void); - -// General System nets - Useful for debug -Uint16 UpdateFine, DutyFine, status, nMepChannel; - -//==================================================================== -// The following declarations are required in order to use the SFO -// library functions: -// -int MEP_ScaleFactor[PWM_CH]; // Global array used by the SFO library - // For n HRPWM channels + 1 for MEP_ScaleFactor[0] - -// Array of pointers to EPwm register structures: -// *ePWM[0] is defined as dummy value not used in the example -volatile struct EPWM_REGS *ePWM[PWM_CH] = - { &EPwm1Regs, &EPwm1Regs, &EPwm2Regs, &EPwm3Regs, - &EPwm4Regs, &EPwm5Regs, &EPwm6Regs}; -//==================================================================== - -void main(void) -{ - // Local variables - int i; - Uint32 temp; - int16 CMPA_reg_val, CMPAHR_reg_val; - - -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - -// Step 2. Initalize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); // Skipped for this example - - -// For this case just init GPIO pins for ePWM1-ePWM6 -// This function is in the DSP2833x_EPwm.c file - InitEPwmGpio(); - -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize the PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - -// Step 4. Initialize all the Device Peripherals: -// This function is found in DSP2833x_InitPeripherals.c -// InitPeripherals(); // Not required for this example - -// For this example, only initialize the ePWM -// Step 5. User specific code, enable interrupts: - - UpdateFine = 1; - DutyFine = 0; - nMepChannel=1; // HRPWM diagnostics start on ePWM channel 1 - - EALLOW; - SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0; - EDIS; - -// MEP_ScaleFactor variables intialization for SFO library functions - for(i=0;i>15; - - // This next step is to obtain the remainder which was - // truncated during our 15 bit shift above. - // compute the whole value, and then subtract CMPA_reg_val - // shifted LEFT 15 bits: - temp = ((long)DutyFine * EPwm1Regs.TBPRD) ; - temp = temp - ((long)CMPA_reg_val<<15); - - // This obtains the MEP count in digits, from - // 0,1, .... MEP_Scalefactor. Once again since this is Q15 - // convert to Q0 by shifting: - CMPAHR_reg_val = (temp*MEP_ScaleFactor[1])>>15; - - // Now the lower 8 bits contain the MEP count. - // Since the MEP count needs to be in the upper 8 bits of - // the 16 bit CMPAHR register, shift left by 8. - CMPAHR_reg_val = CMPAHR_reg_val << 8; - - // Add the offset and rounding - CMPAHR_reg_val += 0x0180; - - // Write the values to the registers as one 32-bit or two 16-bits - EPwm1Regs.CMPA.half.CMPA = CMPA_reg_val; - EPwm1Regs.CMPA.half.CMPAHR = CMPAHR_reg_val; - */ - - // All the above operations may be condensed into - // the following form for each channel: - - // EPWM calculations where EPwm1Regs are accessed - // by (*ePWM[1]), EPwm2Regs are accessed by (*ePWM[2]), - // etc.: - - for(i=1;i>15; - temp = ((long)DutyFine * (*ePWM[i]).TBPRD) ; - temp = temp - ((long)CMPA_reg_val<<15); - CMPAHR_reg_val = (temp*MEP_ScaleFactor[i])>>15; - CMPAHR_reg_val = CMPAHR_reg_val << 8; - CMPAHR_reg_val += 0x0180; - - // Example for a 32 bit write to CMPA:CMPAHR - (*ePWM[i]).CMPA.all = ((long)CMPA_reg_val)<<16 | CMPAHR_reg_val; - } - - } - else - { - // CMPA_reg_val is calculated as a Q0. - // Since DutyFine is a Q15 number, and the period is Q0 - // the product is Q15. So to store as a Q0, we shift right - // 15 bits. - - for(i=1;i>15); - } - } - - -// Call the scale factor optimizer lib function SFO_MepEn_V5() -// periodically to track for any changes due to temp/voltage. -// SFO_MepEn_V5 Calibration must be finished on one channel (return 1) before -// moving on to the next channel. -// -// *NOTE*: In this example, SFO_MepEn_V5 is called 700 times in a loop. For example -// purposes, this allows the CMPAHR and CMPA registers to change in such -// a way that when watching in "Continuous Refresh" mode, the user -// can see the CMPAHR register increment in fine steps to a certain point -// before the CMPA register increments in a coarse step. Normally, -// SFO_MepEn_V5 can be called once every so often in the background for -// a slow update with no for-loop. - - for (i=0; i<700; i++) // Call SFO_MepEn_V5 700 times. - { - status = SFO_MepEn_V5(nMepChannel); - if (status == SFO_COMPLETE) // Once SFO_MepEn_V5 complete (returns 1)- - nMepChannel++; // move on to next channel - else if (status == SFO_OUTRANGE_ERROR) // If MEP_ScaleFactor[nMepChannel] differs - { // from seed Mep_ScaleFactor[0] by more than - error(); // +/-15, status = 2 (out of range error) - } - if(nMepChannel==PWM_CH) - nMepChannel =1; // Once max channels reached, loop back to channel 1 - } - - } // end DutyFine for loop - - } // end infinite for loop - -} // end SFO_MepEn_V5 - -//============================================================= -// FUNCTION: HRPWM_Config -// DESCRIPTION: Configures all ePWM channels and sets up HRPWM -// on ePWMxA channels -// -// PARAMETERS: period - desired PWM period in TBCLK counts -// RETURN: N/A -//============================================================= - -void HRPWM_Config(period) -{ -Uint16 j; -// ePWM channel register configuration with HRPWM -// ePWMxA toggle low/high with MEP control on Rising edge - for (j=1;j +/- 15 -// from the Seed Value in MEP_ScaleFactor[0]. -// SFO_MepEn_V5 returned a "2" (SFO_OUTRANGE_ERROR). -// The user should: -// (1) Re-run SFO_MepDis_V5 to re-calibrate -// an appropriate seed value. -// (2) Ensure the code is not calling Mep_En_V5 -// on a different channel when it is currently -// still running on a channel. (Repetitively -// call Mep_En_V5 on current channel until an -// SFO_COMPLETE ( i.e. 1) is returned. -// (3) If the out-of-range condition is acceptable -// for the application, ignore the "2" and -// treat it as a "1" or SFO_COMPLETE. -// -// PARAMETERS: N/A -// RETURN: N/A -//============================================================= - -void error (void) -{ - ESTOP0; // Error - MEP_ScaleFactor out of range of Seed - rerun MepDis calibration. -} - - -// No more - diff --git a/Source/External/v120/DSP2833x_examples/hrpwm_sfo_v5/Example_2833xHRPWM_SFO_V5.gel b/Source/External/v120/DSP2833x_examples/hrpwm_sfo_v5/Example_2833xHRPWM_SFO_V5.gel deleted file mode 100644 index d76daae..0000000 --- a/Source/External/v120/DSP2833x_examples/hrpwm_sfo_v5/Example_2833xHRPWM_SFO_V5.gel +++ /dev/null @@ -1,58 +0,0 @@ -/* -// TI File $Revision: /main/5 $ -// Checkin $Date: August 9, 2007 17:25:04 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// project. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -//########################################################################### -// Test Description: Run this GEL on F28334 -// The Watch window should give a Scale factor value of 67-70 for the HRPWM -// modules in the device. F28335 will have a maximum of 6 entries + 1 for -// MEP_ScaleFactor[0]. -//########################################################################### -*/ - -menuitem "DSP2833x HRPWM SFO V5" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xHRPWM_SFO_V5.pjt"); - GEL_ProjectBuild("Example_2833xHRPWM_SFO_V5.pjt"); - Setup_WatchWindow(); -} - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xHRPWM_SFO_V5.out"); - Setup_WatchWindow(); -} - -hotmenu Setup_WatchWindow() -{ - - GEL_WatchReset(); - GEL_WatchAdd("UpdateFine"); - GEL_WatchAdd("EPwm1Regs.CMPA.all"); - GEL_WatchAdd("EPwm2Regs.CMPA.all"); - GEL_WatchAdd("EPwm3Regs.CMPA.all"); - GEL_WatchAdd("EPwm4Regs.CMPA.all"); - GEL_WatchAdd("EPwm5Regs.CMPA.all"); - GEL_WatchAdd("EPwm6Regs.CMPA.all"); - GEL_WatchAdd("MEP_ScaleFactor"); - GEL_WatchAdd("EPwm1Regs,x"); - GEL_WatchAdd("EPwm2Regs,x"); - GEL_WatchAdd("EPwm3Regs,x"); - GEL_WatchAdd("EPwm4Regs,x"); - GEL_WatchAdd("EPwm5Regs,x"); - GEL_WatchAdd("EPwm6Regs,x"); - - -} diff --git a/Source/External/v120/DSP2833x_examples/hrpwm_sfo_v5/Example_2833xHRPWM_SFO_V5.pjt b/Source/External/v120/DSP2833x_examples/hrpwm_sfo_v5/Example_2833xHRPWM_SFO_V5.pjt deleted file mode 100644 index 45731df..0000000 --- a/Source/External/v120/DSP2833x_examples/hrpwm_sfo_v5/Example_2833xHRPWM_SFO_V5.pjt +++ /dev/null @@ -1,53 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\hrpwm_sfo_v5\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="CustomBuilder" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\lib\SFO_TI_Build_V5B_fpu.lib" -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_EPwm.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xHRPWM_SFO_V5.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -pdv -as -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\hrpwm_sfo_v5\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" --float_support=fpu32 -ml -mt -v28 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\hrpwm_sfo_v5\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -ecode_start -m".\Debug\Example_2833xHRPWM_SFO_V5.map" -o".\Debug\Example_2833xHRPWM_SFO_V5.out" -stack0x380 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xHRPWM_SFO_V5.out" -x - -["..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" Settings: "Debug"] -LinkOrder=1 - -["..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" Settings: "Debug"] -LinkOrder=2 - diff --git a/Source/External/v120/DSP2833x_examples/hrpwm_slider/Example_2833xHRPWM_slider.c b/Source/External/v120/DSP2833x_examples/hrpwm_slider/Example_2833xHRPWM_slider.c deleted file mode 100644 index ba2dd87..0000000 --- a/Source/External/v120/DSP2833x_examples/hrpwm_slider/Example_2833xHRPWM_slider.c +++ /dev/null @@ -1,381 +0,0 @@ -// TI File $Revision: /main/13 $ -// Checkin $Date: May 5, 2008 15:26:01 $ -//########################################################################### -// -// FILE: Example_2833xHRPWM_slider.c -// -// TITLE: DSP2833x Device HRPWM with Slider example -// -// ASSUMPTIONS: -// -// -// This program requires the DSP2833x header files. -// -// Monitor ePWM1-ePWM4 pins on an oscilloscope as described -// below. -// -// EPWM1A is on GPIO0 -// EPWM1B is on GPIO1 -// -// EPWM2A is on GPIO2 -// EPWM2B is on GPIO3 -// -// EPWM3A is on GPIO4 -// EPWM3B is on GPIO5 -// -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// DESCRIPTION: -// -// -// This example modifies the MEP control registers to show edge displacement -// due to HRPWM control blocks of the respective ePWM module, ePWM1A, 2A, 3A, -// and 4A channels (GPIO0, GPIO2, GPIO4, and GPIO6) will have fine edge movement -// due to HRPWM logic. Load the Example_2833xHRPWM_slider.gel file. -// Select the HRPWM FineDutySlider from the GEL menu. A FineDuty slider -// graphics will show up in CCS. -// Load the program and run. Use the Slider to and observe the epwm edge displacement -// for each slider step change. This explains the MEP control on the ePWMxA channels -// -// 1. 15MHz PWM (for 150 MHz SYSCLKOUT) or 10MHz PWM (for 100MHz SYSCLKOUT), -// ePWM1A toggle low/high with MEP control on rising edge -// 15MHz PWM (for 150 MHz SYSCLKOUT) or 10MHz PWM (for 100MHz SYSCLKOUT), -// ePWM1B toggle low/high with NO HRPWM control -// -// 2. 7.5MHz PWM (for 150 MHz SYSCLKOUT) or 5MHz PWM (for 100MHz SYSCLKOUT), -// ePWM2A toggle low/high with MEP control on rising edge -// 7.5MHz PWM (for 150 MHz SYSCLKOUT) or 5MHz PWM (for 100MHz SYSCLKOUT), -// ePWM2B toggle low/high with NO HRPWM control -// -// 3. 15MHz PWM (for 150 MHz SYSCLKOUT) or 10MHz PWM (for 100MHz SYSCLKOUT), -// ePWM3A toggle as high/low with MEP control on falling edge -// 15MHz PWM (for 150 MHz SYSCLKOUT) or 10MHz PWM (for 100MHz SYSCLKOUT), -// ePWM3B toggle low/high with NO HRPWM control -// -// 4. 7.5MHz PWM (for 150 MHz SYSCLKOUT) or 5MHz PWM (for 100MHz SYSCLKOUT), -// ePWM4A toggle as high/low with MEP control on falling edge -// 7.5MHz PWM (for 150 MHz SYSCLKOUT) or 5MHz PWM (for 100MHz SYSCLKOUT), -// ePWM4B toggle low/high with NO HRPWM control -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File -#include "DSP2833x_EPwm_defines.h" // useful defines for initialization - - -// Declare your function prototypes here -//--------------------------------------------------------------- - -void HRPWM1_Config(int); -void HRPWM2_Config(int); -void HRPWM3_Config(int); -void HRPWM4_Config(int); - -// General System nets - Useful for debug -Uint16 i,j, duty, DutyFine, n,update; - -Uint32 temp; - -void main(void) -{ - -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - -// Step 2. Initalize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); // Skipped for this example -// For this case, just init GPIO for ePWM1-ePWM4 - -// For this case just init GPIO pins for ePWM1, ePWM2, ePWM3, ePWM4 -// These functions are in the DSP2833x_EPwm.c file - InitEPwm1Gpio(); - InitEPwm2Gpio(); - InitEPwm3Gpio(); - InitEPwm4Gpio(); - -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize the PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - -// Step 4. Initialize all the Device Peripherals: -// This function is found in DSP2833x_InitPeripherals.c -// InitPeripherals(); // Not required for this example - -// For this example, only initialize the ePWM -// Step 5. User specific code, enable interrupts: - - update =1; - DutyFine =0; - - EALLOW; - SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0; - EDIS; - -// Some useful Period vs Frequency values -// SYSCLKOUT = 150MHz 100 MHz -// ----------------------------------------- -// Period Frequency Frequency -// 1000 150 kHz 100 KHz -// 800 187 kHz 125 KHz -// 600 250 kHz 167 KHz -// 500 300 kHz 200 KHz -// 250 600 kHz 400 KHz -// 200 750 kHz 500 KHz -// 100 1.5 MHz 1.0 MHz -// 50 3.0 MHz 2.0 MHz -// 25 6.0 MHz 4.0 MHz -// 20 7.5 MHz 5.0 MHz -// 12 12.5 MHz 8.33 MHz -// 10 15.0 MHz 10.0 MHz -// 9 16.7 MHz 11.1 MHz -// 8 18.8 MHz 12.5 MHz -// 7 21.4 MHz 14.3 MHz -// 6 25.0 MHz 16.7 MHz -// 5 30.0 MHz 20.0 MHz - -//==================================================================== -// ePWM and HRPWM register initializaition -//==================================================================== - HRPWM1_Config(10); // ePWM1 target, 15 MHz PWM (SYSCLK=150MHz) or 10 MHz PWM (SYSCLK=100MHz) - HRPWM2_Config(20); // ePWM2 target, 7.5 MHz PWM (SYSCLK=150MHz) or 5 MHz PWM (SYSCLK=100MHz) - HRPWM3_Config(10); // ePWM3 target, 15 MHz PWM (SYSCLK=150MHz) or 10 MHz PWM (SYSCLK=100MHz) - HRPWM4_Config(20); // ePWM4 target, 7.5 MHz PWM (SYSCLK=150MHz) or 5 MHz PWM (SYSCLK=100MHz) - - - EALLOW; - SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; - EDIS; - - while (update ==1) - - { - -// for(DutyFine =1; DutyFine <256 ;DutyFine ++) - { - - // Example, write to the HRPWM extension of CMPA - EPwm1Regs.CMPA.half.CMPAHR = DutyFine << 8; // Left shift by 8 to write into MSB bits - EPwm2Regs.CMPA.half.CMPAHR = DutyFine << 8; // Left shift by 8 to write into MSB bits - - // Example, 32-bit write to CMPA:CMPAHR - EPwm3Regs.CMPA.all = ((Uint32)EPwm3Regs.CMPA.half.CMPA << 16) + (DutyFine << 8); - EPwm4Regs.CMPA.all = ((Uint32)EPwm4Regs.CMPA.half.CMPA << 16) + (DutyFine << 8); - -// for (i=0;i<10000;i++){} // Dummy delay between MEP changes - } - } - -} - - -void HRPWM1_Config(period) -{ -// ePWM1 register configuration with HRPWM -// ePWM1A toggle low/high with MEP control on Rising edge - - EPwm1Regs.TBCTL.bit.PRDLD = TB_IMMEDIATE; // set Immediate load - EPwm1Regs.TBPRD = period - 1; // PWM frequency = 1 / period - EPwm1Regs.CMPA.half.CMPA = period / 2; // set duty 50% initially - EPwm1Regs.CMPA.half.CMPAHR = (1 << 8); // initialize HRPWM extension - EPwm1Regs.CMPB = period / 2; // set duty 50% initially - EPwm1Regs.TBPHS.all = 0; - EPwm1Regs.TBCTR = 0; - - EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; - EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // EPWM1 is the Master - EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; - EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; - EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1; - - EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; - EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; - EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; - EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; - - EPwm1Regs.AQCTLA.bit.ZRO = AQ_CLEAR; // PWM toggle low/high - EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; - EPwm1Regs.AQCTLB.bit.ZRO = AQ_CLEAR; - EPwm1Regs.AQCTLB.bit.CBU = AQ_SET; - - EALLOW; - EPwm1Regs.HRCNFG.all = 0x0; - EPwm1Regs.HRCNFG.bit.EDGMODE = HR_REP; //MEP control on Rising edge - EPwm1Regs.HRCNFG.bit.CTLMODE = HR_CMP; - EPwm1Regs.HRCNFG.bit.HRLOAD = HR_CTR_ZERO; - EDIS; -} - -void HRPWM2_Config(period) -{ -// ePWM2 register configuration with HRPWM -// ePWM2A toggle low/high with MEP control on Rising edge - - EPwm2Regs.TBCTL.bit.PRDLD = TB_IMMEDIATE; // set Immediate load - EPwm2Regs.TBPRD = period - 1; // PWM frequency = 1 / period - EPwm2Regs.CMPA.half.CMPA = period / 2; // set duty 50% initially - EPwm1Regs.CMPA.half.CMPAHR = (1 << 8); // initialize HRPWM extension - EPwm2Regs.CMPB = period / 2; // set duty 50% initially - EPwm2Regs.TBPHS.all = 0; - EPwm2Regs.TBCTR = 0; - - EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; - EPwm2Regs.TBCTL.bit.PHSEN = TB_DISABLE; // ePWM2 is the Master - EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; - EPwm2Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; - EPwm2Regs.TBCTL.bit.CLKDIV = TB_DIV1; - - EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; - EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; - EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; - EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; - - EPwm2Regs.AQCTLA.bit.ZRO = AQ_CLEAR; // PWM toggle low/high - EPwm2Regs.AQCTLA.bit.CAU = AQ_SET; - EPwm2Regs.AQCTLB.bit.ZRO = AQ_CLEAR; - EPwm2Regs.AQCTLB.bit.CBU = AQ_SET; - - EALLOW; - EPwm2Regs.HRCNFG.all = 0x0; - EPwm2Regs.HRCNFG.bit.EDGMODE = HR_REP; //MEP control on Rising edge - EPwm2Regs.HRCNFG.bit.CTLMODE = HR_CMP; - EPwm2Regs.HRCNFG.bit.HRLOAD = HR_CTR_ZERO; - - EDIS; - -} -void HRPWM3_Config(period) -{ -// ePWM3 register configuration with HRPWM -// ePWM3A toggle high/low with MEP control on falling edge - - EPwm3Regs.TBCTL.bit.PRDLD = TB_IMMEDIATE; // set Immediate load - EPwm3Regs.TBPRD = period - 1; // PWM frequency = 1 / period - EPwm3Regs.CMPA.half.CMPA = period / 2; // set duty 50% initially - EPwm3Regs.CMPA.half.CMPAHR = (1 << 8); // initialize HRPWM extension - EPwm3Regs.CMPB = period / 2; // set duty 50% initially - EPwm3Regs.TBPHS.all = 0; - EPwm3Regs.TBCTR = 0; - - EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; - EPwm3Regs.TBCTL.bit.PHSEN = TB_DISABLE; // ePWM3 is the Master - EPwm3Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; - EPwm3Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; - EPwm3Regs.TBCTL.bit.CLKDIV = TB_DIV1; - - EPwm3Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; - EPwm3Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; - EPwm3Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; - EPwm3Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; - - EPwm3Regs.AQCTLA.bit.ZRO = AQ_SET; // PWM toggle high/low - EPwm3Regs.AQCTLA.bit.CAU = AQ_CLEAR; - EPwm3Regs.AQCTLB.bit.ZRO = AQ_SET; - EPwm3Regs.AQCTLB.bit.CBU = AQ_CLEAR; - - EALLOW; - EPwm3Regs.HRCNFG.all = 0x0; - EPwm3Regs.HRCNFG.bit.EDGMODE = HR_FEP; //MEP control on falling edge - EPwm3Regs.HRCNFG.bit.CTLMODE = HR_CMP; - EPwm3Regs.HRCNFG.bit.HRLOAD = HR_CTR_ZERO; - EDIS; -} - -void HRPWM4_Config(period) -{ -// ePWM4 register configuration with HRPWM -// ePWM4A toggle high/low with MEP control on falling edge - - EPwm4Regs.TBCTL.bit.PRDLD = TB_IMMEDIATE; // set Immediate load - EPwm4Regs.TBPRD = period - 1; // PWM frequency = 1 / period - EPwm4Regs.CMPA.half.CMPA = period / 2; // set duty 50% initially - EPwm4Regs.CMPA.half.CMPAHR = (1 << 8); // initialize HRPWM extension - EPwm4Regs.CMPB = period / 2; // set duty 50% initially - EPwm4Regs.TBPHS.all = 0; - EPwm4Regs.TBCTR = 0; - - EPwm4Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; - EPwm4Regs.TBCTL.bit.PHSEN = TB_DISABLE; // ePWM4 is the Master - EPwm4Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; - EPwm4Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; - EPwm4Regs.TBCTL.bit.CLKDIV = TB_DIV1; - - EPwm4Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; - EPwm4Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; - EPwm4Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; - EPwm4Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; - - EPwm4Regs.AQCTLA.bit.ZRO = AQ_SET; // PWM toggle high/low - EPwm4Regs.AQCTLA.bit.CAU = AQ_CLEAR; - EPwm4Regs.AQCTLB.bit.ZRO = AQ_SET; - EPwm4Regs.AQCTLB.bit.CBU = AQ_CLEAR; - - EALLOW; - EPwm4Regs.HRCNFG.all = 0x0; - EPwm4Regs.HRCNFG.bit.EDGMODE = HR_FEP; //MEP control on falling edge - EPwm4Regs.HRCNFG.bit.CTLMODE = HR_CMP; - EPwm4Regs.HRCNFG.bit.HRLOAD = HR_CTR_ZERO; - EDIS; -} - - - - - - - - - - - diff --git a/Source/External/v120/DSP2833x_examples/hrpwm_slider/Example_2833xHRPWM_slider.gel b/Source/External/v120/DSP2833x_examples/hrpwm_slider/Example_2833xHRPWM_slider.gel deleted file mode 100644 index 0c5556a..0000000 --- a/Source/External/v120/DSP2833x_examples/hrpwm_slider/Example_2833xHRPWM_slider.gel +++ /dev/null @@ -1,51 +0,0 @@ -/* -// TI File $Revision: /main/5 $ -// Checkin $Date: August 9, 2007 17:17:42 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// project. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -menuitem "DSP2833x HRPWM Slider" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xHRPWM_slider.pjt"); - GEL_ProjectBuild("Example_2833xHRPWM_slider.pjt"); - Setup_WatchWindow(); -} - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xHRPWM_slider.out"); - Setup_WatchWindow(); -} - -hotmenu Setup_WatchWindow() -{ - - GEL_WatchReset(); - GEL_WatchAdd("DutyFine"); - GEL_WatchAdd("EPwm1Regs.CMPA.all"); - GEL_WatchAdd("EPwm2Regs.CMPA.all"); - GEL_WatchAdd("EPwm3Regs.CMPA.all"); - GEL_WatchAdd("EPwm4Regs.CMPA.all"); - GEL_WatchAdd("EPwm1Regs,x"); - GEL_WatchAdd("EPwm2Regs,x"); - GEL_WatchAdd("EPwm3Regs,x"); - GEL_WatchAdd("EPwm4Regs,x"); -} - -menuitem "DSP2833x HRPWM FineDutySlider" -slider FineDutySlider(1, 255, 1, 1, finedutyvalue) -{ - - DutyFine = finedutyvalue; -} diff --git a/Source/External/v120/DSP2833x_examples/hrpwm_slider/Example_2833xHRPWM_slider.pjt b/Source/External/v120/DSP2833x_examples/hrpwm_slider/Example_2833xHRPWM_slider.pjt deleted file mode 100644 index dc610c8..0000000 --- a/Source/External/v120/DSP2833x_examples/hrpwm_slider/Example_2833xHRPWM_slider.pjt +++ /dev/null @@ -1,51 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\hrpwm_slider\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_EPwm.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xHRPWM_slider.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -k -q -al -as -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\hrpwm_slider\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\hrpwm_slider\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" --float_support=fpu32 -ml -mt -v28 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\hrpwm_slider\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -cr -ecode_start -m".\Debug\Example_2833xHRPWM_slider.map" -o".\Debug\Example_2833xHRPWM_slider.out" -stack0x380 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xHRPWM_slider" -x - -["..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" Settings: "Debug"] -LinkOrder=1 - -["..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" Settings: "Debug"] -LinkOrder=2 - diff --git a/Source/External/v120/DSP2833x_examples/i2c_eeprom/Example_2833xI2C_eeprom.c b/Source/External/v120/DSP2833x_examples/i2c_eeprom/Example_2833xI2C_eeprom.c deleted file mode 100644 index d602c08..0000000 --- a/Source/External/v120/DSP2833x_examples/i2c_eeprom/Example_2833xI2C_eeprom.c +++ /dev/null @@ -1,473 +0,0 @@ -// TI File $Revision: /main/10 $ -// Checkin $Date: April 21, 2008 15:43:02 $ -//########################################################################### -// -// FILE: Example_2833xI2c_eeprom.c -// -// TITLE: DSP2833x I2C EEPROM Example -// -// ASSUMPTIONS: -// -// This program requires the DSP2833x header files. -// -// This program requires an external I2C EEPROM connected to -// the I2C bus at address 0x50. -// -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// DESCRIPTION: -// -// This program will write 1-14 words to EEPROM and read them back. -// The data written and the EEPROM address written to are contained -// in the message structure, I2cMsgOut1. The data read back will be -// contained in the message structure I2cMsgIn1. -// -// This program will work with the on-board I2C EEPROM supplied on -// the F2833x eZdsp. -// -// -//########################################################################### -// Original Author: D.F. -// -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File - -// Note: I2C Macros used in this example can be found in the -// DSP2833x_I2C_defines.h file - -// Prototype statements for functions found within this file. -void I2CA_Init(void); -Uint16 I2CA_WriteData(struct I2CMSG *msg); -Uint16 I2CA_ReadData(struct I2CMSG *msg); -interrupt void i2c_int1a_isr(void); -void pass(void); -void fail(void); - -#define I2C_SLAVE_ADDR 0x50 -#define I2C_NUMBYTES 4 -#define I2C_EEPROM_HIGH_ADDR 0x00 -#define I2C_EEPROM_LOW_ADDR 0x30 - -// Global variables -// Two bytes will be used for the outgoing address, -// thus only setup 14 bytes maximum -struct I2CMSG I2cMsgOut1={I2C_MSGSTAT_SEND_WITHSTOP, - I2C_SLAVE_ADDR, - I2C_NUMBYTES, - I2C_EEPROM_HIGH_ADDR, - I2C_EEPROM_LOW_ADDR, - 0x12, // Msg Byte 1 - 0x34, // Msg Byte 2 - 0x56, // Msg Byte 3 - 0x78, // Msg Byte 4 - 0x9A, // Msg Byte 5 - 0xBC, // Msg Byte 6 - 0xDE, // Msg Byte 7 - 0xF0, // Msg Byte 8 - 0x11, // Msg Byte 9 - 0x10, // Msg Byte 10 - 0x11, // Msg Byte 11 - 0x12, // Msg Byte 12 - 0x13, // Msg Byte 13 - 0x12}; // Msg Byte 14 - - -struct I2CMSG I2cMsgIn1={ I2C_MSGSTAT_SEND_NOSTOP, - I2C_SLAVE_ADDR, - I2C_NUMBYTES, - I2C_EEPROM_HIGH_ADDR, - I2C_EEPROM_LOW_ADDR}; - -struct I2CMSG *CurrentMsgPtr; // Used in interrupts -Uint16 PassCount; -Uint16 FailCount; - -void main(void) -{ - Uint16 Error; - Uint16 i; - - CurrentMsgPtr = &I2cMsgOut1; - -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - - -// Step 2. Initalize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); -// Setup only the GP I/O only for I2C functionality - InitI2CGpio(); - -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - -// Interrupts that are used in this example are re-mapped to -// ISR functions found within this file. - EALLOW; // This is needed to write to EALLOW protected registers - PieVectTable.I2CINT1A = &i2c_int1a_isr; - EDIS; // This is needed to disable write to EALLOW protected registers - -// Step 4. Initialize all the Device Peripherals: -// This function is found in DSP2833x_InitPeripherals.c -// InitPeripherals(); // Not required for this example - I2CA_Init(); - -// Step 5. User specific code - - // Clear Counters - PassCount = 0; - FailCount = 0; - - // Clear incoming message buffer - for (i = 0; i < I2C_MAX_BUFFER_SIZE; i++) - { - I2cMsgIn1.MsgBuffer[i] = 0x0000; - } - -// Enable interrupts required for this example - -// Enable I2C interrupt 1 in the PIE: Group 8 interrupt 1 - PieCtrlRegs.PIEIER8.bit.INTx1 = 1; - -// Enable CPU INT8 which is connected to PIE group 8 - IER |= M_INT8; - EINT; - - // Application loop - for(;;) - { - ////////////////////////////////// - // Write data to EEPROM section // - ////////////////////////////////// - - // Check the outgoing message to see if it should be sent. - // In this example it is initialized to send with a stop bit. - if(I2cMsgOut1.MsgStatus == I2C_MSGSTAT_SEND_WITHSTOP) - { - Error = I2CA_WriteData(&I2cMsgOut1); - // If communication is correctly initiated, set msg status to busy - // and update CurrentMsgPtr for the interrupt service routine. - // Otherwise, do nothing and try again next loop. Once message is - // initiated, the I2C interrupts will handle the rest. Search for - // ICINTR1A_ISR in the i2c_eeprom_isr.c file. - if (Error == I2C_SUCCESS) - { - CurrentMsgPtr = &I2cMsgOut1; - I2cMsgOut1.MsgStatus = I2C_MSGSTAT_WRITE_BUSY; - } - } // end of write section - - /////////////////////////////////// - // Read data from EEPROM section // - /////////////////////////////////// - - // Check outgoing message status. Bypass read section if status is - // not inactive. - if (I2cMsgOut1.MsgStatus == I2C_MSGSTAT_INACTIVE) - { - // Check incoming message status. - if(I2cMsgIn1.MsgStatus == I2C_MSGSTAT_SEND_NOSTOP) - { - // EEPROM address setup portion - while(I2CA_ReadData(&I2cMsgIn1) != I2C_SUCCESS) - { - // Maybe setup an attempt counter to break an infinite while - // loop. The EEPROM will send back a NACK while it is performing - // a write operation. Even though the write communique is - // complete at this point, the EEPROM could still be busy - // programming the data. Therefore, multiple attempts are - // necessary. - } - // Update current message pointer and message status - CurrentMsgPtr = &I2cMsgIn1; - I2cMsgIn1.MsgStatus = I2C_MSGSTAT_SEND_NOSTOP_BUSY; - } - - // Once message has progressed past setting up the internal address - // of the EEPROM, send a restart to read the data bytes from the - // EEPROM. Complete the communique with a stop bit. MsgStatus is - // updated in the interrupt service routine. - else if(I2cMsgIn1.MsgStatus == I2C_MSGSTAT_RESTART) - { - // Read data portion - while(I2CA_ReadData(&I2cMsgIn1) != I2C_SUCCESS) - { - // Maybe setup an attempt counter to break an infinite while - // loop. - } - // Update current message pointer and message status - CurrentMsgPtr = &I2cMsgIn1; - I2cMsgIn1.MsgStatus = I2C_MSGSTAT_READ_BUSY; - } - } // end of read section - - } // end of for(;;) -} // end of main - - -void I2CA_Init(void) -{ - // Initialize I2C - I2caRegs.I2CSAR = 0x0050; // Slave address - EEPROM control code - - #if (CPU_FRQ_150MHZ) // Default - For 150MHz SYSCLKOUT - I2caRegs.I2CPSC.all = 14; // Prescaler - need 7-12 Mhz on module clk (150/15 = 10MHz) - #endif - #if (CPU_FRQ_100MHZ) // For 100 MHz SYSCLKOUT - I2caRegs.I2CPSC.all = 9; // Prescaler - need 7-12 Mhz on module clk (100/10 = 10MHz) - #endif - - I2caRegs.I2CCLKL = 10; // NOTE: must be non zero - I2caRegs.I2CCLKH = 5; // NOTE: must be non zero - I2caRegs.I2CIER.all = 0x24; // Enable SCD & ARDY interrupts - - I2caRegs.I2CMDR.all = 0x0020; // Take I2C out of reset - // Stop I2C when suspended - - I2caRegs.I2CFFTX.all = 0x6000; // Enable FIFO mode and TXFIFO - I2caRegs.I2CFFRX.all = 0x2040; // Enable RXFIFO, clear RXFFINT, - - return; -} - - -Uint16 I2CA_WriteData(struct I2CMSG *msg) -{ - Uint16 i; - - // Wait until the STP bit is cleared from any previous master communication. - // Clearing of this bit by the module is delayed until after the SCD bit is - // set. If this bit is not checked prior to initiating a new message, the - // I2C could get confused. - if (I2caRegs.I2CMDR.bit.STP == 1) - { - return I2C_STP_NOT_READY_ERROR; - } - - // Setup slave address - I2caRegs.I2CSAR = msg->SlaveAddress; - - // Check if bus busy - if (I2caRegs.I2CSTR.bit.BB == 1) - { - return I2C_BUS_BUSY_ERROR; - } - - // Setup number of bytes to send - // MsgBuffer + Address - I2caRegs.I2CCNT = msg->NumOfBytes+2; - - // Setup data to send - I2caRegs.I2CDXR = msg->MemoryHighAddr; - I2caRegs.I2CDXR = msg->MemoryLowAddr; -// for (i=0; iNumOfBytes-2; i++) - for (i=0; iNumOfBytes; i++) - - { - I2caRegs.I2CDXR = *(msg->MsgBuffer+i); - } - - // Send start as master transmitter - I2caRegs.I2CMDR.all = 0x6E20; - - return I2C_SUCCESS; -} - - -Uint16 I2CA_ReadData(struct I2CMSG *msg) -{ - // Wait until the STP bit is cleared from any previous master communication. - // Clearing of this bit by the module is delayed until after the SCD bit is - // set. If this bit is not checked prior to initiating a new message, the - // I2C could get confused. - if (I2caRegs.I2CMDR.bit.STP == 1) - { - return I2C_STP_NOT_READY_ERROR; - } - - I2caRegs.I2CSAR = msg->SlaveAddress; - - if(msg->MsgStatus == I2C_MSGSTAT_SEND_NOSTOP) - { - // Check if bus busy - if (I2caRegs.I2CSTR.bit.BB == 1) - { - return I2C_BUS_BUSY_ERROR; - } - I2caRegs.I2CCNT = 2; - I2caRegs.I2CDXR = msg->MemoryHighAddr; - I2caRegs.I2CDXR = msg->MemoryLowAddr; - I2caRegs.I2CMDR.all = 0x2620; // Send data to setup EEPROM address - } - else if(msg->MsgStatus == I2C_MSGSTAT_RESTART) - { - I2caRegs.I2CCNT = msg->NumOfBytes; // Setup how many bytes to expect - I2caRegs.I2CMDR.all = 0x2C20; // Send restart as master receiver - } - - return I2C_SUCCESS; -} - -interrupt void i2c_int1a_isr(void) // I2C-A -{ - Uint16 IntSource, i; - - // Read interrupt source - IntSource = I2caRegs.I2CISRC.all; - - // Interrupt source = stop condition detected - if(IntSource == I2C_SCD_ISRC) - { - // If completed message was writing data, reset msg to inactive state - if (CurrentMsgPtr->MsgStatus == I2C_MSGSTAT_WRITE_BUSY) - { - CurrentMsgPtr->MsgStatus = I2C_MSGSTAT_INACTIVE; - } - else - { - // If a message receives a NACK during the address setup portion of the - // EEPROM read, the code further below included in the register access ready - // interrupt source code will generate a stop condition. After the stop - // condition is received (here), set the message status to try again. - // User may want to limit the number of retries before generating an error. - if(CurrentMsgPtr->MsgStatus == I2C_MSGSTAT_SEND_NOSTOP_BUSY) - { - CurrentMsgPtr->MsgStatus = I2C_MSGSTAT_SEND_NOSTOP; - } - // If completed message was reading EEPROM data, reset msg to inactive state - // and read data from FIFO. - else if (CurrentMsgPtr->MsgStatus == I2C_MSGSTAT_READ_BUSY) - { - CurrentMsgPtr->MsgStatus = I2C_MSGSTAT_INACTIVE; - for(i=0; i < I2C_NUMBYTES; i++) - { - CurrentMsgPtr->MsgBuffer[i] = I2caRegs.I2CDRR; - } - { - // Check recieved data - for(i=0; i < I2C_NUMBYTES; i++) - { - if(I2cMsgIn1.MsgBuffer[i] == I2cMsgOut1.MsgBuffer[i]) - { - PassCount++; - } - else - { - FailCount++; - } - } - if(PassCount == I2C_NUMBYTES) - { - pass(); - } - else - { - fail(); - } - - - } - - } - } - } // end of stop condition detected - - // Interrupt source = Register Access Ready - // This interrupt is used to determine when the EEPROM address setup portion of the - // read data communication is complete. Since no stop bit is commanded, this flag - // tells us when the message has been sent instead of the SCD flag. If a NACK is - // received, clear the NACK bit and command a stop. Otherwise, move on to the read - // data portion of the communication. - else if(IntSource == I2C_ARDY_ISRC) - { - if(I2caRegs.I2CSTR.bit.NACK == 1) - { - I2caRegs.I2CMDR.bit.STP = 1; - I2caRegs.I2CSTR.all = I2C_CLR_NACK_BIT; - } - else if(CurrentMsgPtr->MsgStatus == I2C_MSGSTAT_SEND_NOSTOP_BUSY) - { - CurrentMsgPtr->MsgStatus = I2C_MSGSTAT_RESTART; - } - } // end of register access ready - - else - { - // Generate some error due to invalid interrupt source - asm(" ESTOP0"); - } - - // Enable future I2C (PIE Group 8) interrupts - PieCtrlRegs.PIEACK.all = PIEACK_GROUP8; -} - -void pass() -{ - asm(" ESTOP0"); - for(;;); -} - -void fail() -{ - asm(" ESTOP0"); - for(;;); -} - - -//=========================================================================== -// No more. -//=========================================================================== diff --git a/Source/External/v120/DSP2833x_examples/i2c_eeprom/Example_2833xI2C_eeprom.gel b/Source/External/v120/DSP2833x_examples/i2c_eeprom/Example_2833xI2C_eeprom.gel deleted file mode 100644 index 3a11875..0000000 --- a/Source/External/v120/DSP2833x_examples/i2c_eeprom/Example_2833xI2C_eeprom.gel +++ /dev/null @@ -1,39 +0,0 @@ -/* -// TI File $Revision: /main/5 $ -// Checkin $Date: August 9, 2007 17:18:05 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// project. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -menuitem "DSP2833x I2C EEPROM Example" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xI2C_eeprom.pjt"); - GEL_ProjectBuild("Example_2833xI2C_eeprom.pjt"); - Setup_WatchWindow(); -} - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xI2C_eeprom.out"); - Setup_WatchWindow(); -} - -hotmenu Setup_WatchWindow() -{ - GEL_WatchReset(); - GEL_WatchAdd("PassCount",,"Correct Bytes"); - GEL_WatchAdd("FailCount",,"Incorrect Bytes"); - GEL_WatchAdd("I2cMsgIn1.MsgBuffer",,"Input Buffer"); - GEL_WatchAdd("I2cMsgOut1.MsgBuffer",,"Output Buffer"); - GEL_WatchAdd("I2caRegs,x"); -} diff --git a/Source/External/v120/DSP2833x_examples/i2c_eeprom/Example_2833xI2C_eeprom.pjt b/Source/External/v120/DSP2833x_examples/i2c_eeprom/Example_2833xI2C_eeprom.pjt deleted file mode 100644 index 06c13e7..0000000 --- a/Source/External/v120/DSP2833x_examples/i2c_eeprom/Example_2833xI2C_eeprom.pjt +++ /dev/null @@ -1,46 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\i2c_eeprom\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CpuTimers.c" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_I2C.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xI2C_eeprom.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\i2c_eeprom\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\i2c_eeprom\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" --float_support=fpu32 -ml -mt -v28 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\i2c_eeprom\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -ecode_start -m".\Debug\Example_2833xI2C_eeprom.map" -o".\Debug\Example_2833xI2C_eeprom.out" -stack0x380 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xI2C_eeprom.out" -x - diff --git a/Source/External/v120/DSP2833x_examples/lpm_haltwake/Example_2833xHaltWake.c b/Source/External/v120/DSP2833x_examples/lpm_haltwake/Example_2833xHaltWake.c deleted file mode 100644 index dd70f78..0000000 --- a/Source/External/v120/DSP2833x_examples/lpm_haltwake/Example_2833xHaltWake.c +++ /dev/null @@ -1,167 +0,0 @@ -// TI File $Revision: /main/13 $ -// Checkin $Date: June 19, 2008 17:08:02 $ -//########################################################################### -// -// FILE: Example_2833xHaltWake.c -// -// TITLE: Device Halt Mode and Wakeup Program. -// -// ASSUMPTIONS: -// -// This program requires the DSP2833x header files. -// -// GPIO0 is configured as the LPM wakeup pin to trigger a -// WAKEINT interrupt upon detection of a low pulse. -// Initially, pull GPIO0 high externally. To wake device -// from halt mode, pull GPIO0 low for at least the crystal -// startup time + 2 OSCLKS, then pull it high again. -// -// To observe when device wakes from HALT mode, monitor -// GPIO1 with an oscilloscope (set to 1 in WAKEINT ISR) -// -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// DESCRIPTION: -// -// This example puts the device into HALT mode. If the lowest -// possible current consumption in HALT mode is desired, the -// JTAG connector must be removed from the device board while -// the device is in HALT mode. -// -// The example then wakes up the device from HALT using GPIO0. -// GPIO0 wakes the device from HALT mode when a low pulse -// (signal goes high->low->high)is detected on the pin. -// This pin must be pulsed by an external agent for wakeup. -// -// As soon as GPIO0 goes high again after the pulse, the device -// should wake up, and GPIO1 can be observed to toggle. -// -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File - -// Prototype statements for functions found within this file. - -interrupt void WAKE_ISR(void); // ISR for WAKEINT - -void main() - -{ - - asm(" EALLOW"); - -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - -// Step 2. Initalize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); // Skipped for this example -// Enable all pull-ups - EALLOW; - GpioCtrlRegs.GPAPUD.all = 0; - GpioCtrlRegs.GPBPUD.all = 0; - GpioCtrlRegs.GPADIR.bit.GPIO1 = 1; // GPIO1 set in the ISR to indicate device woken up. - GpioIntRegs.GPIOLPMSEL.bit.GPIO0 = 1; // Choose GPIO0 pin for wakeup - EDIS; - -/// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize the PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - - -// Interrupts that are used in this example are re-mapped to -// ISR functions found within this file. - EALLOW; // This is needed to write to EALLOW protected registers - PieVectTable.WAKEINT = &WAKE_ISR; - EDIS; - -// Step 4. Initialize all the Device Peripherals: -// Not applicable for this example. - -// Step 5. User specific code, enable interrupts: - -// Enable CPU INT1 which is connected to WakeInt: - IER |= M_INT1; - -// Enable WAKEINT in the PIE: Group 1 interrupt 8 - PieCtrlRegs.PIEIER1.bit.INTx8 = 1; - PieCtrlRegs.PIEACK.bit.ACK1 = 1; -// Enable global Interrupts: - EINT; // Enable Global interrupt INTM - -// Write the LPM code value - EALLOW; - if (SysCtrlRegs.PLLSTS.bit.MCLKSTS != 1) // Only enter low power mode when PLL is not in limp mode. - { - SysCtrlRegs.LPMCR0.bit.LPM = 0x0002; // LPM mode = Halt - } - EDIS; -// Force device into HALT - - asm(" IDLE"); // Device waits in IDLE until falling edge on GPIO0/XNMI pin - // wakes device from halt mode. - for(;;){} // Loop here after wake-up. - -} - -/* ----------------------------------------------- */ -/* ISR for WAKEINT - Will be executed when */ -/* low pulse triggered on GPIO0 pin */ -/* ------------------------------------------------*/ -interrupt void WAKE_ISR(void) -{ - GpioDataRegs.GPATOGGLE.bit.GPIO1 = 1; // Toggle GPIO1 in the ISR - monitored with oscilloscope - PieCtrlRegs.PIEACK.bit.ACK1 = 1; -} diff --git a/Source/External/v120/DSP2833x_examples/lpm_haltwake/Example_2833xHaltWake.gel b/Source/External/v120/DSP2833x_examples/lpm_haltwake/Example_2833xHaltWake.gel deleted file mode 100644 index 584ec59..0000000 --- a/Source/External/v120/DSP2833x_examples/lpm_haltwake/Example_2833xHaltWake.gel +++ /dev/null @@ -1,29 +0,0 @@ -/* -// TI File $Revision: /main/5 $ -// Checkin $Date: August 9, 2007 17:24:32 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// project. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -menuitem "DSP2833x Low Power Halt Mode Wakeup Example" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xHaltWake.pjt"); - GEL_ProjectBuild("Example_2833xHaltWake.pjt"); - -} - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xHaltWake.out"); - -} diff --git a/Source/External/v120/DSP2833x_examples/lpm_haltwake/Example_2833xHaltWake.pjt b/Source/External/v120/DSP2833x_examples/lpm_haltwake/Example_2833xHaltWake.pjt deleted file mode 100644 index 266e087..0000000 --- a/Source/External/v120/DSP2833x_examples/lpm_haltwake/Example_2833xHaltWake.pjt +++ /dev/null @@ -1,46 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\lpm_haltwake\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="CustomBuilder" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CpuTimers.c" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xHaltWake.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\lpm_haltwake\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\lpm_haltwake\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" --float_support=fpu32 -ml -mt -v28 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\lpm_haltwake\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -ecode_start -m".\Debug\Example_2833xHaltWake.map" -o".\Debug\Example_2833xHaltWake.out" -stack0x200 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xHaltWake.out" -x - diff --git a/Source/External/v120/DSP2833x_examples/lpm_idlewake/Example_2833xIdleWake.c b/Source/External/v120/DSP2833x_examples/lpm_idlewake/Example_2833xIdleWake.c deleted file mode 100644 index f9167ce..0000000 --- a/Source/External/v120/DSP2833x_examples/lpm_idlewake/Example_2833xIdleWake.c +++ /dev/null @@ -1,175 +0,0 @@ -// TI File $Revision: /main/10 $ -// Checkin $Date: May 12, 2008 14:23:32 $ -//########################################################################### -// -// FILE: Example_2833xIdleWake.c -// -// TITLE: Device Idle Mode and Wakeup Program. -// -// ASSUMPTIONS: -// -// This program requires the DSP2833x header files. -// -// GPIO0 is configured as an XINT1 pin to trigger a -// XINT1 interrupt upon detection of a falling edge. -// Initially, pull GPIO0 high externally. To wake device -// from idle mode by triggering an XINT1 interrupt, -// pull GPIO0 low (falling edge) -// -// To observe when device wakes from IDLE mode, monitor -// GPIO1 with an oscilloscope (set to 1 in XINT1 ISR) -// -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// DESCRIPTION: -// -// This example puts the device into IDLE mode. -// -// The example then wakes up the device from IDLE using XINT1 -// which triggers on a falling edge from GPIO0. -// This pin must be pulled from high to low by an external agent for -// wakeup. -// -// To observe the device wakeup from IDLE mode, monitor GPIO1 with -// an oscilloscope, which goes high in the XINT_1_ISR. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File - -// Prototype statements for functions found within this file. -interrupt void XINT_1_ISR(void); // ISR - -void main() - -{ -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - -// Step 2. Initalize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); // Skipped for this example - - EALLOW; - GpioCtrlRegs.GPAPUD.all = 0; // Enable all Pull-ups - GpioCtrlRegs.GPBPUD.all = 0; - GpioIntRegs.GPIOXINT1SEL.bit.GPIOSEL = 0; // Choose GPIO0 as the XINT1 pin. - GpioCtrlRegs.GPADIR.all = 0xFFFFFFFE; // All pins are outputs except 0 - GpioDataRegs.GPADAT.all = 0x00000000; // All I/O pins are driven low - EDIS; - - XIntruptRegs.XINT1CR.bit.ENABLE = 1; // Enable XINT1 pin - XIntruptRegs.XINT1CR.bit.POLARITY = 0; // Interrupt triggers on falling edge - -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize the PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - -// Interrupts that are used in this example are re-mapped to -// ISR functions found within this file. - EALLOW; // This is needed to write to EALLOW protected registers - PieVectTable.XINT1 = &XINT_1_ISR; - EDIS; - -// Step 4. Initialize all the Device Peripherals: -// Not applicable for this example. - -// Step 5. User specific code, enable interrupts: - -// Enable CPU INT1 which is connected to WakeInt: - IER |= M_INT1; - -// Enable XINT1 in the PIE: Group 1 interrupt 4 - PieCtrlRegs.PIEIER1.bit.INTx4 = 1; - PieCtrlRegs.PIEACK.bit.ACK1 = 1; - -// Enable global Interrupts: - EINT; // Enable Global interrupt INTM - -// Write the LPM code value - EALLOW; - if (SysCtrlRegs.PLLSTS.bit.MCLKSTS != 1) // Only enter Idle mode when PLL is not in limp mode. - { - SysCtrlRegs.LPMCR0.bit.LPM = 0x0000; // LPM mode = Idle - } - EDIS; - asm(" IDLE"); // Device waits in IDLE until XINT1 interrupts - for(;;){} -} - - -interrupt void XINT_1_ISR(void) -{ - GpioDataRegs.GPASET.bit.GPIO1 = 1; // GPIO1 is driven high upon exiting IDLE. - PieCtrlRegs.PIEACK.bit.ACK1 = 1; - EINT; - return; -} - - - - - - - - - - - - - - - - - diff --git a/Source/External/v120/DSP2833x_examples/lpm_idlewake/Example_2833xIdleWake.gel b/Source/External/v120/DSP2833x_examples/lpm_idlewake/Example_2833xIdleWake.gel deleted file mode 100644 index 97129a8..0000000 --- a/Source/External/v120/DSP2833x_examples/lpm_idlewake/Example_2833xIdleWake.gel +++ /dev/null @@ -1,28 +0,0 @@ -/* -// TI File $Revision: /main/5 $ -// Checkin $Date: August 9, 2007 17:24:43 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// project. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -menuitem "DSP2833x Low Power Idle Mode Wakeup Example" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xIdleWake.pjt"); - GEL_ProjectBuild("Example_2833xIdleWake.pjt"); -} - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xIdleWake.out"); - -} diff --git a/Source/External/v120/DSP2833x_examples/lpm_idlewake/Example_2833xIdleWake.pjt b/Source/External/v120/DSP2833x_examples/lpm_idlewake/Example_2833xIdleWake.pjt deleted file mode 100644 index 88e5a28..0000000 --- a/Source/External/v120/DSP2833x_examples/lpm_idlewake/Example_2833xIdleWake.pjt +++ /dev/null @@ -1,46 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\lpm_idlewake\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="CustomBuilder" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CpuTimers.c" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xIdleWake.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\lpm_idlewake\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\lpm_idlewake\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" --float_support=fpu32 -ml -mt -v28 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\lpm_idlewake\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -ecode_start -m".\Debug\Example_2833xIdleWake.map" -o".\Debug\Example_2833xIdleWake.out" -stack0x200 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xIdleWake.out" -x - diff --git a/Source/External/v120/DSP2833x_examples/lpm_standbywake/Example_2833xStandbyWake.c b/Source/External/v120/DSP2833x_examples/lpm_standbywake/Example_2833xStandbyWake.c deleted file mode 100644 index 2a30112..0000000 --- a/Source/External/v120/DSP2833x_examples/lpm_standbywake/Example_2833xStandbyWake.c +++ /dev/null @@ -1,169 +0,0 @@ -// TI File $Revision: /main/11 $ -// Checkin $Date: June 19, 2008 17:08:04 $ -//########################################################################### -// -// FILE: Example_2833xStandbyWake.c -// -// TITLE: Device Standby Mode and Wakeup Program. -// -// ASSUMPTIONS: -// -// This program requires the DSP2833x header files. -// -// GPIO0 is configured as the LPM wakeup pin to trigger a -// WAKEINT interrupt upon detection of a low pulse. -// Initially, pull GPIO0 high externally. To wake device -// from standby mode, pull GPIO0 low for at least (2+QUALSTDBY) -// OSCLKS, then pull it high again. -// -// To observe when device wakes from STANDBY mode, monitor -// GPIO1 with an oscilloscope (set to 1 in WAKEINT ISR) -// -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// DESCRIPTION: -// -// This example puts the device into STANDBY mode. If the lowest -// possible current consumption in STANDBY mode is desired, the -// JTAG connector must be removed from the device board while -// the device is in STANDBY mode. -// -// The example then wakes up the device from STANDBY using GPIO0. -// GPIO0 wakes the device from STANDBY mode when a low pulse -// (signal goes high->low->high)is detected on the pin. -// This pin must be pulsed by an external agent for wakeup. -// -// As soon as GPIO0 goes high again after the pulse, the device -// should wake up, and GPIO1 can be observed to toggle. -// -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File - -// Prototype statements for functions found within this file. - -interrupt void WAKE_ISR(void); // ISR for WAKEINT - -void main() - -{ - -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - -// Step 2. Initalize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); // Skipped for this example - - EALLOW; - GpioCtrlRegs.GPAPUD.all = 0; // Enable all Pull-ups - GpioCtrlRegs.GPBPUD.all = 0; - GpioCtrlRegs.GPADIR.bit.GPIO1 = 1; // GPIO1 set in the ISR to indicate device woken up. - GpioIntRegs.GPIOLPMSEL.bit.GPIO0 = 1; // Choose GPIO0 pin for wakeup - EDIS; - -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize the PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - - -// Interrupts that are used in this example are re-mapped to -// ISR functions found within this file. - EALLOW; // This is needed to write to EALLOW protected registers - PieVectTable.WAKEINT = &WAKE_ISR; - EDIS; - -// Step 4. Initialize all the Device Peripherals: -// Not applicable for this example. - -// Step 5. User specific code, enable interrupts: - -// Enable CPU INT1 which is connected to WakeInt: - IER |= M_INT1; - -// Enable WAKEINT in the PIE: Group 1 interrupt 8 - PieCtrlRegs.PIEIER1.bit.INTx8 = 1; - PieCtrlRegs.PIEACK.bit.ACK1 = 1; -// Enable global Interrupts: - EINT; // Enable Global interrupt INTM - -// Choose qualification cycles in LPMCR0 register - SysCtrlRegs.LPMCR0.bit.QUALSTDBY = 0; // The wakeup signal should be (2+QUALSTDBY) OSCCLKs wide. - -// Write the LPM code value - EALLOW; - if (SysCtrlRegs.PLLSTS.bit.MCLKSTS != 1) // Only enter Standby mode when PLL is not in limp mode. - { - SysCtrlRegs.LPMCR0.bit.LPM = 0x0001; // LPM mode = Standby - } - EDIS; -// Force device into STANDBY - - asm(" IDLE"); // Device waits in IDLE until falling edge on GPIO0/XNMI pin - // wakes device from Standby mode. - for(;;){} // Loop here after wake-up. - -} - -/* ----------------------------------------------- */ -/* ISR for WAKEINT - Will be executed when */ -/* low pulse triggered on GPIO0 pin */ -/* ------------------------------------------------*/ -interrupt void WAKE_ISR(void) -{ - GpioDataRegs.GPATOGGLE.bit.GPIO1 = 1; // Toggle GPIO1 in the ISR - monitored with oscilloscope - PieCtrlRegs.PIEACK.bit.ACK1 = 1; - -} diff --git a/Source/External/v120/DSP2833x_examples/lpm_standbywake/Example_2833xStandbyWake.gel b/Source/External/v120/DSP2833x_examples/lpm_standbywake/Example_2833xStandbyWake.gel deleted file mode 100644 index cfec4cc..0000000 --- a/Source/External/v120/DSP2833x_examples/lpm_standbywake/Example_2833xStandbyWake.gel +++ /dev/null @@ -1,29 +0,0 @@ -/* -// TI File $Revision: /main/5 $ -// Checkin $Date: August 9, 2007 17:24:54 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// project. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -menuitem "DSP2833x Low Power Standby Mode Wakeup Example" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xStandbyWake.pjt"); - GEL_ProjectBuild("Example_2833xStandbyWake.pjt"); - -} - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xStandbyWake.out"); - -} diff --git a/Source/External/v120/DSP2833x_examples/lpm_standbywake/Example_2833xStandbyWake.pjt b/Source/External/v120/DSP2833x_examples/lpm_standbywake/Example_2833xStandbyWake.pjt deleted file mode 100644 index 7ed3469..0000000 --- a/Source/External/v120/DSP2833x_examples/lpm_standbywake/Example_2833xStandbyWake.pjt +++ /dev/null @@ -1,45 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\lpm_standbywake\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CpuTimers.c" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xStandbyWake.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\lpm_standbywake\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\lpm_standbywake\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" --float_support=fpu32 -ml -mt -v28 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\lpm_standbywake\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -ecode_start -m".\Debug\Example_2833xStandbyWake.map" -o".\Debug\Example_2833xStandbyWake.out" -stack0x200 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xStandbyWake.out" -x - diff --git a/Source/External/v120/DSP2833x_examples/mcbsp_loopback/Example_2833xMcBSP_DLB.c b/Source/External/v120/DSP2833x_examples/mcbsp_loopback/Example_2833xMcBSP_DLB.c deleted file mode 100644 index 84f748e..0000000 --- a/Source/External/v120/DSP2833x_examples/mcbsp_loopback/Example_2833xMcBSP_DLB.c +++ /dev/null @@ -1,244 +0,0 @@ -//########################################################################### -// -// FILE: Example_2833xMCBSP_FFDLB.c -// -// TITLE: DSP2833x Device McBSP Digital Loop Back program. -// -// ASSUMPTIONS: -// -// This program requires the DSP2833x header files. -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// DESCRIPTION: -// -// Digital loopback tests for the McBSP peripheral. -// -// Three different serial word sizes can be tested. -// -// Before compiling this project: -// * Select the serial word size (8/16/32) by using -// the #define statements at the beginning of the code. -// - -// -// This example does not use interrupts. Instead, a polling -// method is used to check the receive data. The incoming -// data is checked for accuracy. If an error is found the error() -// function is called and execution stops. -// -// This program will execute until terminated by the user. -// -// Watch Variables: -// sdata1 -// sdata2 -// rdata1 -// rdata2 -// rdata1_point -// rdata2_point -// -//########################################################################### -// -// Original Author: S.S. -// -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File - -// Choose a word size. Uncomment one of the following lines -#define WORD_SIZE 8 // Run a loopback test in 8-bit mode -//#define WORD_SIZE 16 // Run a loopback test in 16-bit mode -//#define WORD_SIZE 32 // Run a loopback test in 32-bit mode - - -// Prototype statements for functions found within this file. -void mcbsp_xmit(int a, int b); -void error(void); - -// Global data for this example -Uint16 sdata1 = 0x000; // Sent Data -Uint16 rdata1 = 0x000; // Recieved Data - -Uint16 sdata2 = 0x000; // Sent Data -Uint16 rdata2 = 0x000; // Recieved Data - -Uint16 rdata1_point; -Uint16 rdata2_point; - - -void main(void) -{ - Uint16 datasize; - -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - -// Step 2. Initalize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); // Skipped for this example -// For this example, only enable the GPIO for McBSP-A - InitMcbspaGpio(); - -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - -// Step 4. Initialize all the Device Peripherals: -// This function is found in DSP2833x_InitPeripherals.c -// InitPeripherals(); // Not required for this example - - datasize = WORD_SIZE; - InitMcbspa(); // Initalize the Mcbsp-A in loopback test mode - -// Step 5. User specific code, enable interrupts: - - if(datasize == 8) // Run a loopback test in 8-bit mode - { - InitMcbspa8bit(); - sdata2 = 0x0000; // value is a don't care for 8-bit mode - sdata1 = 0x0000; // 8-bit value to send - rdata2_point = 0x0000; // value is a don't care for 8-bit mode - rdata1_point = sdata1; - for(;;) - { - mcbsp_xmit(sdata1,sdata2); - sdata1++; - sdata1 = sdata1 & 0x00FF; // Keep it to 8-bits - - while(McbspaRegs.SPCR1.bit.RRDY == 0 ) { } // Check for receive - rdata1 = McbspaRegs.DRR1.all; // read DRR1 - if(rdata1 != rdata1_point) error(); - rdata1_point++; - rdata1_point = rdata1_point & 0x00FF; // Keep it to 8-bits - - asm(" nop"); // Good place for a breakpoint - // Check: rdatax_point = sdatax - // rdata1 = sdata1 - 1 - } - } - - - else if(datasize == 16) // Run a loopback test in 16-bit mode - { - InitMcbspa16bit(); - sdata2 = 0x0000; // value is a don't care for 16-bit mode - sdata1 = 0x0000; // 16-bit value to send - rdata2_point = 0x0000; // value is a don't care for 16-bit mode - rdata1_point = sdata1; - for(;;) - { - mcbsp_xmit(sdata1,sdata2); - sdata1++; - - while(McbspaRegs.SPCR1.bit.RRDY == 0 ) { } // Check for receive - rdata1 = McbspaRegs.DRR1.all; // read DRR1 - if(rdata1 != rdata1_point) error(); - rdata1_point++; - - asm(" nop"); // Good place for a breakpoint - // Check: rdatax_point = sdatax - // rdata1 = sdata1 - 1 - } - } - - - else if(datasize == 32) // Run a loopback test in 16-bit mode - { - InitMcbspa32bit(); - sdata1 = 0x0000; - sdata2 = 0xFFFF; - rdata1_point = sdata1; - rdata2_point = sdata2; - for(;;) - { - mcbsp_xmit(sdata1,sdata2); - sdata1++; - sdata2--; - - while(McbspaRegs.SPCR1.bit.RRDY == 0 ) { } // Check for receive - rdata2 = McbspaRegs.DRR2.all; - rdata1 = McbspaRegs.DRR1.all; - if(rdata1 != rdata1_point) error(); - if(rdata2 != rdata2_point) error(); - rdata1_point++; - rdata2_point--; - - asm(" nop"); // Good place for a breakpoint - // Check: rdatax_point = sdatax - // rdata1 = sdata1 - 1 - // rdata2 = sdata2 + 1 - } - } -} - - - -// Some Useful local functions - -void error(void) -{ - asm(" ESTOP0"); // test failed!! Stop! - for (;;); -} - -void mcbsp_xmit(int a, int b) -{ - McbspaRegs.DXR2.all=b; - McbspaRegs.DXR1.all=a; -} - -//=========================================================================== -// No more. -//=========================================================================== - - diff --git a/Source/External/v120/DSP2833x_examples/mcbsp_loopback/Example_2833xMcBSP_DLB.gel b/Source/External/v120/DSP2833x_examples/mcbsp_loopback/Example_2833xMcBSP_DLB.gel deleted file mode 100644 index 52976d1..0000000 --- a/Source/External/v120/DSP2833x_examples/mcbsp_loopback/Example_2833xMcBSP_DLB.gel +++ /dev/null @@ -1,27 +0,0 @@ -menuitem "DSP2833x McBSP loopback" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xMcBSP_DLB.pjt"); - GEL_ProjectBuild("Example_2833xMcBSP_DLB.pjt"); - Setup_WatchWindow(); -} - - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xMcBSP_DLB.out"); - Setup_WatchWindow(); -} - -Setup_WatchWindow() -{ - GEL_WatchReset(); - GEL_WatchAdd("sdata1,x"); - GEL_WatchAdd("rdata1,x"); - GEL_WatchAdd("sdata2,x"); - GEL_WatchAdd("rdata2,x"); -} - - - diff --git a/Source/External/v120/DSP2833x_examples/mcbsp_loopback/Example_2833xMcBSP_DLB.pjt b/Source/External/v120/DSP2833x_examples/mcbsp_loopback/Example_2833xMcBSP_DLB.pjt deleted file mode 100644 index aa6cf7a..0000000 --- a/Source/External/v120/DSP2833x_examples/mcbsp_loopback/Example_2833xMcBSP_DLB.pjt +++ /dev/null @@ -1,45 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\mcbsp_loopback\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_McBSP.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xMcBSP_DLB.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -as -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\mcbsp_loopback\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\mcbsp_loopback\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" --float_support=fpu32 -ml -mt -v28 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\mcbsp_loopback\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -m".\Debug\Example_2833xMcBSP_DLB.map" -o".\Debug\Example_2833xMcBSP_DLB.out" -stack0x380 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xMcBSP_DLB.out" -x - diff --git a/Source/External/v120/DSP2833x_examples/mcbsp_loopback_dma/Example_2833xMcBSP_DLB_DMA.c b/Source/External/v120/DSP2833x_examples/mcbsp_loopback_dma/Example_2833xMcBSP_DLB_DMA.c deleted file mode 100644 index 345e7d6..0000000 --- a/Source/External/v120/DSP2833x_examples/mcbsp_loopback_dma/Example_2833xMcBSP_DLB_DMA.c +++ /dev/null @@ -1,403 +0,0 @@ -//########################################################################### -// -// FILE: Example_2833xMCBSP_DLB_DMA.c -// -// TITLE: DSP2833x Device McBSP Digital Loop Back with DMA program -// -// ASSUMPTIONS: -// -// This program requires the DSP2833x header files. -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// DESCRIPTION: -// -// This program is a McBSP example that uses the internal loopback of -// the peripheral and utilizes the DMA to transfer data from one buffer -// to the McBSP, and then from the McBSP to another buffer. -// -// Initially, sdata[] is filled with values from 0x0000- 0x007F. The DMA -// moves the values in sdata[] one by one to the DXRx registers of the McBSP. -// These values are transmitted and subsequently received by the McBSP. -// Then, the DMA moves each data value to rdata[] as it is received by the McBSP. -// -// Three different serial word sizes can be tested. -// -// Before compiling this project: -// * Select the serial word size (8/16/32) by using -// the #define statements at the beginning of the code. -// -// The program loops forever after all values have been transferred to sdata. -// It is up to the user to stop the program. -// -// -// By default for the McBSP examples, the McBSP sample rate generator (SRG) input -// clock frequency is LSPCLK (150E6/4 or 100E6/4) assuming SYSCLKOUT = 150 MHz or -// 100 MHz respectively. If while testing, the SRG input frequency -// is changed, the #define MCBSP_SRG_FREQ (150E6/4 or 100E6/4) in the Mcbsp.c file must -// also be updated accordingly. This define is used to determine the Mcbsp initialization -// delay after the SRG is enabled, which must be at least 2 SRG clock cycles. -// -// Watch Variables: -// sdata -// rdata -// -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File - -// Choose a word size. Uncomment one of the following lines -#define WORD_SIZE 8 // Run a loopback test in 8-bit mode -//#define WORD_SIZE 16 // Run a loopback test in 16-bit mode -//#define WORD_SIZE 32 // Run a loopback test in 32-bit mode - -// Prototype statements for functions found within this file. - -interrupt void local_D_INTCH1_ISR(void); -interrupt void local_D_INTCH2_ISR(void); -void mcbsp_init_dlb(void); -void init_dma(void); -void init_dma_32(void); -void start_dma(void); -void error(void); - - -// Place sdata and rdata buffers in DMA-accessible RAM (L4 for this example) -#pragma DATA_SECTION(sdata, "DMARAML4") -#pragma DATA_SECTION(rdata, "DMARAML4") -Uint16 sdata[128]; // Sent Data -Uint16 rdata[128]; // Recieved Data -Uint16 data_size; // Word Length variable - -void main(void) -{ - Uint16 i; -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - -// Step 2. Initalize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); // Skipped for this example -// Setup only the GP I/O only for McBSP-A functionality - InitMcbspaGpio(); - -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - -// Interrupts that are used in this example are re-mapped to -// ISR functions found within this file. - EALLOW; // Allow access to EALLOW protected registers - PieVectTable.DINTCH1= &local_D_INTCH1_ISR; - PieVectTable.DINTCH2= &local_D_INTCH2_ISR; - EDIS; // Disable access to EALLOW protected registers - - -// Step 4. Initialize all the Device Peripherals: -// This function is found in DSP2833x_InitPeripherals.c -// InitPeripherals(); // Not required for this example - -// Step 5. User specific code, enable interrupts: - data_size = WORD_SIZE; - for (i=0; i<128; i++) - { - sdata[i] = i; // Fill sdata with values between 0 and 0x007F - rdata[i] = 0; // Initialize rdata to all 0x0000. - } - if (data_size == 32) - { - init_dma_32(); // DMA Initialization for 32-bit transfers - } else - { - init_dma(); // 1. When using DMA, initialize DMA with peripheral interrupts first. - } - start_dma(); - mcbsp_init_dlb(); // 2. Then initialize and release peripheral (McBSP) from Reset. - - -// Enable interrupts required for this example - PieCtrlRegs.PIECTRL.bit.ENPIE = 1; // Enable the PIE block - PieCtrlRegs.PIEIER6.bit.INTx5=1; // Enable PIE Group 6, INT 5 - PieCtrlRegs.PIEIER6.bit.INTx6=1; // Enable PIE Group 6, INT 6 - PieCtrlRegs.PIEIER7.bit.INTx1 = 1; // Enable PIE Group 7, INT 1 (DMA CH1) - PieCtrlRegs.PIEIER7.bit.INTx2 = 1; // Enable PIE Group 7, INT 2 (DMA CH2) - - IER=0x60; // Enable CPU INT groups 6 and 7 - EINT; // Enable Global Interrupts - -// Step 6. IDLE loop. Just sit and loop forever (optional): - for(;;); - -} - - -// Step 7. Insert all local Interrupt Service Routines (ISRs) and functions here: - - -void error(void) -{ - asm(" ESTOP0"); // Test failed!! Stop! - for (;;); -} - -void mcbsp_init_dlb() -{ - - McbspaRegs.SPCR2.all=0x0000; // Reset FS generator, sample rate generator & transmitter - McbspaRegs.SPCR1.all=0x0000; // Reset Receiver, Right justify word - McbspaRegs.SPCR1.bit.DLB = 1; // Enable DLB mode. Comment out for non-DLB mode. - - McbspaRegs.MFFINT.all=0x0; // Disable all interrupts - - McbspaRegs.RCR2.all=0x0; // Single-phase frame, 1 word/frame, No companding (Receive) - McbspaRegs.RCR1.all=0x0; - - McbspaRegs.XCR2.all=0x0; // Single-phase frame, 1 word/frame, No companding (Transmit) - McbspaRegs.XCR1.all=0x0; - - McbspaRegs.SRGR2.bit.CLKSM = 1; // CLKSM=1 (If SCLKME=0, i/p clock to SRG is LSPCLK) - McbspaRegs.SRGR2.bit.FPER = 31; // FPER = 32 CLKG periods - - McbspaRegs.SRGR1.bit.FWID = 0; // Frame Width = 1 CLKG period - McbspaRegs.SRGR1.bit.CLKGDV = 0; // CLKG frequency = LSPCLK/(CLKGDV+1) - - McbspaRegs.PCR.bit.FSXM = 1; // FSX generated internally, FSR derived from an external source - McbspaRegs.PCR.bit.CLKXM = 1; // CLKX generated internally, CLKR derived from an external source - - - - //*************** Initialize McBSP Data Length - if(data_size == 8) // Run a loopback test in 8-bit mode - { - InitMcbspa8bit(); - } - if(data_size == 16) // Run a loopback test in 16-bit mode - { - InitMcbspa16bit(); - } - if(data_size == 32) // Run a loopback test in 32-bit mode - { - InitMcbspa32bit(); - } - - //************* Enable Sample rate generator - McbspaRegs.SPCR2.bit.GRST=1; // Enable the sample rate generator - delay_loop(); // Wait at least 2 SRG clock cycles - McbspaRegs.SPCR2.bit.XRST=1; // Release TX from Reset - McbspaRegs.SPCR1.bit.RRST=1; // Release RX from Reset - McbspaRegs.SPCR2.bit.FRST=1; // Frame Sync Generator reset -} - -// DMA Initialization for data size <= 16-bit - -void init_dma() -{ - EALLOW; - DmaRegs.DMACTRL.bit.HARDRESET = 1; - asm(" NOP"); // Only 1 NOP needed per Design - DmaRegs.CH1.MODE.bit.CHINTE = 0; - // Channel 1, McBSPA transmit - DmaRegs.CH1.BURST_SIZE.all = 0; // 1 word/burst - DmaRegs.CH1.SRC_BURST_STEP = 0; // no effect when using 1 word/burst - DmaRegs.CH1.DST_BURST_STEP = 0; // no effect when using 1 word/burst - DmaRegs.CH1.TRANSFER_SIZE = 127; // Interrupt every frame (127 bursts/transfer) - DmaRegs.CH1.SRC_TRANSFER_STEP = 1; // Move to next word in buffer after each word in a burst - DmaRegs.CH1.DST_TRANSFER_STEP = 0; // Don't move destination address - DmaRegs.CH1.SRC_ADDR_SHADOW = (Uint32) &sdata[0]; // Start address = buffer - DmaRegs.CH1.SRC_BEG_ADDR_SHADOW = (Uint32) &sdata[0]; // Not needed unless using wrap function - DmaRegs.CH1.DST_ADDR_SHADOW = (Uint32) &McbspaRegs.DXR1.all; // Start address = McBSPA DXR - DmaRegs.CH1.DST_BEG_ADDR_SHADOW = (Uint32) &McbspaRegs.DXR1.all; // Not needed unless using wrap function - DmaRegs.CH1.CONTROL.bit.PERINTCLR = 1; // Clear peripheral interrupt event flag - DmaRegs.CH1.CONTROL.bit.SYNCCLR = 1; // Clear sync flag - DmaRegs.CH1.CONTROL.bit.ERRCLR = 1; // Clear sync error flag - DmaRegs.CH1.DST_WRAP_SIZE = 0xFFFF; // Put to maximum - don't want destination wrap - DmaRegs.CH1.SRC_WRAP_SIZE = 0xFFFF; // Put to maximum - don't want source wrap - DmaRegs.CH1.MODE.bit.SYNCE = 0; // No sync signal - DmaRegs.CH1.MODE.bit.SYNCSEL = 0; // No sync signal - DmaRegs.CH1.MODE.bit.CHINTE = 1; // Enable channel interrupt - DmaRegs.CH1.MODE.bit.CHINTMODE = 1; // Interrupt at end of transfer - DmaRegs.CH1.MODE.bit.PERINTE = 1; // Enable peripheral interrupt event - DmaRegs.CH1.MODE.bit.PERINTSEL = DMA_MXEVTA; // Peripheral interrupt select = McBSP MXSYNCA - DmaRegs.CH1.CONTROL.bit.PERINTCLR = 1; // Clear any spurious interrupt flags - - // Channel 2, McBSPA Receive - DmaRegs.CH2.MODE.bit.CHINTE = 0; - DmaRegs.CH2.BURST_SIZE.all = 0; // 1 word/burst - DmaRegs.CH2.SRC_BURST_STEP = 0; // no effect when using 1 word/burst - DmaRegs.CH2.DST_BURST_STEP = 0; // no effect when using 1 word/burst - DmaRegs.CH2.TRANSFER_SIZE = 127; // Interrupt every 127 bursts/transfer - DmaRegs.CH2.SRC_TRANSFER_STEP = 0; // Don't move source address - DmaRegs.CH2.DST_TRANSFER_STEP = 1; // Move to next word in buffer after each word in a burst - DmaRegs.CH2.SRC_ADDR_SHADOW = (Uint32) &McbspaRegs.DRR1.all; // Start address = McBSPA DRR - DmaRegs.CH2.SRC_BEG_ADDR_SHADOW = (Uint32) &McbspaRegs.DRR1.all; // Not needed unless using wrap function - DmaRegs.CH2.DST_ADDR_SHADOW = (Uint32) &rdata[0]; // Start address = Receive buffer (for McBSP-A) - DmaRegs.CH2.DST_BEG_ADDR_SHADOW = (Uint32) &rdata[0]; // Not needed unless using wrap function - DmaRegs.CH2.CONTROL.bit.PERINTCLR = 1; // Clear peripheral interrupt event flag - DmaRegs.CH2.CONTROL.bit.SYNCCLR = 1; // Clear sync flag - DmaRegs.CH2.CONTROL.bit.ERRCLR = 1; // Clear sync error flag - DmaRegs.CH2.DST_WRAP_SIZE = 0xFFFF; // Put to maximum - don't want destination wrap - DmaRegs.CH2.SRC_WRAP_SIZE = 0xFFFF; // Put to maximum - don't want source wrap - DmaRegs.CH2.MODE.bit.CHINTE = 1; // Enable channel interrupt - DmaRegs.CH2.MODE.bit.CHINTMODE = 1; // Interrupt at end of transfer - DmaRegs.CH2.MODE.bit.PERINTE = 1; // Enable peripheral interrupt event - DmaRegs.CH2.MODE.bit.PERINTSEL = DMA_MREVTA; // Peripheral interrupt select = McBSP MRSYNCA - DmaRegs.CH2.CONTROL.bit.PERINTCLR = 1; // Clear any spurious interrupt flags - EDIS; -} - -// DMA Initialization for data size > 16-bit and <= 32-bit. - -void init_dma_32() -{ - EALLOW; - DmaRegs.DMACTRL.bit.HARDRESET = 1; - asm(" NOP"); // Only 1 NOP needed per Design - - // Channel 1, McBSPA transmit - DmaRegs.CH1.BURST_SIZE.all = 1; // 2 word/burst - DmaRegs.CH1.SRC_BURST_STEP = 1; // increment 1 16-bit addr. btwn words - DmaRegs.CH1.DST_BURST_STEP = 1; // increment 1 16-bit addr. btwn words - DmaRegs.CH1.TRANSFER_SIZE = 63; // Interrupt every 63 bursts/transfer - DmaRegs.CH1.SRC_TRANSFER_STEP = 1; // Move to next word in buffer after each word in a burst - DmaRegs.CH1.DST_TRANSFER_STEP = 0xFFFF; // Go back to DXR2 - DmaRegs.CH1.SRC_ADDR_SHADOW = (Uint32) &sdata[0]; // Start address = buffer - DmaRegs.CH1.SRC_BEG_ADDR_SHADOW = (Uint32) &sdata[0]; // Not needed unless using wrap function - DmaRegs.CH1.DST_ADDR_SHADOW = (Uint32) &McbspaRegs.DXR2.all; // Start address = McBSPA DXR2 - DmaRegs.CH1.DST_BEG_ADDR_SHADOW = (Uint32) &McbspaRegs.DXR2.all; // Not needed unless using wrap function - DmaRegs.CH1.CONTROL.bit.SYNCCLR = 1; // Clear sync flag - DmaRegs.CH1.CONTROL.bit.ERRCLR = 1; // Clear sync error flag - DmaRegs.CH1.DST_WRAP_SIZE = 0xFFFF; // Put to maximum - don't want destination wrap - DmaRegs.CH1.SRC_WRAP_SIZE = 0xFFFF; // Put to maximum - don't want source wrap - DmaRegs.CH1.MODE.bit.SYNCE = 0; // No sync signal - DmaRegs.CH1.MODE.bit.SYNCSEL = 0; // No sync signal - DmaRegs.CH1.MODE.bit.CHINTE = 1; // Enable channel interrupt - DmaRegs.CH1.MODE.bit.CHINTMODE = 1; // Interrupt at end of transfer - DmaRegs.CH1.MODE.bit.PERINTE = 1; // Enable peripheral interrupt event - DmaRegs.CH1.MODE.bit.PERINTSEL = DMA_MXEVTA; // Peripheral interrupt select = McBSP MXSYNCA - DmaRegs.CH1.CONTROL.bit.PERINTCLR = 1; // Clear any spurious interrupt flags - - // Channel 2, McBSPA Receive - DmaRegs.CH2.BURST_SIZE.all = 1; // 2 words/burst - DmaRegs.CH2.SRC_BURST_STEP = 1; // Increment 1 16-bit addr. btwn words - DmaRegs.CH2.DST_BURST_STEP = 1; // Increment 1 16-bit addr. btwn words - DmaRegs.CH2.TRANSFER_SIZE = 63; // Interrupt every 63 bursts/transfer - DmaRegs.CH2.SRC_TRANSFER_STEP = 0xFFFF; // Decrement back to DRR2 - DmaRegs.CH2.DST_TRANSFER_STEP = 1; // Move to next word in buffer after each word in a burst - DmaRegs.CH2.SRC_ADDR_SHADOW = (Uint32) &McbspaRegs.DRR2.all; // Start address = McBSPA DRR - DmaRegs.CH2.SRC_BEG_ADDR_SHADOW = (Uint32) &McbspaRegs.DRR2.all; // Not needed unless using wrap function - DmaRegs.CH2.DST_ADDR_SHADOW = (Uint32) &rdata[0]; // Start address = Receive buffer (for McBSP-A) - DmaRegs.CH2.DST_BEG_ADDR_SHADOW = (Uint32) &rdata[0]; // Not needed unless using wrap function - DmaRegs.CH2.CONTROL.bit.SYNCCLR = 1; // Clear sync flag - DmaRegs.CH2.CONTROL.bit.ERRCLR = 1; // Clear sync error flag - DmaRegs.CH2.DST_WRAP_SIZE = 0xFFFF; // Put to maximum - don't want destination wrap - DmaRegs.CH2.SRC_WRAP_SIZE = 0xFFFF; // Put to maximum - don't want source wrap - DmaRegs.CH2.MODE.bit.CHINTE = 1; // Enable channel interrupt - DmaRegs.CH2.MODE.bit.CHINTMODE = 1; // Interrupt at end of transfer - DmaRegs.CH2.MODE.bit.PERINTE = 1; // Enable peripheral interrupt event - DmaRegs.CH2.MODE.bit.PERINTSEL = DMA_MREVTA; // Peripheral interrupt select = McBSP MRSYNCA - DmaRegs.CH2.CONTROL.bit.PERINTCLR = 1; // Clear any spurious interrupt flags - EDIS; -} -void start_dma (void) -{ - EALLOW; - DmaRegs.CH1.CONTROL.bit.RUN = 1; // Start DMA Transmit from McBSP-A - DmaRegs.CH2.CONTROL.bit.RUN = 1; // Start DMA Receive from McBSP-A - - EDIS; -} -// INT7.1 -interrupt void local_D_INTCH1_ISR(void) // DMA Ch1 -{ - EALLOW; // NEED TO EXECUTE EALLOW INSIDE ISR !!! - DmaRegs.CH1.CONTROL.bit.RUN=0; // Re-enable DMA CH1. Should be done every transfer - PieCtrlRegs.PIEACK.all = PIEACK_GROUP7; // To receive more interrupts from this PIE group, acknowledge this interrupt - - EDIS; - return; -} - -// INT7.2 -interrupt void local_D_INTCH2_ISR(void) // DMA Ch2 -{ - Uint16 i; - EALLOW; // NEED TO EXECUTE EALLOW INSIDE ISR !!! - DmaRegs.CH2.CONTROL.bit.RUN = 0; // Re-enable DMA CH2. Should be done every transfer - PieCtrlRegs.PIEACK.all = PIEACK_GROUP7; // To receive more interrupts from this PIE group, acknowledge this interrupt - for (i=0; i<128; i++) - { - if(data_size == 8) - { - if( (rdata[i]&0x00FF) !=(sdata[i]&0x00FF)) error( ); // Check for correct received data - } - else if (data_size == 16) - { - if (rdata[i] != sdata[i]) error(); // STOP if there is an error !! - } - else if (data_size == 32) - { - if ((rdata[i])!=(sdata[i])) error (); - } - } - EDIS; - return; - -} - -//=========================================================================== -// No more. -//=========================================================================== - - diff --git a/Source/External/v120/DSP2833x_examples/mcbsp_loopback_dma/Example_2833xMcBSP_DLB_DMA.gel b/Source/External/v120/DSP2833x_examples/mcbsp_loopback_dma/Example_2833xMcBSP_DLB_DMA.gel deleted file mode 100644 index 1c54abc..0000000 --- a/Source/External/v120/DSP2833x_examples/mcbsp_loopback_dma/Example_2833xMcBSP_DLB_DMA.gel +++ /dev/null @@ -1,22 +0,0 @@ -menuitem "DSP2833x McBSP DMA" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xMcBSP_DLB_DMA.pjt"); - GEL_ProjectBuild("Example_2833xMcBSP_DLB_DMA.pjt"); - Setup_WatchWindow(); -} - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xMcBSP_DLB_DMA.out"); - Setup_WatchWindow(); -} -hotmenu Setup_WatchWindow() -{ - GEL_WatchReset(); - GEL_WatchAdd("rdata,x"); - GEL_WatchAdd("sdata,x"); -} - - diff --git a/Source/External/v120/DSP2833x_examples/mcbsp_loopback_dma/Example_2833xMcBSP_DLB_DMA.pjt b/Source/External/v120/DSP2833x_examples/mcbsp_loopback_dma/Example_2833xMcBSP_DLB_DMA.pjt deleted file mode 100644 index 4194aa8..0000000 --- a/Source/External/v120/DSP2833x_examples/mcbsp_loopback_dma/Example_2833xMcBSP_DLB_DMA.pjt +++ /dev/null @@ -1,52 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\mcbsp_loopback_dma\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="CustomBuilder" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_McBSP.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xMcBSP_DLB_DMA.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -as -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\mcbsp_loopback_dma\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\mcbsp_loopback_dma\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" --float_support=fpu32 -ml -mt -v28 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\mcbsp_loopback_dma\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -m".\Debug\Example_2833xMcBSP_DLB_DMA.map" -o".\Debug\Example_2833xMcBSP_DLB_DMA.out" -stack0x380 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xMcBSP_DLB_DMA.out" -x - -["..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" Settings: "Debug"] -LinkOrder=1 - -["..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" Settings: "Release"] -LinkOrder=1 - diff --git a/Source/External/v120/DSP2833x_examples/mcbsp_loopback_interrupts/Example_2833xMcBSP_DLB_int.c b/Source/External/v120/DSP2833x_examples/mcbsp_loopback_interrupts/Example_2833xMcBSP_DLB_int.c deleted file mode 100644 index 9f0a646..0000000 --- a/Source/External/v120/DSP2833x_examples/mcbsp_loopback_interrupts/Example_2833xMcBSP_DLB_int.c +++ /dev/null @@ -1,221 +0,0 @@ -//########################################################################### -// -// FILE: Example_2833xMCBSP_FFDLB_int.c -// -// TITLE: DSP2833x Device McBSP Digital Loop Back porgram -// -// ASSUMPTIONS: -// -// This program requires the DSP2833x header files. -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// DESCRIPTION: -// -// This program is a McBSP example that uses the internal loopback of -// the peripheral. Both Rx and Tx interrupts are enabled. -// -// Incrementing values from 0x0000 to 0x00FF are being sent and received. -// -// This pattern is repeated forever. -// -// By default for the McBSP examples, the McBSP sample rate generator (SRG) input -// clock frequency is LSPCLK (150E6/4 or 100E6/4) assuming SYSCLKOUT = 150 MHz or -// 100 MHz respectively. If while testing, the SRG input frequency -// is changed, the #define MCBSP_SRG_FREQ (150E6/4 or 100E6/4) in the Mcbsp.c file must -// also be updated accordingly. This define is used to determine the Mcbsp initialization -// delay after the SRG is enabled, which must be at least 2 SRG clock cycles. -// -// Watch Variables: -// sdata -// rdata -// rdata_point -// -//########################################################################### -// -// Original Source by S.D. -// -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - - - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File - -// Prototype statements for functions found within this file. - -interrupt void Mcbsp_TxINTA_ISR(void); -interrupt void Mcbsp_RxINTA_ISR(void); -void mcbsp_init_dlb(void); -void error(void); - -// Global data variables used for this example -Uint16 sdata; // Sent Data -Uint16 rdata; // Recieved Data -Uint16 rdata_point; // Keep track of where we - // are in the data stream - - -void main(void) -{ -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - -// Step 2. Initalize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); // Skipped for this example -// Setup only the GP I/O only for McBSP-A functionality - InitMcbspaGpio(); - -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - -// Interrupts that are used in this example are re-mapped to -// ISR functions found within this file. - EALLOW; // Allow access to EALLOW protected registers - PieVectTable.MRINTA= &Mcbsp_RxINTA_ISR; - PieVectTable.MXINTA= &Mcbsp_TxINTA_ISR; - EDIS; // Disable access to EALLOW protected registers - -// Step 4. Initialize all the Device Peripherals: -// This function is found in DSP2833x_InitPeripherals.c -// InitPeripherals(); // Not required for this example - mcbsp_init_dlb(); // For this example, only initialize the Mcbsp - - -// Step 5. User specific code, enable interrupts: - - sdata = 0; - rdata_point = sdata; - -// Enable interrupts required for this example - PieCtrlRegs.PIECTRL.bit.ENPIE = 1; // Enable the PIE block - PieCtrlRegs.PIEIER6.bit.INTx5=1; // Enable PIE Group 6, INT 5 - PieCtrlRegs.PIEIER6.bit.INTx6=1; // Enable PIE Group 6, INT 6 - IER=0x20; // Enable CPU INT6 - EINT; // Enable Global Interrupts - -// Step 6. IDLE loop. Just sit and loop forever (optional): - for(;;); - -} - - -// Step 7. Insert all local Interrupt Service Routines (ISRs) and functions here: - - -void error(void) -{ - asm(" ESTOP0"); // Test failed!! Stop! - for (;;); -} - -void mcbsp_init_dlb() -{ - -//*************** RESET MCBSP - McbspaRegs.SPCR2.bit.FRST=0; // Frame Sync generator reset - McbspaRegs.SPCR2.bit.GRST=0; // Sample Rate generator Reset - McbspaRegs.SPCR2.bit.XRST=0; // Transmitter reset - McbspaRegs.SPCR1.bit.RRST=0; // Receiver reset - -//*************** Initialize McBSP Registers -// McBSP register settings for Digital loop back - McbspaRegs.SPCR2.all=0x0000; // XRST =0 - McbspaRegs.SPCR1.all=0x8000; // RRST =0, DLB enabled - McbspaRegs.RCR2.all=0x0001; // RDATDLY = 1 - McbspaRegs.RCR1.all=0x0; - McbspaRegs.XCR2.all=0x0001; // XDATDLY = 1 - McbspaRegs.XCR1.all=0x0; - - McbspaRegs.SRGR2.all=0x3140; - McbspaRegs.SRGR1.all=0x010f; - McbspaRegs.MCR2.all=0x0; - McbspaRegs.MCR1.all=0x0; - McbspaRegs.PCR.all=0x0A00; - - McbspaRegs.MFFINT.bit.XINT = 1; // Enable Transmit Interrupts - McbspaRegs.MFFINT.bit.RINT = 1; // Enable Receive Interrupts - -//************* Enable Sample rate generator - McbspaRegs.SPCR2.bit.GRST=1; - delay_loop(); // Wait at least 2 SRG clock cycles - -//************ Enable TX/RX unit - McbspaRegs.SPCR2.bit.XRST=1; - McbspaRegs.SPCR1.bit.RRST=1; - -//************ Frame Sync generator reset - McbspaRegs.SPCR2.bit.FRST=1; -} - -interrupt void Mcbsp_TxINTA_ISR(void) -{ - McbspaRegs.DXR1.all= sdata; - sdata = (sdata+1)& 0x00FF ; - // To receive more interrupts from this PIE group, acknowledge this interrupt - PieCtrlRegs.PIEACK.all = PIEACK_GROUP6; -} - -interrupt void Mcbsp_RxINTA_ISR(void) -{ - rdata=McbspaRegs.DRR1.all; - if (rdata != ( (rdata_point) & 0x00FF) ) error(); - rdata_point = (rdata_point+1) & 0x00FF; - // To receive more interrupts from this PIE group, acknowledge this interrupt - PieCtrlRegs.PIEACK.all = PIEACK_GROUP6; -} - -//=========================================================================== -// No more. -//=========================================================================== - diff --git a/Source/External/v120/DSP2833x_examples/mcbsp_loopback_interrupts/Example_2833xMcBSP_DLB_int.gel b/Source/External/v120/DSP2833x_examples/mcbsp_loopback_interrupts/Example_2833xMcBSP_DLB_int.gel deleted file mode 100644 index b3cd28b..0000000 --- a/Source/External/v120/DSP2833x_examples/mcbsp_loopback_interrupts/Example_2833xMcBSP_DLB_int.gel +++ /dev/null @@ -1,27 +0,0 @@ -menuitem "DSP2833x McBSP Int" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xMcBSP_DLB_int.pjt"); - GEL_ProjectBuild("Example_2833xMcBSP_DLB_int.pjt"); - Setup_WatchWindow(); -} - - - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xMcBSP_DLB_int.out"); - Setup_WatchWindow(); -} - -Setup_WatchWindow() -{ - GEL_WatchReset(); - GEL_WatchAdd("sdata,x"); - GEL_WatchAdd("rdata,x"); - GEL_WatchAdd("rdata_point,x"); -} - - - diff --git a/Source/External/v120/DSP2833x_examples/mcbsp_loopback_interrupts/Example_2833xMcBSP_DLB_int.pjt b/Source/External/v120/DSP2833x_examples/mcbsp_loopback_interrupts/Example_2833xMcBSP_DLB_int.pjt deleted file mode 100644 index 1f8f3a6..0000000 --- a/Source/External/v120/DSP2833x_examples/mcbsp_loopback_interrupts/Example_2833xMcBSP_DLB_int.pjt +++ /dev/null @@ -1,45 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\mcbsp_loopback_interrupts\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_McBSP.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xMcBSP_DLB_int.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -as -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\mcbsp_loopback_interrupts\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\mcbsp_loopback_interrupts\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" --float_support=fpu32 -ml -mt -v28 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\mcbsp_loopback_interrupts\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -m".\Debug\Example_2833xMcBSP_DLB_int.map" -o".\Debug\Example_2833xMcBSP_DLB_int.out" -stack0x380 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xMcBSP_DLB.out" -x - diff --git a/Source/External/v120/DSP2833x_examples/mcbsp_spi_loopback/Example_2833xMcBSP_SPI_DLB.c b/Source/External/v120/DSP2833x_examples/mcbsp_spi_loopback/Example_2833xMcBSP_SPI_DLB.c deleted file mode 100644 index 46f35d8..0000000 --- a/Source/External/v120/DSP2833x_examples/mcbsp_spi_loopback/Example_2833xMcBSP_SPI_DLB.c +++ /dev/null @@ -1,208 +0,0 @@ -//########################################################################### -// -// FILE: Example_2833xMCBSP_SPIX.c -// -// TITLE: DSP28133x Device McBSP using SPI mode -// -// ASSUMPTIONS: -// -// This program requires the DSP2833x header files. -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// DESCRIPTION: -// -// SPI master mode transfer of 32-bit word size with digital loopback enabled. -// -// McBSP Signals SPI equivalent -// ------------------------------------- -// MCLKX SPICLK (master) -// MFSX SPISTE (master) -// MDX SPISIMO -// MCLKR SPICLK (slave - not used for this example) -// MFSR SPISTE (slave - not used for this example) -// MDR SPISOMI (not used for this example) -// -// This program will execute and transmit words until terminated by the user. -// -// By default for the McBSP examples, the McBSP sample rate generator (SRG) input -// clock frequency is LSPCLK (150E6/4 or 100E6/4) assuming SYSCLKOUT = 150 MHz or -// 100 MHz respectively. If while testing, the SRG input frequency -// is changed, the #define MCBSP_SRG_FREQ (CPU_SPD/4) in the Mcbsp.c file must -// also be updated accordingly. This define is used to determine the Mcbsp initialization -// delay after the SRG is enabled, which must be at least 2 SRG clock cycles. -// -// Watch Variables: -// sdata1 -// sdata2 -// rdata1 -// rdata2 -// -// -//########################################################################### -// -// Original Author: S.S. -// -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File - -// Prototype statements for functions found within this file. - -void init_mcbsp_spi(void); -void mcbsp_xmit(int a, int b); -void error(void); - -// Global data for this example -Uint16 sdata1 = 0x000; // Sent Data -Uint16 rdata1 = 0x000; // Recieved Data - -Uint16 sdata2 = 0x000; // Sent Data -Uint16 rdata2 = 0x000; // Recieved Data - - -void main(void) -{ - -// Uint16 i; - - -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - -// Step 2. Initalize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); // Skipped for this example -// For this example, only enable the GPIO for McBSP-A - InitMcbspaGpio(); - -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP281x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - -// Step 4. Initialize all the Device Peripherals: -// This function is found in DSP2833x_InitPeripherals.c -// InitPeripherals(); // Not required for this example - - -// Step 5. User specific code, - - init_mcbsp_spi(); - sdata1 = 0x55aa; - sdata2 = 0xaa55; -// Main loop to transfer 32-bit words through MCBSP in SPI mode periodically - for(;;) - { - mcbsp_xmit(sdata1,sdata2); - while( McbspaRegs.SPCR1.bit.RRDY == 0 ) {} // Master waits until RX data is ready - rdata2 = McbspaRegs.DRR2.all; // Read DRR2 first. - rdata1 = McbspaRegs.DRR1.all; // Then read DRR1 to complete receiving of data - if((rdata2 != sdata2)&&(rdata1 != sdata1)) error( ); // Check that correct data is received. - delay_loop(); - sdata1^=0xFFFF; - sdata2^=0xFFFF; - asm(" nop"); // Good place for a breakpoint - - } -} - - - -// Some Useful local functions - -void error(void) -{ - asm(" ESTOP0"); // test failed!! Stop! - for (;;); -} - - - - -void init_mcbsp_spi() -{ - // McBSP-A register settings - McbspaRegs.SPCR2.all=0x0000; // Reset FS generator, sample rate generator & transmitter - McbspaRegs.SPCR1.all=0x0000; // Reset Receiver, Right justify word, Digital loopback dis. - McbspaRegs.PCR.all=0x0F08; //(CLKXM=CLKRM=FSXM=FSRM= 1, FSXP = 1) - McbspaRegs.SPCR1.bit.DLB = 1; - McbspaRegs.SPCR1.bit.CLKSTP = 2; // Together with CLKXP/CLKRP determines clocking scheme - McbspaRegs.PCR.bit.CLKXP = 0; // CPOL = 0, CPHA = 0 rising edge no delay - McbspaRegs.PCR.bit.CLKRP = 0; - McbspaRegs.RCR2.bit.RDATDLY=01; // FSX setup time 1 in master mode. 0 for slave mode (Receive) - McbspaRegs.XCR2.bit.XDATDLY=01; // FSX setup time 1 in master mode. 0 for slave mode (Transmit) - - McbspaRegs.RCR1.bit.RWDLEN1=5; // 32-bit word - McbspaRegs.XCR1.bit.XWDLEN1=5; // 32-bit word - - McbspaRegs.SRGR2.all=0x2000; // CLKSM=1, FPER = 1 CLKG periods - McbspaRegs.SRGR1.all= 0x000F; // Frame Width = 1 CLKG period, CLKGDV=16 - - McbspaRegs.SPCR2.bit.GRST=1; // Enable the sample rate generator - delay_loop(); // Wait at least 2 SRG clock cycles - McbspaRegs.SPCR2.bit.XRST=1; // Release TX from Reset - McbspaRegs.SPCR1.bit.RRST=1; // Release RX from Reset - McbspaRegs.SPCR2.bit.FRST=1; // Frame Sync Generator reset -} - -void mcbsp_xmit(int a, int b) -{ - McbspaRegs.DXR2.all=b; - McbspaRegs.DXR1.all=a; -} - - - -//=========================================================================== -// No more. -//=========================================================================== - diff --git a/Source/External/v120/DSP2833x_examples/mcbsp_spi_loopback/Example_2833xMcBSP_SPI_DLB.gel b/Source/External/v120/DSP2833x_examples/mcbsp_spi_loopback/Example_2833xMcBSP_SPI_DLB.gel deleted file mode 100644 index f0a701d..0000000 --- a/Source/External/v120/DSP2833x_examples/mcbsp_spi_loopback/Example_2833xMcBSP_SPI_DLB.gel +++ /dev/null @@ -1,28 +0,0 @@ -menuitem "DSP2833x McBSP SPI DLB" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xMcBSP_SPI_DLB.pjt"); - GEL_ProjectBuild("Example_2833xMcBSP_SPI_DLB.pjt"); - Setup_WatchWindow(); -} - - - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xMcBSP_SPI_DLB.out"); - Setup_WatchWindow(); -} - -Setup_WatchWindow() -{ - GEL_WatchReset(); - GEL_WatchAdd("sdata1,x"); - GEL_WatchAdd("rdata1,x"); - GEL_WatchAdd("sdata2,x"); - GEL_WatchAdd("rdata2,x"); -} - - - diff --git a/Source/External/v120/DSP2833x_examples/mcbsp_spi_loopback/Example_2833xMcBSP_SPI_DLB.pjt b/Source/External/v120/DSP2833x_examples/mcbsp_spi_loopback/Example_2833xMcBSP_SPI_DLB.pjt deleted file mode 100644 index 2f8e650..0000000 --- a/Source/External/v120/DSP2833x_examples/mcbsp_spi_loopback/Example_2833xMcBSP_SPI_DLB.pjt +++ /dev/null @@ -1,45 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\mcbsp_spi_loopback\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_McBSP.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xMcBSP_SPI_DLB.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -as -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\mcbsp_spi_loopback\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\mcbsp_spi_loopback\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" --float_support=fpu32 -ml -mt -v28 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\mcbsp_spi_loopback\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -m".\Debug\Example_2833xMcBSP_DLB_int.map" -o".\Debug\Example_2833xMcBSP_SPI_DLB.out" -stack0x380 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xMcBSP_SPI_DLB.out" -x - diff --git a/Source/External/v120/DSP2833x_examples/sci_autobaud/Example_2833xSci_Autobaud.c b/Source/External/v120/DSP2833x_examples/sci_autobaud/Example_2833xSci_Autobaud.c deleted file mode 100644 index 6d93eff..0000000 --- a/Source/External/v120/DSP2833x_examples/sci_autobaud/Example_2833xSci_Autobaud.c +++ /dev/null @@ -1,390 +0,0 @@ -// TI File $Revision: /main/11 $ -// Checkin $Date: April 21, 2008 15:43:14 $ -//########################################################################### -// -// FILE: Example_2833xSci_Autobaud_.c -// -// TITLE: DSP2833x SCI Autobaud detect example -// -// ASSUMPTIONS: -// -// This program requires the DSP2833x header files. -// -// Test requires the following hardware connections: -// -// GPIO29/SCITXDA <-> GPIO19/SCIRXDB -// GPIO28/SCIRXDA <-> GPIO18/SCITXDB -// -// -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// -// This test will perform autobaud lock at a variety of baud rates, including -// very high baud rates. -// -// For this test to properly run, connect the SCI-A pins to the -// SCI-B pins without going through a transciever. -// -// At higher baud rates, the slew rate of the incoming data bits can be -// affected by transceiver and connector performance. This slew rate may -// limit reliable autobaud detection at higher baud rates. -// -// SCIA: Slave, autobaud locks, receives characters and -// echos them back to the host. Uses the RX interrupt -// to receive characters. -// -// SCIB: Host, known baud rate, sends characters to the slave -// and checks that they are echoed back. -// -// DESCRIPTION: -// -// Internal Loopback test for ever through SCIA using interrupts, -// FIFOs are disabled. -// -// Watch Variables: BRRVal - current BRR value used for SCIB -// ReceivedAChar - character received by SCIA -// ReceivedBChar - character received by SCIB -// SendChar - character being sent by SCIB -// SciaRegs.SCILBAUD - SCIA baud registers - set -// SciaRegs.SCIHBAUD by autobaud lock -// -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File - -#define BAUDSTEP 100 // Amount BRR will be incremented between each - // autobaud lock - -// Prototype statements for functions found within this file. -void scia_init(void); -void scib_init(void); -void scia_xmit(int a); -void scib_xmit(int a); -void scia_AutobaudLock(void); -void error(); -interrupt void rxaint_isr(void); - - -// Global counts used in this example -Uint16 LoopCount; -//Uint16 xmitCount; -Uint16 ReceivedCount; -Uint16 ErrorCount; -Uint16 SendChar; -Uint16 ReceivedAChar; // scia received character -Uint16 ReceivedBChar; // scib received character -Uint16 BRRVal; -Uint16 Buff[10] = {0x55, 0xAA, 0xF0, 0x0F, 0x00, 0xFF, 0xF5, 0x5F, 0xA5, 0x5A}; - -void main(void) -{ - Uint16 i; - -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - -// Step 2. Initalize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); // Skipped for this example - - InitSciGpio(); - -// Initialize PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - -// Interrupts that are used in this example are re-mapped to -// ISR functions found within this file. - EALLOW; // This is needed to write to EALLOW protected registers - PieVectTable.SCIRXINTA = &rxaint_isr; - EDIS; // This is needed to disable write to EALLOW protected register - -// Step 4. Initialize all the Device Peripherals: -// This function is found in DSP2833x_InitPeripherals.c -// InitPeripherals(); // Not required for this example - scia_init(); // Initalize SCIA - scib_init(); // Initalize SCIB - -// Step 5. User specific code, enable interrupts: - - LoopCount = 0; - ErrorCount = 0; - -// Enable interrupts - PieCtrlRegs.PIEIER9.all = 0x0001; // Enable all SCIA RXINT interrupt - IER |= 0x0100; // enable PIEIER9, and INT9 - EINT; - - // Start with BRR = 1, work through each baud rate setting - // incrementing BRR by BAUDSTEP - for (BRRVal = 0x0000; BRRVal < (Uint32)0xFFFF; BRRVal+=BAUDSTEP) - { - - // SCIB has a known baud rate. SCIA will autobaud to match - ScibRegs.SCIHBAUD = (BRRVal >> 8); - ScibRegs.SCILBAUD = (BRRVal); - - // Initiate an autobaud lock with scia. Check - // returned character against baud lock character 'A' - scia_AutobaudLock(); - while(ScibRegs.SCIRXST.bit.RXRDY != 1) { } - ReceivedBChar = 0; - ReceivedBChar = ScibRegs.SCIRXBUF.bit.RXDT; - if(ReceivedBChar != 'A') - { - error(0); - } - - // Send/echoback characters - // 55 AA F0 0F 00 FF F5 5F A5 5A - for(i= 0; i<=9; i++) - { - SendChar = Buff[i]; - scib_xmit(SendChar); // Initiate interrupts and xmit data in isr - // Wait to get the character back and check - // against the sent character. - while(ScibRegs.SCIRXST.bit.RXRDY != 1) - { - asm(" NOP"); - } - ReceivedBChar = 0; - ReceivedBChar = ScibRegs.SCIRXBUF.bit.RXDT; - if(ReceivedBChar != SendChar) error(1); - } - - } // Repeat for next BRR setting - - // Stop here, no more - for(;;) - { - asm(" NOP"); - } - - -} - - -/* --------------------------------------------------- */ -/* ISR for PIE INT9.1 */ -/* Connected to RXAINT SCI-A */ -/* ----------------------------------------------------*/ - -interrupt void rxaint_isr(void) // SCI-A -{ - // Insert ISR Code here - - PieCtrlRegs.PIEACK.all = PIEACK_GROUP9; - - // If autobaud detected, we must clear CDC - if(SciaRegs.SCIFFCT.bit.ABD == 1) - { - SciaRegs.SCIFFCT.bit.ABDCLR = 1; - SciaRegs.SCIFFCT.bit.CDC = 0; - // Check received character - should be 'A' - ReceivedAChar = 0; - ReceivedAChar = SciaRegs.SCIRXBUF.all; - if(ReceivedAChar != 'A') - { - error(2); - } - else scia_xmit(ReceivedAChar); - } - - // This was not autobaud detect - else - { - // Check received character against sendchar - ReceivedAChar = 0; - ReceivedAChar = SciaRegs.SCIRXBUF.all; - if(ReceivedAChar != SendChar) - { - error(3); - } - else scia_xmit(ReceivedAChar); - } - - SciaRegs.SCIFFRX.bit.RXFFINTCLR = 1; // clear Receive interrupt flag - ReceivedCount++; -} - - -void error() -{ - ErrorCount++; - asm(" ESTOP0"); // Uncomment to stop the test here - for (;;); - -} - -// SCIA 8-bit word, baud rate 0x000F, default, 1 STOP bit, no parity -void scia_init() -{ - // Note: Clocks were turned on to the SCIA peripheral - // in the InitSysCtrl() function - - // Reset FIFO's - SciaRegs.SCIFFTX.all=0x8000; - - SciaRegs.SCICCR.all =0x0007; // 1 stop bit, No loopback - // No parity,8 char bits, - // async mode, idle-line protocol - SciaRegs.SCICTL1.all =0x0003; // enable TX, RX, internal SCICLK, - // Disable RX ERR, SLEEP, TXWAKE - SciaRegs.SCICTL2.all =0x0003; - SciaRegs.SCICTL2.bit.RXBKINTENA =1; - SciaRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset - - -} - -// SCIB 8-bit word, baud rate 0x000F, default, 1 STOP bit, no parity - -void scib_init() -{ - // Reset FIFO's - ScibRegs.SCIFFTX.all=0x8000; - - // 1 stop bit, No parity, 8-bit character - // No loopback - ScibRegs.SCICCR.all = 0x0007; - - // Enable TX, RX, Use internal SCICLK - ScibRegs.SCICTL1.all = 0x0003; - - // Disable RxErr, Sleep, TX Wake, - // Diable Rx Interrupt, Tx Interrupt - ScibRegs.SCICTL2.all = 0x0000; - - // Relinquish SCI-A from reset - ScibRegs.SCICTL1.all = 0x0023; - - return; -} - - - - -// Transmit a character from the SCI-A' -void scia_xmit(int a) -{ - SciaRegs.SCITXBUF=a; -} - -// Transmit a character from the SCI-B' -void scib_xmit(int a) -{ - ScibRegs.SCITXBUF=a; -} - - -//------------------------------------------------ -// Perform autobaud lock with the host. -// Note that if autobaud never occurs -// the program will hang in this routine as there -// is no timeout mechanism included. -//------------------------------------------------ - -void scia_AutobaudLock() -{ - - SciaRegs.SCICTL1.bit.SWRESET = 0; - SciaRegs.SCICTL1.bit.SWRESET = 1; - - // Must prime baud register with >= 1 - SciaRegs.SCIHBAUD = 0; - SciaRegs.SCILBAUD = 1; - - // Prepare for autobaud detection - // Make sure the ABD bit is clear by writing a 1 to ABDCLR - // Set the CDC bit to enable autobaud detection - SciaRegs.SCIFFCT.bit.ABDCLR = 1; - SciaRegs.SCIFFCT.bit.CDC = 1; - - // Wait until we correctly read an - // 'A' or 'a' and lock - // - // As long as Autobaud calibration is enabled (CDC = 1), - // SCI-B (host) will continue transmitting 'A'. This will - // continue until interrupted by the SCI-A RX ISR, where - // SCI-A RXBUF receives 'A', autobaud-locks (ABDCLR=1 - // CDC=0),and returns an 'A' back to the host. Then control - // is returned to this loop and the loop is exited. - // - // NOTE: ABD will become set sometime between - // scib_xmit and the DELAY_US loop, and - // the SCI-A RX ISR will be triggered. - // Upon returning and reaching the if-statement, - // ABD will have been cleared again by the ISR. - - while(SciaRegs.SCIFFCT.bit.CDC== 1) - { - // Note the lower the baud rate the longer - // this delay has to be to allow the other end - // to echo back a character (about 4 characters long) - // Make this really long since we are going through all - // the baud rates. - DELAY_US(280000L); - - if(SciaRegs.SCIFFCT.bit.CDC == 1) - scib_xmit('A'); // host transmits 'A' - - } - - return; -} - - - -//=========================================================================== -// No more. -//=========================================================================== - diff --git a/Source/External/v120/DSP2833x_examples/sci_autobaud/Example_2833xSci_Autobaud.gel b/Source/External/v120/DSP2833x_examples/sci_autobaud/Example_2833xSci_Autobaud.gel deleted file mode 100644 index 20a2117..0000000 --- a/Source/External/v120/DSP2833x_examples/sci_autobaud/Example_2833xSci_Autobaud.gel +++ /dev/null @@ -1,48 +0,0 @@ -/* -// TI File $Revision: /main/6 $ -// Checkin $Date: August 15, 2007 09:42:26 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// project. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -menuitem "DSP2833x SCI Autobaud" - - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xSci_Autobaud.pjt"); - GEL_ProjectBuild("Example_2833xSci_Autobaud.pjt"); - Setup_WatchWindow(); -} - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xSci_Autobaud.out"); - Setup_WatchWindow(); -} - -hotmenu Setup_WatchWindow() -{ - GEL_WatchReset(); - GEL_WatchAdd("BRRVal,x"); - GEL_WatchAdd("ReceivedAChar,x"); - GEL_WatchAdd("ReceivedBChar,x"); - GEL_WatchAdd("ReceivedCount,x"); - GEL_WatchAdd("SendChar,x"); - GEL_WatchAdd("SciaRegs.SCIHBAUD,x"); - GEL_WatchAdd("SciaRegs.SCILBAUD,x"); - GEL_WatchAdd("ScibRegs.SCIHBAUD,x"); - GEL_WatchAdd("ScibRegs.SCILBAUD,x"); - GEL_WatchAdd("SciaRegs,x"); - GEL_WatchAdd("ScibRegs,x"); -} - - diff --git a/Source/External/v120/DSP2833x_examples/sci_autobaud/Example_2833xSci_Autobaud.pjt b/Source/External/v120/DSP2833x_examples/sci_autobaud/Example_2833xSci_Autobaud.pjt deleted file mode 100644 index d4ef177..0000000 --- a/Source/External/v120/DSP2833x_examples/sci_autobaud/Example_2833xSci_Autobaud.pjt +++ /dev/null @@ -1,45 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\sci_autobaud\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_Sci.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xSci_Autobaud.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -as -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\sci_autobaud\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\sci_autobaud\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" --float_support=fpu32 -ml -mt -v28 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\sci_autobaud\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -ecode_start -m".\Debug\Example_2833xSci_Autobaud.map" -o".\Debug\Example_2833xSci_Autobaud.out" -stack0x380 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xSci_Autobaud.out" -x - diff --git a/Source/External/v120/DSP2833x_examples/sci_echoback/Example_2833xSci_Echoback.c b/Source/External/v120/DSP2833x_examples/sci_echoback/Example_2833xSci_Echoback.c deleted file mode 100644 index 4fe5cf7..0000000 --- a/Source/External/v120/DSP2833x_examples/sci_echoback/Example_2833xSci_Echoback.c +++ /dev/null @@ -1,236 +0,0 @@ -// TI File $Revision: /main/9 $ -// Checkin $Date: April 21, 2008 15:43:19 $ -//########################################################################### -// -// FILE: Example_2833xSci_Echoback.c -// -// TITLE: DSP2833x Device SCI Echoback. -// -// ASSUMPTIONS: -// -// This program requires the DSP2833x header files. -// As supplied, this project is configured for "boot to SARAM" operation. -// -// Connect the SCI-A port to a PC via a transciever and cable. -// The PC application 'hypterterminal' can be used to view the data -// from the SCI and to send information to the SCI. Characters recieved -// by the SCI port are sent back to the host. -// -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// DESCRIPTION: -// -// -// This test recieves and echo-backs data through the SCI-A port. -// -// 1) Configure hyperterminal: -// Use the included hyperterminal configuration file SCI_96.ht. -// To load this configuration in hyperterminal: file->open -// and then select the SCI_96.ht file. -// 2) Check the COM port. -// The configuration file is currently setup for COM1. -// If this is not correct, disconnect Call->Disconnect -// Open the File-Properties dialog and select the correct COM port. -// 3) Connect hyperterminal Call->Call -// and then start the 2833x SCI echoback program execution. -// 4) The program will print out a greeting and then ask you to -// enter a character which it will echo back to hyperterminal. -// -// As is, the program configures SCI-A for 9600 baud with -// SYSCLKOUT = 150MHz and LSPCLK = 37.5 MHz -// SYSCLKOUT = 100MHz and LSPCLK = 25.0 Mhz -// -// -// Watch Variables: -// LoopCount for the number of characters sent -// ErrorCount -// -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File - -// Prototype statements for functions found within this file. -void scia_echoback_init(void); -void scia_fifo_init(void); -void scia_xmit(int a); -void scia_msg(char *msg); - -// Global counts used in this example -Uint16 LoopCount; -Uint16 ErrorCount; - -void main(void) -{ - - Uint16 ReceivedChar; - char *msg; - -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - -// Step 2. Initalize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. - // InitGpio(); Skipped for this example - -// For this example, only init the pins for the SCI-A port. -// This function is found in the DSP2833x_Sci.c file. - InitSciaGpio(); - -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - -// Step 4. Initialize all the Device Peripherals: -// This function is found in DSP2833x_InitPeripherals.c -// InitPeripherals(); // Not required for this example - -// Step 5. User specific code: - - LoopCount = 0; - ErrorCount = 0; - - scia_fifo_init(); // Initialize the SCI FIFO - scia_echoback_init(); // Initalize SCI for echoback - - msg = "\r\n\n\nHello World!\0"; - scia_msg(msg); - - msg = "\r\nYou will enter a character, and the DSP will echo it back! \n\0"; - scia_msg(msg); - - for(;;) - { - msg = "\r\nEnter a character: \0"; - scia_msg(msg); - - // Wait for inc character - while(SciaRegs.SCIFFRX.bit.RXFFST !=1) { } // wait for XRDY =1 for empty state - - // Get character - ReceivedChar = SciaRegs.SCIRXBUF.all; - - // Echo character back - msg = " You sent: \0"; - scia_msg(msg); - scia_xmit(ReceivedChar); - - LoopCount++; - } - -} - - -// Test 1,SCIA DLB, 8-bit word, baud rate 0x000F, default, 1 STOP bit, no parity -void scia_echoback_init() -{ - // Note: Clocks were turned on to the SCIA peripheral - // in the InitSysCtrl() function - - SciaRegs.SCICCR.all =0x0007; // 1 stop bit, No loopback - // No parity,8 char bits, - // async mode, idle-line protocol - SciaRegs.SCICTL1.all =0x0003; // enable TX, RX, internal SCICLK, - // Disable RX ERR, SLEEP, TXWAKE - SciaRegs.SCICTL2.all =0x0003; - SciaRegs.SCICTL2.bit.TXINTENA =1; - SciaRegs.SCICTL2.bit.RXBKINTENA =1; - #if (CPU_FRQ_150MHZ) - SciaRegs.SCIHBAUD =0x0001; // 9600 baud @LSPCLK = 37.5MHz. - SciaRegs.SCILBAUD =0x00E7; - #endif - #if (CPU_FRQ_100MHZ) - SciaRegs.SCIHBAUD =0x0001; // 9600 baud @LSPCLK = 20MHz. - SciaRegs.SCILBAUD =0x0044; - #endif - SciaRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset -} - -// Transmit a character from the SCI -void scia_xmit(int a) -{ - while (SciaRegs.SCIFFTX.bit.TXFFST != 0) {} - SciaRegs.SCITXBUF=a; - -} - -void scia_msg(char * msg) -{ - int i; - i = 0; - while(msg[i] != '\0') - { - scia_xmit(msg[i]); - i++; - } -} - -// Initalize the SCI FIFO -void scia_fifo_init() -{ - SciaRegs.SCIFFTX.all=0xE040; - SciaRegs.SCIFFRX.all=0x204f; - SciaRegs.SCIFFCT.all=0x0; - -} - - - - - - -//=========================================================================== -// No more. -//=========================================================================== - diff --git a/Source/External/v120/DSP2833x_examples/sci_echoback/Example_2833xSci_Echoback.gel b/Source/External/v120/DSP2833x_examples/sci_echoback/Example_2833xSci_Echoback.gel deleted file mode 100644 index 33e7cb5..0000000 --- a/Source/External/v120/DSP2833x_examples/sci_echoback/Example_2833xSci_Echoback.gel +++ /dev/null @@ -1,40 +0,0 @@ -/* -// TI File $Revision: /main/5 $ -// Checkin $Date: August 9, 2007 17:20:59 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// project. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -menuitem "DSP2833x SCI Echoback" - - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xSci_Echoback.pjt"); - GEL_ProjectBuild("Example_2833xSci_Echoback.pjt"); - Setup_WatchWindow(); -} - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xSci_Echoback.out"); - Setup_WatchWindow(); -} - -hotmenu Setup_WatchWindow() -{ - GEL_WatchReset(); - GEL_WatchAdd("LoopCount,x"); - GEL_WatchAdd("ErrorCount,x"); - GEL_WatchAdd("SciaRegs,x"); -} - - diff --git a/Source/External/v120/DSP2833x_examples/sci_echoback/Example_2833xSci_Echoback.pjt b/Source/External/v120/DSP2833x_examples/sci_echoback/Example_2833xSci_Echoback.pjt deleted file mode 100644 index 89b00df..0000000 --- a/Source/External/v120/DSP2833x_examples/sci_echoback/Example_2833xSci_Echoback.pjt +++ /dev/null @@ -1,45 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\sci_echoback\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_Sci.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xSci_Echoback.c" -Source="..\..\DSP2833x_common\cmd\28335_RAM_lnk.cmd" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -as -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\sci_echoback\Debug" -fs"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\sci_echoback\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" --float_support=fpu32 -ml -mt -v28 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\sci_echoback\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -ecode_start -m".\Debug\Example_2833xSci_echoback.map" -o".\Debug\Example_2833xSci_echoback.out" -stack0x380 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xSci_echoback.out" -x - diff --git a/Source/External/v120/DSP2833x_examples/sci_echoback/SCI_96.ht b/Source/External/v120/DSP2833x_examples/sci_echoback/SCI_96.ht deleted file mode 100644 index 9c7ebe3fb38fd18574df04d45400d7ecb014a374..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23333 zcmeHPOK%)S5H35(CNWyDLlBQs=V^#Y@Y+tW5fYfqf)r8sV7=>%$4Q(E zh#L}E9CGD9aNx*K0Eq(!4jd5T8gdLbQ`MCWiQQvWPq#PL(leUfnwtKq>g%qVp6TA5 z+0~^ec|S@P<4(P;DyPQO$&+gK0cEqE*42F6j>GN(`a!iRcTi( zcAN41s!A8)WnEM?<0NXN?bTD|AzGh-9l8v_Zj3C#ZI70&e>izy7!Kn8>;?5Ul1<)< zQZ=bA#_HV1Faom!TpGV%5I0)(<3{^=3mw~dd>86w&R={JzNxi-yj6nVZBp+w1G=gxauZUA4QC#8INKW;Pt=-6Mc*H!VkXlugvnXo+HdO-tib z6{vDsoMkF2hc3OI6?#KUWN%itSoNKA725m1F7I+xy{D_?NvwtE2B`gMJE0}2+3|tP zA5euwkbr_ZZVgz#?*z97q+0)yK2nD{T${KyaHa1E*Lhr9xRQl7u3aqq5q>5pH{p=A zULm3j*R;n3Z7NvRHWf-ccP+yTyrSbP>(9K}FtfXdwdcp)>~Z<=+1tuT6pb$5qA53u z*IvG#yd(Y@<#}4nJ#+F9z0>!u7PjK_uybLn*z%5*ty`54o3Dpk<$N(8=Bsx;j~aCD z_6}S38f4)UWUzwYQHF`IZ%~L|&{z1p9w*PcPkk9=Oy=};y%-b5`i$CSOUk6-z=W|T z?>==>CX_=(vx~7lqc+)+GNJpNqD&ZT^6pb7Wis!;gt0!OHrbLgX*n=qtjW7ios`Lf z0~5yjjM`*N$|QDR!dR1cpE@a%PaT*r)@RfvTT&*UIWS?Y$-7UTlu6rx31fXmZL%e0 zvgp8su_o_6by6lB2PTa58MVollnITD6z$^~Yx3?>CuOqaz=W|rqc+)+GP&Zwgs~>? zK6O$iGCuMTg zfeB-MMs2bsWkO@*Mcah2ChtCVQYP0Om@w97)FxX}CaVri7;EzGQzvC|!+{B7eMW7v zC1pZ$T1C$j#+tnQ)Jd6yF-V$;3}cXXxhKu8Fa}B46~-X9C%eKJBxP3^gWR6%>Yp*l z{uw1Ide3E-AvUF@Jt6(liGJZ^V_QKPe=$X$W&HILt&A=*8!wxY4)?WmMGbT7wpl96 zu5dRP?gs5Li%Ltcu;Fen+zoDDcJI;O~2+ibBdFU_us0~5yD zMrK=H%4FPu31e*|vn?-WGU334v9^)fmX|V_bYQ|*+sJIoOPQQ@V8U42$ZX3?nVfN8 z!dTnLY|BfTyy(D$v9^)fmX|V_a$v$(+sJIoOPNeNFk!51WVYp{OvW6TFxECQ+wxK- z)8LX{y=fKscsA)xYf4QOQ^8~_%0#T znBCiuCd9w3s@&}*i#@MZ#D0qR7ZVtvwEbPYNPYC`taQ1??6ewlxhl(Ztbc0Eg^B#! z4_<8hmtNG^>FjN*XEF%}={>9iv}p+i7|e9LGTrV$DpTH*DN0(}hswQ~ZeJ$t&!izO z5%`fzSI(qIwM14P%XA~d6w(*R01jx0jy|p>6yRVcJ&{RIXOhaK!&-VC5l1rVsFr@i zwOkS_(ruvKE{UWmBP2ouN0=Dm6;^Q7hTV^(\DSP2833x_Headers\cmd -// -// For BIOS applications add: DSP2833x_Headers_BIOS.cmd -// For nonBIOS applications add: DSP2833x_Headers_nonBIOS.cmd -========================================================= */ - -/* ====================================================== -// For Code Composer Studio prior to V2.2 -// -------------------------------------- -// 1) Use one of the following -l statements to include the -// header linker command file in the project. The header linker -// file is required to link the peripheral structures to the proper -// locations within the memory map */ - -/* Uncomment this line to include file only for non-BIOS applications */ -/* -l DSP2833x_Headers_nonBIOS.cmd */ - -/* Uncomment this line to include file only for BIOS applications */ -/* -l DSP2833x_Headers_BIOS.cmd */ - -/* 2) In your project add the path to \DSP2833x_headers\cmd to the - library search path under project->build options, linker tab, - library search path (-i). -/*========================================================= */ - -/* Define the memory block start/length for the F28335 - PAGE 0 will be used to organize program sections - PAGE 1 will be used to organize data sections - - Notes: - Memory blocks on F28335 are uniform (ie same - physical memory) in both PAGE 0 and PAGE 1. - That is the same memory region should not be - defined for both PAGE 0 and PAGE 1. - Doing so will result in corruption of program - and/or data. - - L0/L1/L2 and L3 memory blocks are mirrored - that is - they can be accessed in high memory or low memory. - For simplicity only one instance is used in this - linker file. - - Contiguous SARAM memory blocks can be combined - if required to create a larger memory block. -*/ - - -MEMORY -{ -PAGE 0 : - /* BEGIN is used for the "boot to SARAM" bootloader mode */ - /* BOOT_RSVD is used by the boot ROM for stack. */ - /* This section is only reserved to keep the BOOT ROM from */ - /* corrupting this area during the debug process */ - - BEGIN : origin = 0x000000, length = 0x000002 /* Boot to M0 will go here */ - BOOT_RSVD : origin = 0x000002, length = 0x00004E /* Part of M0, BOOT rom will use this for stack */ - RAMM0 : origin = 0x000050, length = 0x0003B0 - - RAML0 : origin = 0x008000, length = 0x001000 - RAML1 : origin = 0x009000, length = 0x001000 - RAML2 : origin = 0x00A000, length = 0x001000 - RAML3 : origin = 0x00B000, length = 0x001000 - ZONE7A : origin = 0x200000, length = 0x00FC00 /* XINTF zone 7 - program space */ - CSM_RSVD : origin = 0x33FF80, length = 0x000076 /* Part of FLASHA. Program with all 0x0000 when CSM is in use. */ - CSM_PWL : origin = 0x33FFF8, length = 0x000008 /* Part of FLASHA. CSM password locations in FLASHA */ - ADC_CAL : origin = 0x380080, length = 0x000009 - RESET : origin = 0x3FFFC0, length = 0x000002 - IQTABLES : origin = 0x3FE000, length = 0x000b50 - IQTABLES2 : origin = 0x3FEB50, length = 0x00008c - FPUTABLES : origin = 0x3FEBDC, length = 0x0006A0 - BOOTROM : origin = 0x3FF27C, length = 0x000D44 - - -PAGE 1 : - RAMM1 : origin = 0x000400, length = 0x000400 /* on-chip RAM block M1 */ - RAML4 : origin = 0x00C000, length = 0x001000 - RAML5 : origin = 0x00D000, length = 0x001000 - RAML6 : origin = 0x00E000, length = 0x001000 - RAML7 : origin = 0x00F000, length = 0x001000 - ZONE7B : origin = 0x20FC00, length = 0x000400 /* XINTF zone 7 - data space */ -} - - -SECTIONS -{ - /* Setup for "boot to SARAM" mode: - The codestart section (found in DSP28_CodeStartBranch.asm) - re-directs execution to the start of user code. */ - codestart : > BEGIN, PAGE = 0 - ramfuncs : > RAML0, PAGE = 0 - .text : > RAML1, PAGE = 0 - .cinit : > RAML0, PAGE = 0 - .pinit : > RAML0, PAGE = 0 - .switch : > RAML0, PAGE = 0 - - xintffuncs : LOAD = RAML1, - RUN = ZONE7A, - LOAD_START(_XintffuncsLoadStart), - LOAD_END(_XintffuncsLoadEnd), - RUN_START(_XintffuncsRunStart), - PAGE = 0 - - .stack : > RAMM1, PAGE = 1 - .ebss : > RAML4, PAGE = 1 - .econst : > RAML5, PAGE = 1 - .esysmem : > RAMM1, PAGE = 1 - - IQmath : > RAML1, PAGE = 0 - IQmathTables : > IQTABLES, PAGE = 0, TYPE = NOLOAD - IQmathTables2 : > IQTABLES2, PAGE = 0, TYPE = NOLOAD - FPUmathTables : > FPUTABLES, PAGE = 0, TYPE = NOLOAD - - DMARAML4 : > RAML4, PAGE = 1 - DMARAML5 : > RAML5, PAGE = 1 - DMARAML6 : > RAML6, PAGE = 1 - DMARAML7 : > RAML7, PAGE = 1 - - ZONE7DATA : > ZONE7B, PAGE = 1 - - .reset : > RESET, PAGE = 0, TYPE = DSECT /* not used */ - csm_rsvd : > CSM_RSVD PAGE = 0, TYPE = DSECT /* not used for SARAM examples */ - csmpasswds : > CSM_PWL PAGE = 0, TYPE = DSECT /* not used for SARAM examples */ - - /* Allocate ADC_cal function (pre-programmed by factory into TI reserved memory) */ - .adc_cal : load = ADC_CAL, PAGE = 0, TYPE = NOLOAD - -} - -/* -//=========================================================================== -// End of file. -//=========================================================================== -*/ diff --git a/Source/External/v120/DSP2833x_examples/xintf_run_from/Example_2833xCodeRunFromXintf.c b/Source/External/v120/DSP2833x_examples/xintf_run_from/Example_2833xCodeRunFromXintf.c deleted file mode 100644 index 2902cff..0000000 --- a/Source/External/v120/DSP2833x_examples/xintf_run_from/Example_2833xCodeRunFromXintf.c +++ /dev/null @@ -1,256 +0,0 @@ -//########################################################################### -// -// FILE: Example_2833xCodeRunFromXintf.c -// -// TITLE: Example Program That Executes From XINTF -// -// ASSUMPTIONS: -// -// This program requires the DSP2833x header files. -// -// As supplied, this project is configured for "boot to SARAM" -// operation. The 2833x Boot Mode table is shown below. -// For information on configuring the boot mode of an eZdsp, -// please refer to the documentation included with the eZdsp, -// -// $Boot_Table: -// -// GPIO87 GPIO86 GPIO85 GPIO84 -// XA15 XA14 XA13 XA12 -// PU PU PU PU -// ========================================== -// 1 1 1 1 Jump to Flash -// 1 1 1 0 SCI-A boot -// 1 1 0 1 SPI-A boot -// 1 1 0 0 I2C-A boot -// 1 0 1 1 eCAN-A boot -// 1 0 1 0 McBSP-A boot -// 1 0 0 1 Jump to XINTF x16 -// 1 0 0 0 Jump to XINTF x32 -// 0 1 1 1 Jump to OTP -// 0 1 1 0 Parallel GPIO I/O boot -// 0 1 0 1 Parallel XINTF boot -// 0 1 0 0 Jump to SARAM <- "boot to SARAM" -// 0 0 1 1 Branch to check boot mode -// 0 0 1 0 Boot to flash, bypass ADC cal -// 0 0 0 1 Boot to SARAM, bypass ADC cal -// 0 0 0 0 Boot to SCI-A, bypass ADC cal -// Boot_Table_End$ -// -// DESCRIPTION: -// -// This example configures CPU Timer0 and increments -// a counter each time the timer asserts an interrupt. -// -// The code is loaded into SARAM. The XINTF Zone 7 is -// configured for x16-bit data bus. A porition of the code -// is copied to XINTF for execution there. -// -// Watch Variables: -// CpuTimer0.InterruptCount -// CpuTimer1.InterruptCount -// CpuTimer2.InterruptCount -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### - -#include "DSP28x_Project.h" // Device Headerfile and Examples Include File - -// These two functions will be loaded into SARAM and copied to -// XINTF zone 7 for execution -#pragma CODE_SECTION(cpu_timer0_isr,"xintffuncs"); -#pragma CODE_SECTION(cpu_timer1_isr,"xintffuncs"); - -// Prototype statements for functions found within this file: -void init_zone7(void); -interrupt void cpu_timer0_isr(void); -interrupt void cpu_timer1_isr(void); -interrupt void cpu_timer2_isr(void); - -void main(void) -{ - -// Step 1. Initialize System Control: -// PLL, WatchDog, enable Peripheral Clocks -// This example function is found in the DSP2833x_SysCtrl.c file. - InitSysCtrl(); - -// Step 2. Initalize GPIO: -// This example function is found in the DSP2833x_Gpio.c file and -// illustrates how to set the GPIO to it's default state. -// InitGpio(); // Skipped for this example - - -// Step 3. Clear all interrupts and initialize PIE vector table: -// Disable CPU interrupts - DINT; - -// Initialize the PIE control registers to their default state. -// The default state is all PIE interrupts disabled and flags -// are cleared. -// This function is found in the DSP2833x_PieCtrl.c file. - InitPieCtrl(); - -// Disable CPU interrupts and clear all CPU interrupt flags: - IER = 0x0000; - IFR = 0x0000; - -// Initialize the PIE vector table with pointers to the shell Interrupt -// Service Routines (ISR). -// This will populate the entire table, even if the interrupt -// is not used in this example. This is useful for debug purposes. -// The shell ISR routines are found in DSP2833x_DefaultIsr.c. -// This function is found in DSP2833x_PieVect.c. - InitPieVectTable(); - -// Interrupts that are used in this example are re-mapped to -// ISR functions found within this file. - EALLOW; // This is needed to write to EALLOW protected registers - PieVectTable.TINT0 = &cpu_timer0_isr; - PieVectTable.XINT13 = &cpu_timer1_isr; - PieVectTable.TINT2 = &cpu_timer2_isr; - EDIS; // This is needed to disable write to EALLOW protected registers - -// Step 4. Initialize the Device Peripheral. This function can be -// found in DSP2833x_CpuTimers.c - InitCpuTimers(); // For this example, only initialize the Cpu Timers - -#if (CPU_FRQ_150MHZ) -// Configure CPU-Timer 0, 1, and 2 to interrupt every second: -// 150MHz CPU Freq, 1 second Period (in uSeconds) - - ConfigCpuTimer(&CpuTimer0, 150, 1000000); - ConfigCpuTimer(&CpuTimer1, 150, 1000000); - ConfigCpuTimer(&CpuTimer2, 150, 1000000); -#endif - -#if (CPU_FRQ_100MHZ) -// Configure CPU-Timer 0, 1, and 2 to interrupt every second: -// 100MHz CPU Freq, 1 second Period (in uSeconds) - - ConfigCpuTimer(&CpuTimer0, 100, 1000000); - ConfigCpuTimer(&CpuTimer1, 100, 1000000); - ConfigCpuTimer(&CpuTimer2, 100, 1000000); -#endif - -// To ensure precise timing, use write-only instructions to write to the entire register. Therefore, if any -// of the configuration bits are changed in ConfigCpuTimer and InitCpuTimers (in DSP2833x_CpuTimers.h), the -// below settings must also be updated. - - CpuTimer0Regs.TCR.all = 0x4001; // Use write-only instruction to set TSS bit = 0 - CpuTimer1Regs.TCR.all = 0x4001; // Use write-only instruction to set TSS bit = 0 - CpuTimer2Regs.TCR.all = 0x4001; // Use write-only instruction to set TSS bit = 0 - -// Step 5. User specific code, enable interrupts: - -// Initalize XINTF Zone 7 - init_zone7(); - -// Copy non-time critical code to XINTF -// This includes the following ISR functions: cpu_timer0_isr(), cpu_timer1_isr() -// The XintffuncsLoadStart, XintffuncsLoadEnd, and XintffuncsRunStart -// symbols are created by the linker. Refer to the F28335_ram_xintf.cmd file. - MemCopy(&XintffuncsLoadStart, &XintffuncsLoadEnd, &XintffuncsRunStart); - -// Enable CPU int1 which is connected to CPU-Timer 0, CPU int13 -// which is connected to CPU-Timer 1, and CPU int 14, which is connected -// to CPU-Timer 2: - IER |= M_INT1; - IER |= M_INT13; - IER |= M_INT14; - -// Enable TINT0 in the PIE: Group 1 interrupt 7 - PieCtrlRegs.PIEIER1.bit.INTx7 = 1; - -// Enable global Interrupts and higher priority real-time debug events: - EINT; // Enable Global interrupt INTM - ERTM; // Enable Global realtime interrupt DBGM - -// Step 6. IDLE loop. Just sit and loop forever (optional): - for(;;); - -} - - -interrupt void cpu_timer0_isr(void) -{ - CpuTimer0.InterruptCount++; - - // Acknowledge this interrupt to receive more interrupts from group 1 - PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; -} - -interrupt void cpu_timer1_isr(void) -{ - CpuTimer1.InterruptCount++; - // The CPU acknowledges the interrupt. - EDIS; -} - -interrupt void cpu_timer2_isr(void) -{ EALLOW; - CpuTimer2.InterruptCount++; - // The CPU acknowledges the interrupt. - EDIS; -} - -// Configure the timing paramaters for Zone 7. -// Notes: -// This function should not be executed from XINTF -// Adjust the timing based on the data manual and -// external device requirements. -void init_zone7(void) -{ - - // Make sure the XINTF clock is enabled - SysCtrlRegs.PCLKCR3.bit.XINTFENCLK = 1; - - // Configure the GPIO for XINTF with a 16-bit data bus - // This function is in DSP2833x_Xintf.c - InitXintf16Gpio(); - - EALLOW; - // All Zones--------------------------------- - // Timing for all zones based on XTIMCLK = SYSCLKOUT - XintfRegs.XINTCNF2.bit.XTIMCLK = 0; - // Buffer up to 3 writes - XintfRegs.XINTCNF2.bit.WRBUFF = 3; - // XCLKOUT is enabled - XintfRegs.XINTCNF2.bit.CLKOFF = 0; - // XCLKOUT = XTIMCLK - XintfRegs.XINTCNF2.bit.CLKMODE = 0; - - // Zone 7------------------------------------ - // When using ready, ACTIVE must be 1 or greater - // Lead must always be 1 or greater - // Zone write timing - XintfRegs.XTIMING7.bit.XWRLEAD = 1; - XintfRegs.XTIMING7.bit.XWRACTIVE = 2; - XintfRegs.XTIMING7.bit.XWRTRAIL = 1; - // Zone read timing - XintfRegs.XTIMING7.bit.XRDLEAD = 1; - XintfRegs.XTIMING7.bit.XRDACTIVE = 3; - XintfRegs.XTIMING7.bit.XRDTRAIL = 0; - - // don't double all Zone read/write lead/active/trail timing - XintfRegs.XTIMING7.bit.X2TIMING = 0; - - // Zone will not sample XREADY signal - XintfRegs.XTIMING7.bit.USEREADY = 0; - XintfRegs.XTIMING7.bit.READYMODE = 0; - - // 1,1 = x16 data bus - // 0,1 = x32 data bus - // other values are reserved - XintfRegs.XTIMING7.bit.XSIZE = 3; - EDIS; - - //Force a pipeline flush to ensure that the write to - //the last register configured occurs before returning. - asm(" RPT #7 || NOP"); -} - -//=========================================================================== -// No more. -//=========================================================================== diff --git a/Source/External/v120/DSP2833x_examples/xintf_run_from/Example_2833xCodeRunFromXintf.pjt b/Source/External/v120/DSP2833x_examples/xintf_run_from/Example_2833xCodeRunFromXintf.pjt deleted file mode 100644 index e71b210..0000000 --- a/Source/External/v120/DSP2833x_examples/xintf_run_from/Example_2833xCodeRunFromXintf.pjt +++ /dev/null @@ -1,62 +0,0 @@ -; Code Composer Project File, Version 2.0 (do not modify or remove this line) - -[Project Settings] -ProjectName="DSP2833x" -ProjectDir="C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\xintf_run_from\" -ProjectType=Executable -CPUFamily=TMS320C28XX -Tool="Compiler" -Tool="CustomBuilder" -Tool="DspBiosBuilder" -Tool="Linker" -Config="Debug" -Config="Release" - -[Source Files] -Source="..\..\DSP2833x_common\source\DSP2833x_ADC_cal.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CodeStartBranch.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_CpuTimers.c" -Source="..\..\DSP2833x_common\source\DSP2833x_DBGIER.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_DefaultIsr.c" -Source="..\..\DSP2833x_common\source\DSP2833x_MemCopy.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_PieVect.c" -Source="..\..\DSP2833x_common\source\DSP2833x_SysCtrl.c" -Source="..\..\DSP2833x_common\source\DSP2833x_usDelay.asm" -Source="..\..\DSP2833x_common\source\DSP2833x_Xintf.c" -Source="..\..\DSP2833x_headers\source\DSP2833x_GlobalVariableDefs.c" -Source="Example_2833xCodeRunFromXintf.c" -Source="Example_2833xRunFromXintf.gel" -Source="..\..\DSP2833x_headers\cmd\DSP2833x_Headers_nonBIOS.cmd" -Source="28335_RAM_xintf_lnk.cmd" - -["Compiler" Settings: "Debug"] -Options=-g -q -pdr -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\xintf_run_from\Debug" -i"..\..\DSP2833x_headers\include" -i"..\..\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" -mf -ml -mn -mt -v28 --float_support=fpu32 - -["Compiler" Settings: "Release"] -Options=-q -o3 -fr"C:\tidcs\c28\DSP2833x\v120\DSP2833x_examples\xintf_run_from\Release" -d"LARGE_MODEL" -ml -v28 - -["DspBiosBuilder" Settings: "Debug"] -Options=-v28 - -["DspBiosBuilder" Settings: "Release"] -Options=-v28 - -["Linker" Settings: "Debug"] -Options=-q -c -ecode_start -heap0x800 -m".\Debug\Example_2833xCodeRunFromXintf.map" -o".\Debug\Example_2833xCodeRunFromXintf.out" -stack0x380 -w -x -i"..\..\DSP2833x_headers\include" -l"rts2800_fpu32.lib" - -["Linker" Settings: "Release"] -Options=-q -c -o".\Release\Example_2833xCodeRunFromXintf.out" -x - -["Example_2833xRunFromXintf.gel" Settings: "Debug"] -ExcludeFromBuild=true - -["Example_2833xRunFromXintf.gel" Settings: "Release"] -ExcludeFromBuild=true - -["28335_RAM_xintf_lnk.cmd" Settings: "Debug"] -LinkOrder=1 - -["28335_RAM_xintf_lnk.cmd" Settings: "Release"] -LinkOrder=1 - diff --git a/Source/External/v120/DSP2833x_examples/xintf_run_from/Example_2833xRunFromXintf.gel b/Source/External/v120/DSP2833x_examples/xintf_run_from/Example_2833xRunFromXintf.gel deleted file mode 100644 index 04e0f4f..0000000 --- a/Source/External/v120/DSP2833x_examples/xintf_run_from/Example_2833xRunFromXintf.gel +++ /dev/null @@ -1,37 +0,0 @@ -/* -// TI File $Revision: /main/1 $ -// Checkin $Date: August 29, 2007 14:08:07 $ -//########################################################################### -// -// This .gel file can be used to help load and build the example project. -// It should be unloaded from Code Composer Studio before loading another -// project. -// -//########################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//########################################################################### -*/ - -menuitem "DSP28335 XINTF Run Example" - -hotmenu Load_and_Build_Project() -{ - GEL_ProjectLoad("Example_2833xCodeRunFromXintf.pjt"); - GEL_ProjectBuild("Example_2833xCodeRunFromXintf.pjt"); - Setup_WatchWindow(); -} - -hotmenu Load_Code() -{ - GEL_Load(".\\debug\\Example_2833xCodeRunFromXintf.out"); - Setup_WatchWindow(); -} - -hotmenu Setup_WatchWindow() -{ - GEL_WatchReset(); - GEL_WatchAdd("CpuTimer0.InterruptCount",,"CPU ISR Count"); - GEL_WatchAdd("CpuTimer1.InterruptCount",,"CPU ISR Count"); - GEL_WatchAdd("CpuTimer2.InterruptCount",,"CPU ISR Count"); -} diff --git a/Source/External/v120/DSP2833x_headers/gel/DSP2833x_DualMap_EPWM.gel b/Source/External/v120/DSP2833x_headers/gel/DSP2833x_DualMap_EPWM.gel deleted file mode 100644 index e08455b..0000000 --- a/Source/External/v120/DSP2833x_headers/gel/DSP2833x_DualMap_EPWM.gel +++ /dev/null @@ -1,237 +0,0 @@ -/* -/* TI File $Revision: /main/1 $ */ -/* Checkin $Date: May 7, 2008 13:07:07 $ */ -/***********************************************************************/ -/* File: DSP2833x_DualMap_EPWM.gel -/* -/* Description: -/* Adds dual-mapped EPWM registers to the GEL menu in -/* Code Composer Studio and allows user to enable dual-mapping of -/* EPWM registers to Peripheral Frame 3 (DMA-accessible) register -/* space -//##################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//##################################################################### -*/ - -/********************************************************************/ -/* Dual-Mapped Enhanced PWM Registers */ -/********************************************************************/ - -/* Add a space line to the GEL menu */ -menuitem "___________________________________"; -hotmenu ___() {} - -menuitem "Dual-Mapped ePWM Registers"; -hotmenu Enable_ePWM_Dual_Mapping () -{ - *0x702E = (*0x702E) | 0x0001; /* MAPCNF[MAPEPWM] = 1 */ -} -hotmenu ePWM1_DualMapped_All_Regs() -{ - GEL_WatchAdd("*0x5800,x","ePWM1 TBCTL"); - GEL_WatchAdd("*0x5801,x","ePWM1 TBSTS"); - GEL_WatchAdd("*0x5802,x","ePWM1 TBPHSHR"); - GEL_WatchAdd("*0x5803,x","ePWM1 TBPHS"); - GEL_WatchAdd("*0x5804,x","ePWM1 TBCTR"); - GEL_WatchAdd("*0x5805,x","ePWM1 TBPRD"); - GEL_WatchAdd("*0x5807,x","ePWM1 CMPCTL"); - GEL_WatchAdd("*0x5808,x","ePWM1 CMPAHR"); - GEL_WatchAdd("*0x5809,x","ePWM1 CMPA"); - GEL_WatchAdd("*0x580A,x","ePWM1 CMPB"); - GEL_WatchAdd("*0x580B,x","ePWM1 AQCTLA"); - GEL_WatchAdd("*0x580C,x","ePWM1 AQCTLB"); - GEL_WatchAdd("*0x580D,x","ePWM1 AQSFRC"); - GEL_WatchAdd("*0x580E,x","ePWM1 AQCSFRC"); - GEL_WatchAdd("*0x580F,x","ePWM1 DBCTL"); - GEL_WatchAdd("*0x5810,x","ePWM1 DBRED"); - GEL_WatchAdd("*0x5811,x","ePWM1 DBFED"); - GEL_WatchAdd("*0x5812,x","ePWM1 TZSEL"); - GEL_WatchAdd("*0x5813,x","ePWM1 TZDCSEL"); - GEL_WatchAdd("*0x5814,x","ePWM1 TZCTL"); - GEL_WatchAdd("*0x5815,x","ePWM1 TZEINT"); - GEL_WatchAdd("*0x5816,x","ePWM1 TZFLG"); - GEL_WatchAdd("*0x5817,x","ePWM1 TZCLR"); - GEL_WatchAdd("*0x5818,x","ePWM1 TZFRC"); - GEL_WatchAdd("*0x5819,x","ePWM1 ETSEL"); - GEL_WatchAdd("*0x581A,x","ePWM1 ETPS"); - GEL_WatchAdd("*0x581B,x","ePWM1 ETFLG"); - GEL_WatchAdd("*0x581C,x","ePWM1 ETCLR"); - GEL_WatchAdd("*0x581D,x","ePWM1 ETFRC"); - GEL_WatchAdd("*0x581E,x","ePWM1 PCCTL"); - GEL_WatchAdd("*0x5820,x","ePWM1 HRCNFG"); -} - -hotmenu ePWM2_DualMapped_All_Regs() -{ - GEL_WatchAdd("*0x5840,x","ePWM2 TBCTL"); - GEL_WatchAdd("*0x5841,x","ePWM2 TBSTS"); - GEL_WatchAdd("*0x5842,x","ePWM2 TBPHSHR"); - GEL_WatchAdd("*0x5843,x","ePWM2 TBPHS"); - GEL_WatchAdd("*0x5844,x","ePWM2 TBCTR"); - GEL_WatchAdd("*0x5845,x","ePWM2 TBPRD"); - GEL_WatchAdd("*0x5847,x","ePWM2 CMPCTL"); - GEL_WatchAdd("*0x5848,x","ePWM2 CMPAHR"); - GEL_WatchAdd("*0x5849,x","ePWM2 CMPA"); - GEL_WatchAdd("*0x584A,x","ePWM2 CMPB"); - GEL_WatchAdd("*0x584B,x","ePWM2 AQCTLA"); - GEL_WatchAdd("*0x584C,x","ePWM2 AQCTLB"); - GEL_WatchAdd("*0x584D,x","ePWM2 AQSFRC"); - GEL_WatchAdd("*0x584E,x","ePWM2 AQCSFRC"); - GEL_WatchAdd("*0x584F,x","ePWM2 DBCTL"); - GEL_WatchAdd("*0x5850,x","ePWM2 DBRED"); - GEL_WatchAdd("*0x5851,x","ePWM2 DBFED"); - GEL_WatchAdd("*0x5852,x","ePWM2 TZSEL"); - GEL_WatchAdd("*0x5853,x","ePWM2 TZDCSEL"); - GEL_WatchAdd("*0x5854,x","ePWM2 TZCTL"); - GEL_WatchAdd("*0x5855,x","ePWM2 TZEINT"); - GEL_WatchAdd("*0x5856,x","ePWM2 TZFLG"); - GEL_WatchAdd("*0x5857,x","ePWM2 TZCLR"); - GEL_WatchAdd("*0x5858,x","ePWM2 TZFRC"); - GEL_WatchAdd("*0x5859,x","ePWM2 ETSEL"); - GEL_WatchAdd("*0x585A,x","ePWM2 ETPS"); - GEL_WatchAdd("*0x585B,x","ePWM2 ETFLG"); - GEL_WatchAdd("*0x585C,x","ePWM2 ETCLR"); - GEL_WatchAdd("*0x585D,x","ePWM2 ETFRC"); - GEL_WatchAdd("*0x585E,x","ePWM2 PCCTL"); - GEL_WatchAdd("*0x5860,x","ePWM2 HRCNFG"); -} -hotmenu ePWM3_DualMapped_All_Regs() -{ - GEL_WatchAdd("*0x5880,x","ePWM3 TBCTL"); - GEL_WatchAdd("*0x5881,x","ePWM3 TBSTS"); - GEL_WatchAdd("*0x5882,x","ePWM3 TBPHSHR"); - GEL_WatchAdd("*0x5883,x","ePWM3 TBPHS"); - GEL_WatchAdd("*0x5884,x","ePWM3 TBCTR"); - GEL_WatchAdd("*0x5885,x","ePWM3 TBPRD"); - GEL_WatchAdd("*0x5887,x","ePWM3 CMPCTL"); - GEL_WatchAdd("*0x5888,x","ePWM3 CMPAHR"); - GEL_WatchAdd("*0x5889,x","ePWM3 CMPA"); - GEL_WatchAdd("*0x588A,x","ePWM3 CMPB"); - GEL_WatchAdd("*0x588B,x","ePWM3 AQCTLA"); - GEL_WatchAdd("*0x588C,x","ePWM3 AQCTLB"); - GEL_WatchAdd("*0x588D,x","ePWM3 AQSFRC"); - GEL_WatchAdd("*0x588E,x","ePWM3 AQCSFRC"); - GEL_WatchAdd("*0x588F,x","ePWM3 DBCTL"); - GEL_WatchAdd("*0x5890,x","ePWM3 DBRED"); - GEL_WatchAdd("*0x5891,x","ePWM3 DBFED"); - GEL_WatchAdd("*0x5892,x","ePWM3 TZSEL"); - GEL_WatchAdd("*0x5893,x","ePWM3 TZDCSEL"); - GEL_WatchAdd("*0x5894,x","ePWM3 TZCTL"); - GEL_WatchAdd("*0x5895,x","ePWM3 TZEINT"); - GEL_WatchAdd("*0x5896,x","ePWM3 TZFLG"); - GEL_WatchAdd("*0x5897,x","ePWM3 TZCLR"); - GEL_WatchAdd("*0x5898,x","ePWM3 TZFRC"); - GEL_WatchAdd("*0x5899,x","ePWM3 ETSEL"); - GEL_WatchAdd("*0x589A,x","ePWM3 ETPS"); - GEL_WatchAdd("*0x589B,x","ePWM3 ETFLG"); - GEL_WatchAdd("*0x589C,x","ePWM3 ETCLR"); - GEL_WatchAdd("*0x589D,x","ePWM3 ETFRC"); - GEL_WatchAdd("*0x589E,x","ePWM3 PCCTL"); - GEL_WatchAdd("*0x58A0,x","ePWM3 HRCNFG"); -} -hotmenu ePWM4_DualMapped_All_Regs() -{ - GEL_WatchAdd("*0x58C0,x","ePWM4 TBCTL"); - GEL_WatchAdd("*0x58C1,x","ePWM4 TBSTS"); - GEL_WatchAdd("*0x58C2,x","ePWM4 TBPHSHR"); - GEL_WatchAdd("*0x58C3,x","ePWM4 TBPHS"); - GEL_WatchAdd("*0x58C4,x","ePWM4 TBCTR"); - GEL_WatchAdd("*0x58C5,x","ePWM4 TBPRD"); - GEL_WatchAdd("*0x58C7,x","ePWM4 CMPCTL"); - GEL_WatchAdd("*0x58C8,x","ePWM4 CMPAHR"); - GEL_WatchAdd("*0x58C9,x","ePWM4 CMPA"); - GEL_WatchAdd("*0x58CA,x","ePWM4 CMPB"); - GEL_WatchAdd("*0x58CB,x","ePWM4 AQCTLA"); - GEL_WatchAdd("*0x58CC,x","ePWM4 AQCTLB"); - GEL_WatchAdd("*0x58CD,x","ePWM4 AQSFRC"); - GEL_WatchAdd("*0x58CE,x","ePWM4 AQCSFRC"); - GEL_WatchAdd("*0x58CF,x","ePWM4 DBCTL"); - GEL_WatchAdd("*0x58D0,x","ePWM4 DBRED"); - GEL_WatchAdd("*0x58D1,x","ePWM4 DBFED"); - GEL_WatchAdd("*0x58D2,x","ePWM4 TZSEL"); - GEL_WatchAdd("*0x58D3,x","ePWM4 TZDCSEL"); - GEL_WatchAdd("*0x58D4,x","ePWM4 TZCTL"); - GEL_WatchAdd("*0x58D5,x","ePWM4 TZEINT"); - GEL_WatchAdd("*0x58D6,x","ePWM4 TZFLG"); - GEL_WatchAdd("*0x58D7,x","ePWM4 TZCLR"); - GEL_WatchAdd("*0x58D8,x","ePWM4 TZFRC"); - GEL_WatchAdd("*0x58D9,x","ePWM4 ETSEL"); - GEL_WatchAdd("*0x58DA,x","ePWM4 ETPS"); - GEL_WatchAdd("*0x58DB,x","ePWM4 ETFLG"); - GEL_WatchAdd("*0x58DC,x","ePWM4 ETCLR"); - GEL_WatchAdd("*0x58DD,x","ePWM4 ETFRC"); - GEL_WatchAdd("*0x58DE,x","ePWM4 PCCTL"); - GEL_WatchAdd("*0x58E0,x","ePWM4 HRCNFG"); -} -hotmenu ePWM5_DualMapped_All_Regs() -{ - GEL_WatchAdd("*0x5900,x","ePWM5 TBCTL"); - GEL_WatchAdd("*0x5901,x","ePWM5 TBSTS"); - GEL_WatchAdd("*0x5902,x","ePWM5 TBPHSHR"); - GEL_WatchAdd("*0x5903,x","ePWM5 TBPHS"); - GEL_WatchAdd("*0x5904,x","ePWM5 TBCTR"); - GEL_WatchAdd("*0x5905,x","ePWM5 TBPRD"); - GEL_WatchAdd("*0x5907,x","ePWM5 CMPCTL"); - GEL_WatchAdd("*0x5908,x","ePWM5 CMPAHR"); - GEL_WatchAdd("*0x5909,x","ePWM5 CMPA"); - GEL_WatchAdd("*0x590A,x","ePWM5 CMPB"); - GEL_WatchAdd("*0x590B,x","ePWM5 AQCTLA"); - GEL_WatchAdd("*0x590C,x","ePWM5 AQCTLB"); - GEL_WatchAdd("*0x590D,x","ePWM5 AQSFRC"); - GEL_WatchAdd("*0x590E,x","ePWM5 AQCSFRC"); - GEL_WatchAdd("*0x590F,x","ePWM5 DBCTL"); - GEL_WatchAdd("*0x5910,x","ePWM5 DBRED"); - GEL_WatchAdd("*0x5911,x","ePWM5 DBFED"); - GEL_WatchAdd("*0x5912,x","ePWM5 TZSEL"); - GEL_WatchAdd("*0x5913,x","ePWM5 TZDCSEL"); - GEL_WatchAdd("*0x5914,x","ePWM5 TZCTL"); - GEL_WatchAdd("*0x5915,x","ePWM5 TZEINT"); - GEL_WatchAdd("*0x5916,x","ePWM5 TZFLG"); - GEL_WatchAdd("*0x5917,x","ePWM5 TZCLR"); - GEL_WatchAdd("*0x5918,x","ePWM5 TZFRC"); - GEL_WatchAdd("*0x5919,x","ePWM5 ETSEL"); - GEL_WatchAdd("*0x591A,x","ePWM5 ETPS"); - GEL_WatchAdd("*0x591B,x","ePWM5 ETFLG"); - GEL_WatchAdd("*0x591C,x","ePWM5 ETCLR"); - GEL_WatchAdd("*0x591D,x","ePWM5 ETFRC"); - GEL_WatchAdd("*0x591E,x","ePWM5 PCCTL"); - GEL_WatchAdd("*0x5920,x","ePWM5 HRCNFG"); -} -hotmenu ePWM6_DualMapped_All_Regs() -{ - GEL_WatchAdd("*0x5940,x","ePWM6 TBCTL"); - GEL_WatchAdd("*0x5941,x","ePWM6 TBSTS"); - GEL_WatchAdd("*0x5942,x","ePWM6 TBPHSHR"); - GEL_WatchAdd("*0x5943,x","ePWM6 TBPHS"); - GEL_WatchAdd("*0x5944,x","ePWM6 TBCTR"); - GEL_WatchAdd("*0x5945,x","ePWM6 TBPRD"); - GEL_WatchAdd("*0x5947,x","ePWM6 CMPCTL"); - GEL_WatchAdd("*0x5948,x","ePWM6 CMPAHR"); - GEL_WatchAdd("*0x5949,x","ePWM6 CMPA"); - GEL_WatchAdd("*0x594A,x","ePWM6 CMPB"); - GEL_WatchAdd("*0x594B,x","ePWM6 AQCTLA"); - GEL_WatchAdd("*0x594C,x","ePWM6 AQCTLB"); - GEL_WatchAdd("*0x594D,x","ePWM6 AQSFRC"); - GEL_WatchAdd("*0x594E,x","ePWM6 AQCSFRC"); - GEL_WatchAdd("*0x594F,x","ePWM6 DBCTL"); - GEL_WatchAdd("*0x5950,x","ePWM6 DBRED"); - GEL_WatchAdd("*0x5951,x","ePWM6 DBFED"); - GEL_WatchAdd("*0x5952,x","ePWM6 TZSEL"); - GEL_WatchAdd("*0x5953,x","ePWM6 TZDCSEL"); - GEL_WatchAdd("*0x5954,x","ePWM6 TZCTL"); - GEL_WatchAdd("*0x5955,x","ePWM6 TZEINT"); - GEL_WatchAdd("*0x5956,x","ePWM6 TZFLG"); - GEL_WatchAdd("*0x5957,x","ePWM6 TZCLR"); - GEL_WatchAdd("*0x5958,x","ePWM6 TZFRC"); - GEL_WatchAdd("*0x5959,x","ePWM6 ETSEL"); - GEL_WatchAdd("*0x595A,x","ePWM6 ETPS"); - GEL_WatchAdd("*0x595B,x","ePWM6 ETFLG"); - GEL_WatchAdd("*0x595C,x","ePWM6 ETCLR"); - GEL_WatchAdd("*0x595D,x","ePWM6 ETFRC"); - GEL_WatchAdd("*0x595E,x","ePWM6 PCCTL"); - GEL_WatchAdd("*0x5960,x","ePWM6 HRCNFG"); - -} - diff --git a/Source/External/v120/DSP2833x_headers/gel/DSP2833x_Peripheral.gel b/Source/External/v120/DSP2833x_headers/gel/DSP2833x_Peripheral.gel deleted file mode 100644 index c51afd1..0000000 --- a/Source/External/v120/DSP2833x_headers/gel/DSP2833x_Peripheral.gel +++ /dev/null @@ -1,249 +0,0 @@ -/* -/* TI File $Revision: /main/7 $ */ -/* Checkin $Date: June 2, 2008 11:12:27 $ */ -/******************************************************************* */ -/* File: DSP2833x_peripheral.gel */ -/* Description: Adds '2833x registers to the GEL menu in */ -/* Code Composer Studio using the structures defined in the DSP2833x */ -/* header files. The user must have the symbols (.out file) */ -/* loaded from a project using the DSP28 structures in order for */ -/* these menu items to work. If symbols are not loaded, the */ -/* watch window will report "Identifier not found." */ -/* -//##################################################################### -// $TI Release: DSP2833x/DSP2823x Header Files V1.20 $ -// $Release Date: August 1, 2008 $ -//##################################################################### -*/ - -/* Add a space line to the GEL menu */ -menuitem "____________________________________"; -hotmenu _() {} - -menuitem "Watch DSP2833x Peripheral Structures"; - -hotmenu All_Peripherals_Regs() -{ - GEL_WatchAdd("AdcRegs"); - GEL_WatchAdd("AdcMirror"); - GEL_WatchAdd("CsmRegs"); - GEL_WatchAdd("CsmPwl"); - GEL_WatchAdd("CpuTimer0Regs"); - GEL_WatchAdd("CpuTimer1Regs"); - GEL_WatchAdd("CpuTimer2Regs"); - GEL_WatchAdd("DevEmuRegs"); - GEL_WatchAdd("DmaRegs"); - GEL_WatchAdd("ECanaRegs"); - GEL_WatchAdd("ECanaMboxes"); - GEL_WatchAdd("ECanaLAMRegs"); - GEL_WatchAdd("ECanaMOTSRegs"); - GEL_WatchAdd("ECanbRegs"); - GEL_WatchAdd("ECanbMboxes"); - GEL_WatchAdd("ECanbLAMRegs"); - GEL_WatchAdd("ECanbMOTSRegs"); - GEL_WatchAdd("EPwm1Regs"); - GEL_WatchAdd("EPwm2Regs"); - GEL_WatchAdd("EPwm3Regs"); - GEL_WatchAdd("EPwm4Regs"); - GEL_WatchAdd("EPwm5Regs"); - GEL_WatchAdd("EPwm6Regs"); - GEL_WatchAdd("ECap1Regs"); - GEL_WatchAdd("ECap2Regs"); - GEL_WatchAdd("ECap3Regs"); - GEL_WatchAdd("ECap4Regs"); - GEL_WatchAdd("ECap5Regs"); - GEL_WatchAdd("ECap6Regs"); - GEL_WatchAdd("EQep1Regs"); - GEL_WatchAdd("EQep2Regs"); - GEL_WatchAdd("FlashRegs"); - GEL_WatchAdd("XIntruptRegs"); - GEL_WatchAdd("FlashRegs"); - GEL_WatchAdd("GpioCtrlRegs"); - GEL_WatchAdd("GpioDataRegs"); - GEL_WatchAdd("GpioIntRegs"); - GEL_WatchAdd("I2caRegs"); - GEL_WatchAdd("McbspaRegs"); - GEL_WatchAdd("McbspbRegs"); - GEL_WatchAdd("PartIdRegs"); - GEL_WatchAdd("PieCtrlRegs"); - GEL_WatchAdd("PieVectTable"); - GEL_WatchAdd("SciaRegs"); - GEL_WatchAdd("ScibRegs"); - GEL_WatchAdd("ScicRegs"); - GEL_WatchAdd("SpiaRegs"); - GEL_WatchAdd("SysCtrlRegs"); - GEL_WatchAdd("XintfRegs"); -} -hotmenu _______________________() {} -hotmenu ADC_Regs() -{ - GEL_WatchAdd("AdcRegs"); - GEL_WatchAdd("AdcMirror"); -} -hotmenu Code_Security_Module_Regs() -{ - GEL_WatchAdd("CsmRegs"); - GEL_WatchAdd("CsmPwl"); -} -hotmenu CPU_Timer0_Regs() -{ - GEL_WatchAdd("CpuTimer0Regs"); -} -hotmenu CPU_Timer1_Regs() -{ - GEL_WatchAdd("CpuTimer1Regs"); -} -hotmenu CPU_Timer2_Regs() -{ - GEL_WatchAdd("CpuTimer2Regs"); -} -hotmenu Device_Emulation_Regs() -{ - GEL_WatchAdd("DevEmuRegs"); -} -hotmenu DMA_Regs() -{ - GEL_WatchAdd("DMARegs"); -} -hotmenu eCANA_Regs() -{ - GEL_WatchAdd("ECanaRegs"); - GEL_WatchAdd("ECanaMboxes"); - GEL_WatchAdd("ECanaLAMRegs"); - GEL_WatchAdd("ECanaMOTSRegs"); -} -hotmenu eCANB_Regs() -{ - GEL_WatchAdd("ECanbRegs"); - GEL_WatchAdd("ECanbMboxes"); - GEL_WatchAdd("ECanbLAMRegs"); - GEL_WatchAdd("ECanbMOTSRegs"); -} -hotmenu EPWM1_Regs() -{ - GEL_WatchAdd("EPwm1Regs"); -} -hotmenu EPWM2_Regs() -{ - GEL_WatchAdd("EPwm2Regs"); -} -hotmenu EPWM3_Regs() -{ - GEL_WatchAdd("EPwm3Regs"); -} -hotmenu EPWM4_Regs() -{ - GEL_WatchAdd("EPwm4Regs"); -} -hotmenu EPWM5_Regs() -{ - GEL_WatchAdd("EPwm5Regs"); -} -hotmenu EPWM6_Regs() -{ - GEL_WatchAdd("EPwm6Regs"); -} -hotmenu ECAP1_Regs() -{ - GEL_WatchAdd("ECap1Regs"); -} -hotmenu ECAP2_Regs() -{ - GEL_WatchAdd("ECap2Regs"); -} -hotmenu ECAP3_Regs() -{ - GEL_WatchAdd("ECap3Regs"); -} -hotmenu ECAP4_Regs() -{ - GEL_WatchAdd("ECap4Regs"); -} -hotmenu ECAP5_Regs() -{ - GEL_WatchAdd("ECap5Regs"); -} -hotmenu ECAP6_Regs() -{ - GEL_WatchAdd("ECap6Regs"); -} -hotmenu EQEP1_Regs() -{ - GEL_WatchAdd("EQep1Regs"); -} -hotmenu EQEP2_Regs() -{ - GEL_WatchAdd("EQep2Regs"); -} -hotmenu External_Interface_Regs() -{ - GEL_WatchAdd("XintfRegs"); -} -hotmenu External_Interrupt_Regs() -{ - GEL_WatchAdd("XIntruptRegs"); -} -hotmenu Flash_and_OTP_Regs() -{ - GEL_WatchAdd("FlashRegs"); -} -hotmenu GPIO_CTRL_Regs() -{ - GEL_WatchAdd("GpioCtrlRegs"); -} -hotmenu GPIO_DATA_Regs() -{ - GEL_WatchAdd("GpioDataRegs"); -} -hotmenu GPIO_INT_Regs() -{ - GEL_WatchAdd("GpioIntRegs"); -} -hotmenu I2CA_Regs() -{ - GEL_WatchAdd("I2caRegs"); -} -hotmenu McBSPA_Regs() -{ - GEL_WatchAdd("McbspaRegs"); -} -hotmenu McBSPB_Regs() -{ - GEL_WatchAdd("McbspbRegs"); -} -hotmenu PartId_Regs() -{ - GEL_WatchAdd("PartIdRegs"); -} -hotmenu PIE_Control_Regs() -{ - GEL_WatchAdd("PieCtrlRegs"); -} -hotmenu SCIA_Regs() -{ - GEL_WatchAdd("SciaRegs"); -} -hotmenu SCIB_Regs() -{ - GEL_WatchAdd("ScibRegs"); -} -hotmenu SPIA_Regs() -{ - GEL_WatchAdd("SpiaRegs"); -} -hotmenu System_and_Control_Regs() -{ - GEL_WatchAdd("SysCtrlRegs"); -} - - - -/* -//=========================================================================== -// End of file. -//=========================================================================== -*/ - - - - diff --git a/Source/External/v120/DSP2833x_headers/include/DSP2833x_Device.h b/Source/External/v120/DSP2833x_headers/include/DSP2833x_Device.h index a548a73..0cf9a3b 100644 --- a/Source/External/v120/DSP2833x_headers/include/DSP2833x_Device.h +++ b/Source/External/v120/DSP2833x_headers/include/DSP2833x_Device.h @@ -238,11 +238,11 @@ typedef union } LONGE; -#define CLKMULT 2L // 1 to 5 - #define XCLKIN 30000000 // external oscillator frequency extern long SYSCLKOUT, LSPCLK, HSPCLK; +#define CLKMULT 2L // 1 to 5 + #define LOWORD(l)((short int)( (long int)(l) &0xFFFF)) #define HIWORD(l)((short int)(((long int)(l)>>16)&0xFFFF)) diff --git a/Source/Internal/Include/peripher.h b/Source/Internal/Include/peripher.h index 630fafd..ed505a1 100644 --- a/Source/Internal/Include/peripher.h +++ b/Source/Internal/Include/peripher.h @@ -3,6 +3,7 @@ extern int Mode,Desk,CanDevAdr,TermoAD,TermoRS,TermoSW; void setup_leds_line(void); +void unsetup_leds_line(void); #define led1_toggle() GpioDataRegs.GPBTOGGLE.bit.GPIO32=1 #define led2_toggle() GpioDataRegs.GPBTOGGLE.bit.GPIO48=1 @@ -56,6 +57,33 @@ static inline void clear_LED_OUT_2(void) else GpioDataRegs.GPBSET.bit.GPIO63=1; } static inline void toggle_LED_OUT_2(void) { GpioDataRegs.GPBTOGGLE.bit.GPIO63=1;} +// RES OUT 1 ----------------------------------------------------- +static inline void dat_RES_OUT_1(int x) +{ + if(Desk==dsk_BKSD) GpioDataRegs.GPBDAT.bit.GPIO62=!x; else + GpioDataRegs.GPBDAT.bit.GPIO58=!x; } +static inline void set_RES_OUT_1(void) +{ + if(Desk==dsk_BKSD) GpioDataRegs.GPBCLEAR.bit.GPIO62=1; else + GpioDataRegs.GPBCLEAR.bit.GPIO58=1; } +static inline void clear_RES_OUT_1(void) +{ + if(Desk==dsk_BKSD) GpioDataRegs.GPBSET.bit.GPIO62=1; else + GpioDataRegs.GPBSET.bit.GPIO58=1; } +static inline void toggle_RES_OUT_1(void) +{ + if(Desk==dsk_BKSD) GpioDataRegs.GPBTOGGLE.bit.GPIO62=1;else + GpioDataRegs.GPBTOGGLE.bit.GPIO58=1;} + +// RES OUT 2 ----------------------------------------------------- +static inline void dat_RES_OUT_2(int x) +{ GpioDataRegs.GPBDAT.bit.GPIO61=x; } +static inline void set_RES_OUT_2(void) +{ GpioDataRegs.GPBCLEAR.bit.GPIO61=1; } +static inline void clear_RES_OUT_2(void) +{ GpioDataRegs.GPBSET.bit.GPIO61=1; } +static inline void toggle_RES_OUT_2(void) +{ GpioDataRegs.GPBTOGGLE.bit.GPIO61=1;} extern int ExtraCanal[]; void select_tpl_canal(int n_tpl); diff --git a/Source/Internal/main.c b/Source/Internal/main.c index 7af3f10..80e2f5f 100644 --- a/Source/Internal/main.c +++ b/Source/Internal/main.c @@ -78,6 +78,13 @@ void main() init_zone7(); + get_Mode(); + InitCan(0,CanDevAdr); + create_uart_vars(sizeof(CMD_TO_TMS)); + setup_uart(COM_1,115200); + setup_uart(COM_2,115200); + InitSeeprom(); + setup_leds_line(); led1_on(); led2_off(); @@ -89,17 +96,12 @@ void main() } led1_off(); led2_off(); + unsetup_leds_line(); - get_Mode(); - - set_cntrl_addr(Mode,16); - create_uart_vars(sizeof(CMD_TO_TMS)); - setup_uart(COM_1,115200); - setup_uart(COM_2,115200); - InitSeeprom(); - InitCan(0,CanDevAdr); - timer_Init(); clear_mem(); + set_cntrl_addr(Mode,16); + timer_Init(); + EnableInterrupts(); if(Desk!=dsk_PULT) { @@ -107,7 +109,6 @@ void main() } Init_sensors(); - EnableInterrupts(); Load_params(); diff --git a/Source/Internal/peripher.c b/Source/Internal/peripher.c index ff01923..f0ce07a 100644 --- a/Source/Internal/peripher.c +++ b/Source/Internal/peripher.c @@ -11,9 +11,15 @@ int Mode,Desk,CanDevAdr,TermoAD=0,TermoRS=0,TermoSW=0; int ExtraCanal[24]; +int MUX_GPIO32,MUX_GPIO48,DIR_GPIO32,DIR_GPIO48; void setup_leds_line() { + MUX_GPIO32 = GpioCtrlRegs.GPBMUX1.bit.GPIO32; + MUX_GPIO48 = GpioCtrlRegs.GPBMUX2.bit.GPIO48; + DIR_GPIO32 = GpioCtrlRegs.GPBDIR.bit.GPIO32; + DIR_GPIO48 = GpioCtrlRegs.GPBDIR.bit.GPIO48; + EALLOW; GpioCtrlRegs.GPBMUX1.bit.GPIO32 = 0; GpioCtrlRegs.GPBMUX2.bit.GPIO48 = 0; @@ -22,13 +28,23 @@ void setup_leds_line() EDIS; } +void unsetup_leds_line() +{ + EALLOW; + GpioCtrlRegs.GPBMUX1.bit.GPIO32 = MUX_GPIO32; + GpioCtrlRegs.GPBMUX2.bit.GPIO48 = MUX_GPIO48; + GpioCtrlRegs.GPBDIR.bit.GPIO32 = DIR_GPIO32; + GpioCtrlRegs.GPBDIR.bit.GPIO48 = DIR_GPIO48; + EDIS; +} + void get_Mode() { EALLOW; GpioCtrlRegs.GPAMUX1.all &= 0xFF000000; // 00—11 GpioCtrlRegs.GPAMUX2.all &= 0xFF00003F; // 19—27 - GpioCtrlRegs.GPBMUX1.all &= 0xFFFFFCC0; // 32—34 + GpioCtrlRegs.GPBMUX1.all &= 0xFFFFFFC0; // 32—34 GpioCtrlRegs.GPBMUX2.all &= 0x000FF000; // 48—53, 58—63 GpioCtrlRegs.GPADIR.bit.GPIO20 = 0; @@ -53,6 +69,11 @@ void get_Mode() if (Desk==dsk_COMM) { TermoSW = 2; TermoAD = 1;} if (Desk==dsk_BKSD) { TermoSW = 1; TermoRS = 1;} + clear_LED_OUT_1(); + clear_LED_OUT_2(); + clear_RES_OUT_1(); + clear_RES_OUT_2(); + EALLOW; switch(Desk) { diff --git a/UKSSTMS320F28335.map b/UKSSTMS320F28335.map new file mode 100644 index 0000000..85f62bd --- /dev/null +++ b/UKSSTMS320F28335.map @@ -0,0 +1,1408 @@ +****************************************************************************** + TMS320C2000 Linker PC v22.6.1 +****************************************************************************** +>> Linked Mon Sep 7 14:50:34 2026 + +OUTPUT FILE NAME: +ENTRY POINT SYMBOL: "_c_int00" address: 0000abd0 + + +MEMORY CONFIGURATION + + name origin length used unused attr fill +---------------------- -------- --------- -------- -------- ---- -------- +PAGE 0: + ZONE0 00004000 00001000 00000000 00001000 RWIX + RAML0 00008000 00004000 00002f79 00001087 RWIX + RAML4 0000c000 00001000 00000139 00000ec7 RWIX + ZONE6 00100000 00100000 00000000 00100000 RWIX + FLASHH 00300000 00008000 00000000 00008000 RWIX + FLASHG 00308000 00008000 00000000 00008000 RWIX + FLASHF 00310000 00008000 00000000 00008000 RWIX + FLASHE 00318000 00008000 00000000 00008000 RWIX + FLASHD 00320000 00008000 00000000 00008000 RWIX + FLASHC 00328000 00008000 00000000 00008000 RWIX + FLASHA 00338000 00007f80 00000000 00007f80 RWIX + CSM_RSVD 0033ff80 00000076 00000000 00000076 RWIX + BEGIN 0033fff6 00000002 00000000 00000002 RWIX + CSM_PWL 0033fff8 00000008 00000000 00000008 RWIX + ADC_CAL 00380080 00000009 00000007 00000002 RWIX + OTP 00380400 00000400 00000000 00000400 RWIX + IQTABLES 003fe000 00000b50 00000000 00000b50 RWIX + IQTABLES2 003feb50 0000008c 00000000 0000008c RWIX + FPUTABLES 003febdc 000006a0 00000000 000006a0 RWIX + ROM 003ff27c 00000d44 00000000 00000d44 RWIX + RESET 003fffc0 00000002 00000000 00000002 RWIX + VECTORS 003fffc2 0000003e 00000000 0000003e RWIX + +PAGE 1: + BOOT_RSVD 00000000 00000050 00000000 00000050 RWIX + RAMM0 00000050 000003b0 00000000 000003b0 RWIX + RAMM1 00000400 00000400 000003f0 00000010 RWIX + DEV_EMU 00000880 00000180 000000d0 000000b0 RWIX + FLASH_REGS 00000a80 00000060 00000008 00000058 RWIX + CSM 00000ae0 00000010 00000010 00000000 RWIX + ADC_MIRROR 00000b00 00000010 00000010 00000000 RWIX + XINTF 00000b20 00000020 0000001e 00000002 RWIX + CPU_TIMER0 00000c00 00000008 00000008 00000000 RWIX + CPU_TIMER1 00000c08 00000008 00000008 00000000 RWIX + CPU_TIMER2 00000c10 00000008 00000008 00000000 RWIX + PIE_CTRL 00000ce0 00000020 0000001a 00000006 RWIX + PIE_VECT 00000d00 00000100 00000100 00000000 RWIX + DMA 00001000 00000200 000000e0 00000120 RWIX + MCBSPA 00005000 00000040 00000025 0000001b RWIX + MCBSPB 00005040 00000040 00000025 0000001b RWIX + ECANA 00006000 00000040 00000034 0000000c RWIX + ECANA_LAM 00006040 00000040 00000040 00000000 RWIX + ECANA_MOTS 00006080 00000040 00000040 00000000 RWIX + ECANA_MOTO 000060c0 00000040 00000040 00000000 RWIX + ECANA_MBOX 00006100 00000100 00000100 00000000 RWIX + ECANB 00006200 00000040 00000034 0000000c RWIX + ECANB_LAM 00006240 00000040 00000040 00000000 RWIX + ECANB_MOTS 00006280 00000040 00000040 00000000 RWIX + ECANB_MOTO 000062c0 00000040 00000040 00000000 RWIX + ECANB_MBOX 00006300 00000100 00000100 00000000 RWIX + EPWM1 00006800 00000022 00000022 00000000 RWIX + EPWM2 00006840 00000022 00000022 00000000 RWIX + EPWM3 00006880 00000022 00000022 00000000 RWIX + EPWM4 000068c0 00000022 00000022 00000000 RWIX + EPWM5 00006900 00000022 00000022 00000000 RWIX + EPWM6 00006940 00000022 00000022 00000000 RWIX + ECAP1 00006a00 00000020 00000020 00000000 RWIX + ECAP2 00006a20 00000020 00000020 00000000 RWIX + ECAP3 00006a40 00000020 00000020 00000000 RWIX + ECAP4 00006a60 00000020 00000020 00000000 RWIX + ECAP5 00006a80 00000020 00000020 00000000 RWIX + ECAP6 00006aa0 00000020 00000020 00000000 RWIX + EQEP1 00006b00 00000040 00000040 00000000 RWIX + EQEP2 00006b40 00000040 00000040 00000000 RWIX + GPIOCTRL 00006f80 00000040 0000002e 00000012 RWIX + GPIODAT 00006fc0 00000020 00000020 00000000 RWIX + GPIOINT 00006fe0 00000020 0000000a 00000016 RWIX + SYSTEM 00007010 00000020 00000020 00000000 RWIX + SPIA 00007040 00000010 00000010 00000000 RWIX + SCIA 00007050 00000010 00000010 00000000 RWIX + XINTRUPT 00007070 00000010 00000010 00000000 RWIX + ADC 00007100 00000020 0000001e 00000002 RWIX + SCIB 00007750 00000010 00000010 00000000 RWIX + SCIC 00007770 00000010 00000010 00000000 RWIX + I2CA 00007900 00000040 00000022 0000001e RWIX + RAML5 0000d000 00003000 00000dd5 0000222b RWIX + ZONE7A 00200000 0000fc00 0000fa00 00000200 RWIX + ZONE7B 0020fc00 00000400 00000000 00000400 RWIX + FLASHB 00330000 00008000 00000000 00008000 RWIX + CSM_PWL 0033fff8 00000008 00000008 00000000 RWIX + PARTID 00380090 00000001 00000001 00000000 RWIX + + +SECTION ALLOCATION MAP + + output attributes/ +section page origin length input sections +-------- ---- ---------- ---------- ---------------- +.cinit 0 0000ad82 000001f7 + 0000ad82 00000103 crc16.obj (.cinit:_crc_16_tab) + 0000ae85 0000002e measure.obj (.cinit) + 0000aeb3 0000001f spise2p.obj (.cinit) + 0000aed2 0000001c ecan.obj (.cinit) + 0000aeee 00000013 kanal.obj (.cinit:_digits) + 0000af01 00000010 log_to_mem.obj (.cinit) + 0000af11 0000000c peripher.obj (.cinit) + 0000af1d 0000000a pulto.obj (.cinit) + 0000af27 0000000a rts2800_fpu32.lib : _lock.obj (.cinit) + 0000af31 0000000a : exit.obj (.cinit) + 0000af3b 00000008 ADC.obj (.cinit) + 0000af43 00000008 kanal.obj (.cinit:_readr) + 0000af4b 00000008 cntrl_adr.obj (.cinit) + 0000af53 00000005 main.obj (.cinit:_cancell$3) + 0000af58 00000005 main.obj (.cinit:_cancount$2) + 0000af5d 00000005 main.obj (.cinit:_candid$4) + 0000af62 00000005 ADC.obj (.cinit:_cwnt_ok$4) + 0000af67 00000004 RS485.obj (.cinit) + 0000af6b 00000004 RS485.obj (.cinit:_RS_Len) + 0000af6f 00000004 bios.obj (.cinit) + 0000af73 00000004 main.obj (.cinit) + 0000af77 00000002 --HOLE-- [fill = 0] + +.pinit 0 00008000 00000000 UNINITIALIZED + +.text 0 00008000 00002d82 + 00008000 00000711 DSP2833x_SWPrioritizedDefaultIsr.obj (.text:retain) + 00008711 000004f5 main.obj (.text) + 00008c06 000003c3 measure.obj (.text) + 00008fc9 000003b2 RS485.obj (.text) + 0000937b 00000326 bios.obj (.text) + 000096a1 000002dd message.obj (.text) + 0000997e 00000257 spise2p.obj (.text) + 00009bd5 000001d2 peripher.obj (.text) + 00009da7 000001b8 ecan.obj (.text) + 00009f5f 000001a6 ADC.obj (.text:retain) + 0000a105 00000191 kanal.obj (.text) + 0000a296 00000180 measure.obj (.text:retain) + 0000a416 0000017b pulto.obj (.text:retain) + 0000a591 0000014a DSP2833x_SysCtrl.obj (.text) + 0000a6db 00000110 RS485.obj (.text:retain) + 0000a7eb 000000ea DSP2833x_Xintf.obj (.text) + 0000a8d5 000000cf ADC.obj (.text) + 0000a9a4 0000008e ecan.obj (.text:retain) + 0000aa32 00000088 rts2800_fpu32.lib : fs_div.obj (.text) + 0000aaba 00000068 crc16.obj (.text) + 0000ab22 00000066 DSP2833x_CpuTimers.obj (.text) + 0000ab88 00000048 tools.obj (.text) + 0000abd0 00000046 rts2800_fpu32.lib : boot.obj (.text) + 0000ac16 0000003b filter_bat2.obj (.text) + 0000ac51 00000039 spise2p.obj (.text:retain) + 0000ac8a 0000002a rts2800_fpu32.lib : l_div.obj (.text) + 0000acb4 00000028 DSP2833x_PieCtrl.obj (.text) + 0000acdc 00000022 rts2800_fpu32.lib : i_div.obj (.text) + 0000acfe 0000001b : args_main.obj (.text) + 0000ad19 00000019 DSP2833x_Adc.obj (.text) + 0000ad32 00000019 rts2800_fpu32.lib : exit.obj (.text) + 0000ad4b 00000015 log_to_mem.obj (.text) + 0000ad60 00000010 DSP2833x_SWPrioritizedPieVect.obj (.text) + 0000ad70 00000009 rts2800_fpu32.lib : _lock.obj (.text) + 0000ad79 00000005 cntrl_adr.obj (.text) + 0000ad7e 00000004 DSP2833x_usDelay.obj (.text) + +ramfuncs 0 0000c000 00000000 UNINITIALIZED + +.econst 0 0000c000 00000111 + 0000c000 00000100 DSP2833x_SWPrioritizedPieVect.obj (.econst:_PieVectTableInit) + 0000c100 0000000e message.obj (.econst:_$P$T0$1) + 0000c10e 00000003 cntrl_adr.obj (.econst) + +.switch 0 0000c112 00000028 + 0000c112 00000028 spise2p.obj (.switch:_SPISE2P_DRV_tick) + +.stack 1 00000400 000003f0 UNINITIALIZED + 00000400 000003f0 --HOLE-- + +.ebss 1 0000d000 00000dd5 UNINITIALIZED + 0000d000 00000704 RS485.obj (.ebss) + 0000d704 00000028 ADC.obj (.ebss:_ADC_table) + 0000d72c 00000014 ADC.obj (.ebss:_prev_ok) + 0000d740 00000168 measure.obj (.ebss:_adc_filter) + 0000d8a8 00000018 DSP2833x_CpuTimers.obj (.ebss) + 0000d8c0 00000100 crc16.obj (.ebss:_crc_16_tab) + 0000d9c0 00000081 message.obj (.ebss:_archiv) + 0000da41 00000001 bios.obj (.ebss) + 0000da42 00000028 measure.obj (.ebss:_out_filter) + 0000da6a 00000010 measure.obj (.ebss:_GOOD) + 0000da7a 00000006 DSP2833x_SysCtrl.obj (.ebss) + 0000da80 00000081 message.obj (.ebss:_county) + 0000db01 00000001 --HOLE-- + 0000db02 00000024 measure.obj (.ebss) + 0000db26 00000018 measure.obj (.ebss:_sens_pair) + 0000db3e 00000002 main.obj (.ebss:_cancell$3) + 0000db40 00000081 message.obj (.ebss:_espero) + 0000dbc1 00000001 --HOLE-- + 0000dbc2 0000001c spise2p.obj (.ebss) + 0000dbde 00000018 measure.obj (.ebss:_sens_type) + 0000dbf6 0000000a peripher.obj (.ebss) + 0000dc00 00000081 message.obj (.ebss:_modbus) + 0000dc81 00000010 message.obj (.ebss:_Maska) + 0000dc91 00000010 measure.obj (.ebss:_ZERO) + 0000dca1 00000010 kanal.obj (.ebss:_digits) + 0000dcb1 00000001 --HOLE-- + 0000dcb2 0000000e ADC.obj (.ebss) + 0000dcc0 00000081 message.obj (.ebss:_param) + 0000dd41 00000001 --HOLE-- + 0000dd42 0000000e ecan.obj (.ebss) + 0000dd50 0000000c log_to_mem.obj (.ebss) + 0000dd5c 0000000c pulto.obj (.ebss) + 0000dd68 00000008 main.obj (.ebss:_masca$5) + 0000dd70 00000005 kanal.obj (.ebss:_readr) + 0000dd75 00000001 --HOLE-- + 0000dd76 00000004 measure.obj (.ebss:_Kt) + 0000dd7a 00000004 cntrl_adr.obj (.ebss) + 0000dd7e 00000002 main.obj (.ebss:_cancount$2) + 0000dd80 00000046 RS485.obj (.ebss:_RS_Len) + 0000ddc6 00000004 rts2800_fpu32.lib : _lock.obj (.ebss) + 0000ddca 00000004 : exit.obj (.ebss) + 0000ddce 00000003 main.obj (.ebss) + 0000ddd1 00000002 main.obj (.ebss:_candid$4) + 0000ddd3 00000002 ADC.obj (.ebss:_cwnt_ok$4) + +.logg 1 00200000 0000fa00 UNINITIALIZED + 00200000 0000fa00 log_to_mem.obj (.logg) + +.reset 0 003fffc0 00000002 DSECT + 003fffc0 00000002 rts2800_fpu32.lib : boot.obj (.reset) + +vectors 0 003fffc2 00000000 DSECT + +.adc_cal 0 00380080 00000007 NOLOAD SECTION + 00380080 00000007 DSP2833x_ADC_cal.obj (.adc_cal) + +DevEmuRegsFile +* 1 00000880 000000d0 UNINITIALIZED + 00000880 000000d0 DSP2833x_GlobalVariableDefs.obj (DevEmuRegsFile) + +FlashRegsFile +* 1 00000a80 00000008 UNINITIALIZED + 00000a80 00000008 DSP2833x_GlobalVariableDefs.obj (FlashRegsFile) + +CsmRegsFile +* 1 00000ae0 00000010 UNINITIALIZED + 00000ae0 00000010 DSP2833x_GlobalVariableDefs.obj (CsmRegsFile) + +AdcMirrorFile +* 1 00000b00 00000010 UNINITIALIZED + 00000b00 00000010 DSP2833x_GlobalVariableDefs.obj (AdcMirrorFile) + +XintfRegsFile +* 1 00000b20 0000001e UNINITIALIZED + 00000b20 0000001e DSP2833x_GlobalVariableDefs.obj (XintfRegsFile) + +CpuTimer0RegsFile +* 1 00000c00 00000008 UNINITIALIZED + 00000c00 00000008 DSP2833x_GlobalVariableDefs.obj (CpuTimer0RegsFile) + +CpuTimer1RegsFile +* 1 00000c08 00000008 UNINITIALIZED + 00000c08 00000008 DSP2833x_GlobalVariableDefs.obj (CpuTimer1RegsFile) + +CpuTimer2RegsFile +* 1 00000c10 00000008 UNINITIALIZED + 00000c10 00000008 DSP2833x_GlobalVariableDefs.obj (CpuTimer2RegsFile) + +PieCtrlRegsFile +* 1 00000ce0 0000001a UNINITIALIZED + 00000ce0 0000001a DSP2833x_GlobalVariableDefs.obj (PieCtrlRegsFile) + +PieVectTableFile +* 1 00000d00 00000100 UNINITIALIZED + 00000d00 00000100 DSP2833x_GlobalVariableDefs.obj (PieVectTableFile) + +DmaRegsFile +* 1 00001000 000000e0 UNINITIALIZED + 00001000 000000e0 DSP2833x_GlobalVariableDefs.obj (DmaRegsFile) + +McbspaRegsFile +* 1 00005000 00000025 UNINITIALIZED + 00005000 00000025 DSP2833x_GlobalVariableDefs.obj (McbspaRegsFile) + +McbspbRegsFile +* 1 00005040 00000025 UNINITIALIZED + 00005040 00000025 DSP2833x_GlobalVariableDefs.obj (McbspbRegsFile) + +ECanaRegsFile +* 1 00006000 00000034 UNINITIALIZED + 00006000 00000034 DSP2833x_GlobalVariableDefs.obj (ECanaRegsFile) + +ECanaLAMRegsFile +* 1 00006040 00000040 UNINITIALIZED + 00006040 00000040 DSP2833x_GlobalVariableDefs.obj (ECanaLAMRegsFile) + +ECanaMOTSRegsFile +* 1 00006080 00000040 UNINITIALIZED + 00006080 00000040 DSP2833x_GlobalVariableDefs.obj (ECanaMOTSRegsFile) + +ECanaMOTORegsFile +* 1 000060c0 00000040 UNINITIALIZED + 000060c0 00000040 DSP2833x_GlobalVariableDefs.obj (ECanaMOTORegsFile) + +ECanaMboxesFile +* 1 00006100 00000100 UNINITIALIZED + 00006100 00000100 DSP2833x_GlobalVariableDefs.obj (ECanaMboxesFile) + +ECanbRegsFile +* 1 00006200 00000034 UNINITIALIZED + 00006200 00000034 DSP2833x_GlobalVariableDefs.obj (ECanbRegsFile) + +ECanbLAMRegsFile +* 1 00006240 00000040 UNINITIALIZED + 00006240 00000040 DSP2833x_GlobalVariableDefs.obj (ECanbLAMRegsFile) + +ECanbMOTSRegsFile +* 1 00006280 00000040 UNINITIALIZED + 00006280 00000040 DSP2833x_GlobalVariableDefs.obj (ECanbMOTSRegsFile) + +ECanbMOTORegsFile +* 1 000062c0 00000040 UNINITIALIZED + 000062c0 00000040 DSP2833x_GlobalVariableDefs.obj (ECanbMOTORegsFile) + +ECanbMboxesFile +* 1 00006300 00000100 UNINITIALIZED + 00006300 00000100 DSP2833x_GlobalVariableDefs.obj (ECanbMboxesFile) + +EPwm1RegsFile +* 1 00006800 00000022 UNINITIALIZED + 00006800 00000022 DSP2833x_GlobalVariableDefs.obj (EPwm1RegsFile) + +EPwm2RegsFile +* 1 00006840 00000022 UNINITIALIZED + 00006840 00000022 DSP2833x_GlobalVariableDefs.obj (EPwm2RegsFile) + +EPwm3RegsFile +* 1 00006880 00000022 UNINITIALIZED + 00006880 00000022 DSP2833x_GlobalVariableDefs.obj (EPwm3RegsFile) + +EPwm4RegsFile +* 1 000068c0 00000022 UNINITIALIZED + 000068c0 00000022 DSP2833x_GlobalVariableDefs.obj (EPwm4RegsFile) + +EPwm5RegsFile +* 1 00006900 00000022 UNINITIALIZED + 00006900 00000022 DSP2833x_GlobalVariableDefs.obj (EPwm5RegsFile) + +EPwm6RegsFile +* 1 00006940 00000022 UNINITIALIZED + 00006940 00000022 DSP2833x_GlobalVariableDefs.obj (EPwm6RegsFile) + +ECap1RegsFile +* 1 00006a00 00000020 UNINITIALIZED + 00006a00 00000020 DSP2833x_GlobalVariableDefs.obj (ECap1RegsFile) + +ECap2RegsFile +* 1 00006a20 00000020 UNINITIALIZED + 00006a20 00000020 DSP2833x_GlobalVariableDefs.obj (ECap2RegsFile) + +ECap3RegsFile +* 1 00006a40 00000020 UNINITIALIZED + 00006a40 00000020 DSP2833x_GlobalVariableDefs.obj (ECap3RegsFile) + +ECap4RegsFile +* 1 00006a60 00000020 UNINITIALIZED + 00006a60 00000020 DSP2833x_GlobalVariableDefs.obj (ECap4RegsFile) + +ECap5RegsFile +* 1 00006a80 00000020 UNINITIALIZED + 00006a80 00000020 DSP2833x_GlobalVariableDefs.obj (ECap5RegsFile) + +ECap6RegsFile +* 1 00006aa0 00000020 UNINITIALIZED + 00006aa0 00000020 DSP2833x_GlobalVariableDefs.obj (ECap6RegsFile) + +EQep1RegsFile +* 1 00006b00 00000040 UNINITIALIZED + 00006b00 00000040 DSP2833x_GlobalVariableDefs.obj (EQep1RegsFile) + +EQep2RegsFile +* 1 00006b40 00000040 UNINITIALIZED + 00006b40 00000040 DSP2833x_GlobalVariableDefs.obj (EQep2RegsFile) + +GpioCtrlRegsFile +* 1 00006f80 0000002e UNINITIALIZED + 00006f80 0000002e DSP2833x_GlobalVariableDefs.obj (GpioCtrlRegsFile) + +GpioDataRegsFile +* 1 00006fc0 00000020 UNINITIALIZED + 00006fc0 00000020 DSP2833x_GlobalVariableDefs.obj (GpioDataRegsFile) + +GpioIntRegsFile +* 1 00006fe0 0000000a UNINITIALIZED + 00006fe0 0000000a DSP2833x_GlobalVariableDefs.obj (GpioIntRegsFile) + +SysCtrlRegsFile +* 1 00007010 00000020 UNINITIALIZED + 00007010 00000020 DSP2833x_GlobalVariableDefs.obj (SysCtrlRegsFile) + +SpiaRegsFile +* 1 00007040 00000010 UNINITIALIZED + 00007040 00000010 DSP2833x_GlobalVariableDefs.obj (SpiaRegsFile) + +SciaRegsFile +* 1 00007050 00000010 UNINITIALIZED + 00007050 00000010 DSP2833x_GlobalVariableDefs.obj (SciaRegsFile) + +XIntruptRegsFile +* 1 00007070 00000010 UNINITIALIZED + 00007070 00000010 DSP2833x_GlobalVariableDefs.obj (XIntruptRegsFile) + +AdcRegsFile +* 1 00007100 0000001e UNINITIALIZED + 00007100 0000001e DSP2833x_GlobalVariableDefs.obj (AdcRegsFile) + +ScibRegsFile +* 1 00007750 00000010 UNINITIALIZED + 00007750 00000010 DSP2833x_GlobalVariableDefs.obj (ScibRegsFile) + +ScicRegsFile +* 1 00007770 00000010 UNINITIALIZED + 00007770 00000010 DSP2833x_GlobalVariableDefs.obj (ScicRegsFile) + +I2caRegsFile +* 1 00007900 00000022 UNINITIALIZED + 00007900 00000022 DSP2833x_GlobalVariableDefs.obj (I2caRegsFile) + +CsmPwlFile +* 1 0033fff8 00000008 UNINITIALIZED + 0033fff8 00000008 DSP2833x_GlobalVariableDefs.obj (CsmPwlFile) + +PartIdRegsFile +* 1 00380090 00000001 UNINITIALIZED + 00380090 00000001 DSP2833x_GlobalVariableDefs.obj (PartIdRegsFile) + +MODULE SUMMARY + + Module code initialized data uninitialized data + ------ ---- ---------------- ------------------ + D:\project2833\GIT\UKSS_23550_2\Debug\Source\External\v120\DSP2833x_common\source\ + DSP2833x_SWPrioritizedDefaultIsr.obj 1809 0 0 + DSP2833x_SysCtrl.obj 330 0 6 + DSP2833x_SWPrioritizedPieVect.obj 16 256 0 + DSP2833x_Xintf.obj 234 0 0 + DSP2833x_CpuTimers.obj 102 0 24 + DSP2833x_PieCtrl.obj 40 0 0 + DSP2833x_Adc.obj 25 0 0 + DSP2833x_ADC_cal.obj 7 0 0 + DSP2833x_usDelay.obj 4 0 0 + +--+--------------------------------------+-------+------------------+--------------------+ + Total: 2567 256 30 + + D:\project2833\GIT\UKSS_23550_2\Debug\Source\External\v120\DSP2833x_headers\source\ + DSP2833x_GlobalVariableDefs.obj 0 0 2679 + +--+--------------------------------------+-------+------------------+--------------------+ + Total: 0 0 2679 + + D:\project2833\GIT\UKSS_23550_2\Debug\Source\Internal\ + log_to_mem.obj 21 16 64012 + RS485.obj 1218 8 1866 + measure.obj 1347 46 520 + message.obj 733 14 661 + main.obj 1269 19 17 + bios.obj 806 4 1 + spise2p.obj 656 71 28 + ADC.obj 629 13 76 + ecan.obj 582 28 14 + crc16.obj 104 259 256 + peripher.obj 466 12 10 + kanal.obj 401 27 21 + pulto.obj 379 10 12 + tools.obj 72 0 0 + filter_bat2.obj 59 0 0 + cntrl_adr.obj 5 11 4 + +--+--------------------------------------+-------+------------------+--------------------+ + Total: 8747 538 67498 + + D:/project2833/GIT/UKSS_23550_2/Libraries/rts2800_fpu32.lib + fs_div.obj 136 0 0 + boot.obj 70 0 0 + l_div.obj 42 0 0 + exit.obj 25 10 4 + i_div.obj 34 0 0 + args_main.obj 27 0 0 + _lock.obj 9 10 4 + +--+--------------------------------------+-------+------------------+--------------------+ + Total: 343 20 8 + + Stack: 0 0 1008 + +--+--------------------------------------+-------+------------------+--------------------+ + Grand Total: 11657 814 71223 + + +GLOBAL DATA SYMBOLS: SORTED BY DATA PAGE + +address data page name +-------- ---------------- ---- +00000400 10 (00000400) __stack + +00000880 22 (00000880) _DevEmuRegs + +00000a80 2a (00000a80) _FlashRegs + +00000ae0 2b (00000ac0) _CsmRegs + +00000b00 2c (00000b00) _AdcMirror +00000b20 2c (00000b00) _XintfRegs + +00000c00 30 (00000c00) _CpuTimer0Regs +00000c08 30 (00000c00) _CpuTimer1Regs +00000c10 30 (00000c00) _CpuTimer2Regs + +00000ce0 33 (00000cc0) _PieCtrlRegs + +00000d00 34 (00000d00) _PieVectTable + +00001000 40 (00001000) _DmaRegs + +00005000 140 (00005000) _McbspaRegs + +00005040 141 (00005040) _McbspbRegs + +00006000 180 (00006000) _ECanaRegs + +00006040 181 (00006040) _ECanaLAMRegs + +00006080 182 (00006080) _ECanaMOTSRegs + +000060c0 183 (000060c0) _ECanaMOTORegs + +00006100 184 (00006100) _ECanaMboxes + +00006200 188 (00006200) _ECanbRegs + +00006240 189 (00006240) _ECanbLAMRegs + +00006280 18a (00006280) _ECanbMOTSRegs + +000062c0 18b (000062c0) _ECanbMOTORegs + +00006300 18c (00006300) _ECanbMboxes + +00006800 1a0 (00006800) _EPwm1Regs + +00006840 1a1 (00006840) _EPwm2Regs + +00006880 1a2 (00006880) _EPwm3Regs + +000068c0 1a3 (000068c0) _EPwm4Regs + +00006900 1a4 (00006900) _EPwm5Regs + +00006940 1a5 (00006940) _EPwm6Regs + +00006a00 1a8 (00006a00) _ECap1Regs +00006a20 1a8 (00006a00) _ECap2Regs + +00006a40 1a9 (00006a40) _ECap3Regs +00006a60 1a9 (00006a40) _ECap4Regs + +00006a80 1aa (00006a80) _ECap5Regs +00006aa0 1aa (00006a80) _ECap6Regs + +00006b00 1ac (00006b00) _EQep1Regs + +00006b40 1ad (00006b40) _EQep2Regs + +00006f80 1be (00006f80) _GpioCtrlRegs + +00006fc0 1bf (00006fc0) _GpioDataRegs +00006fe0 1bf (00006fc0) _GpioIntRegs + +00007010 1c0 (00007000) _SysCtrlRegs + +00007040 1c1 (00007040) _SpiaRegs +00007050 1c1 (00007040) _SciaRegs +00007070 1c1 (00007040) _XIntruptRegs + +00007100 1c4 (00007100) _AdcRegs + +00007750 1dd (00007740) _ScibRegs +00007770 1dd (00007740) _ScicRegs + +00007900 1e4 (00007900) _I2caRegs + +0000c000 300 (0000c000) _PieVectTableInit + +0000c10e 304 (0000c100) _ADDR_ANSWER +0000c10f 304 (0000c100) _ADDR_TERMINAL +0000c110 304 (0000c100) _CNTRL_ADDR_UNIVERSAL + +0000d040 341 (0000d040) _rs_a + +0000d3c0 34f (0000d3c0) _rs_b + +0000d704 35c (0000d700) _ADC_table +0000d72c 35c (0000d700) _prev_ok + +0000d740 35d (0000d740) _adc_filter + +0000d8a8 362 (0000d880) _CpuTimer0 +0000d8b0 362 (0000d880) _CpuTimer1 +0000d8b8 362 (0000d880) _CpuTimer2 + +0000d8c0 363 (0000d8c0) _crc_16_tab + +0000d9c0 367 (0000d9c0) _archiv + +0000da41 369 (0000da40) _flag_DEBUG +0000da42 369 (0000da40) _out_filter +0000da6a 369 (0000da40) _GOOD +0000da7a 369 (0000da40) _SYSCLKOUT +0000da7c 369 (0000da40) _LSPCLK +0000da7e 369 (0000da40) _HSPCLK + +0000da80 36a (0000da80) _county + +0000db02 36c (0000db00) _TPL_CANS +0000db03 36c (0000db00) _tpl_cans +0000db04 36c (0000db00) _cal_addr +0000db05 36c (0000db00) _chk +0000db06 36c (0000db00) _sig +0000db07 36c (0000db00) _CanPowse +0000db08 36c (0000db00) _CanGO +0000db09 36c (0000db00) _okay +0000db12 36c (0000db00) _Caliber_time +0000db14 36c (0000db00) _def_FILTERBAT +0000db26 36c (0000db00) _sens_pair + +0000db40 36d (0000db40) _espero + +0000dbc2 36f (0000dbc0) _ccc +0000dbde 36f (0000dbc0) _sens_type +0000dbf6 36f (0000dbc0) _Mode +0000dbf7 36f (0000dbc0) _Desk +0000dbf8 36f (0000dbc0) _CanDevAdr +0000dbf9 36f (0000dbc0) _TermoAD +0000dbfa 36f (0000dbc0) _TermoRS +0000dbfb 36f (0000dbc0) _TermoSW +0000dbfc 36f (0000dbc0) _MUX_GPIO32 +0000dbfd 36f (0000dbc0) _MUX_GPIO48 +0000dbfe 36f (0000dbc0) _DIR_GPIO32 +0000dbff 36f (0000dbc0) _DIR_GPIO48 + +0000dc00 370 (0000dc00) _modbus + +0000dc81 372 (0000dc80) _Maska +0000dc91 372 (0000dc80) _ZERO +0000dca1 372 (0000dc80) _digits +0000dcb2 372 (0000dc80) _COUNT_ONE_CANAL +0000dcb3 372 (0000dc80) _COUNT_DISCHARGE +0000dcb4 372 (0000dc80) _COUNT_TRANSICIA +0000dcb5 372 (0000dc80) _FILTER_CLIP +0000dcba 372 (0000dc80) _MesPerSec +0000dcbc 372 (0000dc80) _WAKE +0000dcbe 372 (0000dc80) _WAKE_TIME + +0000dcc0 373 (0000dcc0) _param + +0000dd42 375 (0000dd40) _CanTimeOutErrorTR +0000dd43 375 (0000dd40) _wait +0000dd44 375 (0000dd40) _ErrorCount +0000dd46 375 (0000dd40) _MessageReceivedCount +0000dd48 375 (0000dd40) _MessageTransivedCount +0000dd4a 375 (0000dd40) _TestMbox1 +0000dd4c 375 (0000dd40) _TestMbox2 +0000dd4e 375 (0000dd40) _TestMbox3 +0000dd50 375 (0000dd40) _no_write +0000dd51 375 (0000dd40) _never_write +0000dd52 375 (0000dd40) _Read_Log +0000dd53 375 (0000dd40) _flog +0000dd54 375 (0000dd40) _Log +0000dd62 375 (0000dd40) _LoneLeft +0000dd64 375 (0000dd40) _LoneRite +0000dd70 375 (0000dd40) _readr +0000dd76 375 (0000dd40) _Kt +0000dd7a 375 (0000dd40) _ADDR_FOR_ALL +0000dd7b 375 (0000dd40) _CNTRL_ADDR +0000dd7c 375 (0000dd40) _cntr_addr_c +0000dd7d 375 (0000dd40) _cntr_addr_c_all + +0000dd80 376 (0000dd80) _RS_Len + +0000ddc6 377 (0000ddc0) __unlock +0000ddc8 377 (0000ddc0) __lock +0000ddca 377 (0000ddc0) __cleanup_ptr +0000ddcc 377 (0000ddc0) __dtors_ptr + +00200000 8000 (00200000) _logs_block + +0033fff8 cfff (0033ffc0) _CsmPwl + +00380090 e002 (00380080) _PartIdRegs + + +GLOBAL SYMBOLS: SORTED ALPHABETICALLY BY Name + +page address name +---- ------- ---- +0 00008000 .text +0 0000ad32 C$$EXIT +0 0000aa32 FS$$DIV +0 0000acdc I$$DIV +0 0000aced I$$MOD +0 0000ac8a L$$DIV +0 0000ac99 L$$MOD +0 0000aca7 UL$$DIV +0 0000acae UL$$MOD +0 000086f6 _ADCINT_ISR +0 00380080 _ADC_cal +1 0000d704 _ADC_table +0 0000c10e _ADDR_ANSWER +1 0000dd7a _ADDR_FOR_ALL +0 0000c10f _ADDR_TERMINAL +1 00000b00 _AdcMirror +1 00007100 _AdcRegs +0 00009420 _Answer +0 00009efe _CAN_send +0 0000a9d7 _CANa_handler +0 0000a9a4 _CANa_reset_err +1 0000dd7b _CNTRL_ADDR +0 0000c110 _CNTRL_ADDR_UNIVERSAL +1 0000dcb3 _COUNT_DISCHARGE +1 0000dcb2 _COUNT_ONE_CANAL +1 0000dcb4 _COUNT_TRANSICIA +1 0000db12 _Caliber_time +1 0000dbf8 _CanDevAdr +1 0000db08 _CanGO +1 0000db07 _CanPowse +1 0000dd42 _CanTimeOutErrorTR +0 0000ab63 _ConfigCpuTimer +1 0000d8a8 _CpuTimer0 +1 00000c00 _CpuTimer0Regs +1 0000d8b0 _CpuTimer1 +1 00000c08 _CpuTimer1Regs +1 0000d8b8 _CpuTimer2 +1 00000c10 _CpuTimer2Regs +1 0033fff8 _CsmPwl +1 00000ae0 _CsmRegs +0 0000a6ac _CsmUnlock +0 000086e9 _DATALOG_ISR +0 0000a111 _DCLK +0 000086ce _DINTCH1_ISR +0 000086b3 _DINTCH2_ISR +0 00008698 _DINTCH3_ISR +0 0000867d _DINTCH4_ISR +0 00008662 _DINTCH5_ISR +0 00008647 _DINTCH6_ISR +1 0000dbfe _DIR_GPIO32 +1 0000dbff _DIR_GPIO48 +0 0000a105 _DOUT +0 0000ad7e _DSP28x_usDelay +0 0000985a _Default_params +1 0000dbf7 _Desk +1 00000880 _DevEmuRegs +0 0000a5a4 _DisableDog +1 00001000 _DmaRegs +0 0000862c _ECAN0INTA_ISR +0 00008611 _ECAN0INTB_ISR +0 000085f6 _ECAN1INTA_ISR +0 000085db _ECAN1INTB_ISR +0 000085c0 _ECAP1_INT_ISR +0 000085a5 _ECAP2_INT_ISR +0 0000858a _ECAP3_INT_ISR +0 0000856f _ECAP4_INT_ISR +0 00008554 _ECAP5_INT_ISR +0 00008539 _ECAP6_INT_ISR +1 00006040 _ECanaLAMRegs +1 000060c0 _ECanaMOTORegs +1 00006080 _ECanaMOTSRegs +1 00006100 _ECanaMboxes +1 00006000 _ECanaRegs +1 00006240 _ECanbLAMRegs +1 000062c0 _ECanbMOTORegs +1 00006280 _ECanbMOTSRegs +1 00006300 _ECanbMboxes +1 00006200 _ECanbRegs +1 00006a00 _ECap1Regs +1 00006a20 _ECap2Regs +1 00006a40 _ECap3Regs +1 00006a60 _ECap4Regs +1 00006a80 _ECap5Regs +1 00006aa0 _ECap6Regs +0 0000852e _EMUINT_ISR +0 00008513 _EPWM1_INT_ISR +0 000084f8 _EPWM1_TZINT_ISR +0 000084dd _EPWM2_INT_ISR +0 000084c2 _EPWM2_TZINT_ISR +0 000084a7 _EPWM3_INT_ISR +0 0000848c _EPWM3_TZINT_ISR +0 00008471 _EPWM4_INT_ISR +0 00008456 _EPWM4_TZINT_ISR +0 0000843b _EPWM5_INT_ISR +0 00008420 _EPWM5_TZINT_ISR +0 00008405 _EPWM6_INT_ISR +0 000083ea _EPWM6_TZINT_ISR +1 00006800 _EPwm1Regs +1 00006840 _EPwm2Regs +1 00006880 _EPwm3Regs +1 000068c0 _EPwm4Regs +1 00006900 _EPwm5Regs +1 00006940 _EPwm6Regs +0 000083cf _EQEP1_INT_ISR +0 000083b4 _EQEP2_INT_ISR +1 00006b00 _EQep1Regs +1 00006b40 _EQep2Regs +0 0000acd3 _EnableInterrupts +1 0000dd44 _ErrorCount +1 0000dcb5 _FILTER_CLIP +1 00000a80 _FlashRegs +1 0000da6a _GOOD +1 00006f80 _GpioCtrlRegs +1 00006fc0 _GpioDataRegs +1 00006fe0 _GpioIntRegs +1 0000da7e _HSPCLK +0 00009eac _Handlai +0 00008399 _I2CINT1A_ISR +0 0000837e _I2CINT2A_ISR +1 00007900 _I2caRegs +0 00008373 _ILLEGAL_ISR +0 00008366 _INT13_ISR +0 00008359 _INT14_ISR +0 0000834f _INT_NOTUSED_ISR +0 0000ad19 _InitAdc +0 00009da7 _InitCan +0 0000ab22 _InitCpuTimers +0 0000a629 _InitPeripheralClocks +0 0000acb4 _InitPieCtrl +0 0000ad60 _InitPieVectTable +0 0000a5ac _InitPll +0 00009bac _InitSeeprom +0 0000a6a3 _InitSysCtrl +0 0000a880 _InitXintf +0 0000a7eb _InitXintf16Gpio +0 0000a839 _InitXintf32Gpio +0 00008ef9 _Init_packMask +0 00008e4d _Init_sensors +0 0000873e _Isit +1 0000dd76 _Kt +1 0000da7c _LSPCLK +0 00008334 _LUF_ISR +0 00008319 _LVF_ISR +0 0000991a _Load_params +1 0000dd54 _Log +1 0000dd62 _LoneLeft +1 0000dd64 _LoneRite +0 000082fe _MRINTA_ISR +0 000082e3 _MRINTB_ISR +1 0000dbfc _MUX_GPIO32 +1 0000dbfd _MUX_GPIO48 +0 000082c8 _MXINTA_ISR +0 000082ad _MXINTB_ISR +1 0000dc81 _Maska +1 00005000 _McbspaRegs +1 00005040 _McbspbRegs +1 0000dcba _MesPerSec +1 0000dd46 _MessageReceivedCount +1 0000dd48 _MessageTransivedCount +1 0000dbf6 _Mode +0 000082a2 _NMI_ISR +0 00008298 _PIE_RESERVED +1 00380090 _PartIdRegs +1 00000ce0 _PieCtrlRegs +1 00000d00 _PieVectTable +0 0000c000 _PieVectTableInit +0 0000a12e _RESET +0 0000a7a7 _RSA_RX_Handler +0 0000a763 _RSA_TX_Handler +0 0000a71f _RSB_RX_Handler +0 0000a6db _RSB_TX_Handler +0 0000934d _RS_BSend +1 0000dd80 _RS_Len +0 000091fc _RS_RX_Handler +0 0000919f _RS_Send +0 00009059 _RS_SetBitMode +0 00008fca _RS_SetLineMode +0 00009037 _RS_SetLineSpeed +0 00009126 _RS_TX_Handler +0 0000828b _RTOSINT_ISR +0 0000c000 _RamfuncsLoadEnd +0 0000c000 _RamfuncsLoadStart +0 0000c000 _RamfuncsRunStart +1 0000dd52 _Read_Log +0 00009746 _ReceiveCommandModbus3 +0 0000971b _ReceiveCommandModbus6 +0 00008270 _SCIRXINTA_ISR +0 00008255 _SCIRXINTB_ISR +0 0000823a _SCIRXINTC_ISR +0 0000821f _SCITXINTA_ISR +0 00008204 _SCITXINTB_ISR +0 000081e9 _SCITXINTC_ISR +0 0000a11d _SENDBIT +0 000081ce _SEQ1INT_ISR +0 000081b3 _SEQ2INT_ISR +0 00008198 _SPIRXINTA_ISR +0 0000998d _SPISE2P_DRV_csclr +0 00009992 _SPISE2P_DRV_csset +0 00009997 _SPISE2P_DRV_init +0 000099c5 _SPISE2P_DRV_tick +0 0000817d _SPITXINTA_ISR +1 0000da7a _SYSCLKOUT +0 000096f0 _Save_params +1 00007050 _SciaRegs +1 00007750 _ScibRegs +1 00007770 _ScicRegs +0 00009b6b _Seeprom_read +0 00009b2a _Seeprom_write +0 000096a1 _SendCorreoRS +0 0000a591 _ServiceDog +1 00007040 _SpiaRegs +1 00007010 _SysCtrlRegs +0 00008162 _TINT0_ISR +1 0000db02 _TPL_CANS +0 00008ca1 _Temper_count +1 0000dbf9 _TermoAD +1 0000dbfa _TermoRS +1 0000dbfb _TermoSW +1 0000dd4a _TestMbox1 +1 0000dd4c _TestMbox2 +1 0000dd4e _TestMbox3 +0 00008157 _USER10_ISR +0 0000814c _USER11_ISR +0 00008141 _USER12_ISR +0 00008136 _USER1_ISR +0 0000812b _USER2_ISR +0 00008120 _USER3_ISR +0 00008115 _USER4_ISR +0 0000810a _USER5_ISR +0 000080ff _USER6_ISR +0 000080f4 _USER7_ISR +0 000080e9 _USER8_ISR +0 000080de _USER9_ISR +1 0000dcbc _WAKE +0 000080c3 _WAKEINT_ISR +1 0000dcbe _WAKE_TIME +0 000080aa _XINT1_ISR +0 00008091 _XINT2_ISR +0 00008076 _XINT3_ISR +0 0000805b _XINT4_ISR +0 00008040 _XINT5_ISR +0 00008025 _XINT6_ISR +0 0000800a _XINT7_ISR +1 00007070 _XIntruptRegs +1 00000b20 _XintfRegs +1 0000dc91 _ZERO +1 000007f0 __STACK_END +abs 000003f0 __STACK_SIZE +abs ffffffff ___TI_pprof_out_hndl +abs ffffffff ___TI_prof_data_size +abs ffffffff ___TI_prof_data_start +abs ffffffff ___binit__ +abs ffffffff ___c_args__ +0 0000ad82 ___cinit__ +0 0000ad82 ___etext__ +abs ffffffff ___pinit__ +0 00008000 ___text__ +0 0000acfe __args_main +1 0000ddca __cleanup_ptr +1 0000ddcc __dtors_ptr +1 0000ddc8 __lock +0 0000ad78 __nop +0 0000ad74 __register_lock +0 0000ad70 __register_unlock +1 00000400 __stack +1 0000ddc6 __unlock +0 0000ad32 _abort +1 0000d740 _adc_filter +0 00009f5f _adc_isr +1 0000d9c0 _archiv +0 0000abd0 _c_int00 +1 0000db04 _cal_addr +0 00008c4e _calc_sensor_koef +1 0000dbc2 _ccc +1 0000db05 _chk +0 0000ad4b _clear_mem +0 00009121 _clear_timer_rs_live +1 0000dd7c _cntr_addr_c +1 0000dd7d _cntr_addr_c_all +1 0000da80 _county +0 0000a416 _cpu_timer1_isr_PULT +0 0000a296 _cpu_timer1_isr_SENS +0 0000ac51 _cpu_timer2_isr +1 0000d8c0 _crc_16_tab +0 00009115 _create_uart_vars +1 0000db14 _def_FILTERBAT +1 0000dca1 _digits +0 00008c38 _er_anal +1 0000db40 _espero +0 0000ad34 _exit +0 0000962c _extendbios +0 0000ac16 _filterbat +1 0000da41 _flag_DEBUG +1 0000dd53 _flog +0 00009d3b _get_Buttons +0 00009c87 _get_Mode +0 000095ba _get_command +0 0000aaf6 _get_crc16 +0 0000aae4 _get_crc_16 +0 0000aaba _get_crc_16b +0 000095b9 _init +0 0000ab9a _init_zone7 +0 00009576 _initload +0 0000a141 _kanal_Send +0 0000952c _load +1 00200000 _logs_block +0 0000878b _main +1 0000dc00 _modbus +1 0000dd51 _never_write +1 0000dd50 _no_write +1 0000db09 _okay +1 0000da42 _out_filter +1 0000dcc0 _param +0 0000ab88 _pause_us +0 0000949d _peek +0 00009455 _poke +1 0000d72c _prev_ok +0 0000941d _read_memory +1 0000dd70 _readr +0 00008c06 _reset_errs +1 0000d040 _rs_a +1 0000d3c0 _rs_b +0 00008000 _rsvd_ISR +0 0000941c _run +0 00009c72 _select_tpl_255 +0 00009c2d _select_tpl_canal +1 0000db26 _sens_pair +1 0000dbde _sens_type +0 0000ad79 _set_cntrl_addr +0 0000a8d5 _setup_adc +0 00008ff7 _setup_arr_cmd_length +0 00009c03 _setup_leds_line +0 00009073 _setup_uart +1 0000db06 _sig +0 00009986 _spiSe2pFree +0 00009982 _spiSe2pRead +0 0000997e _spiSe2pWrite +0 00008fc9 _test_rs_live +0 0000941b _tflash +0 00008711 _timer_Init +1 0000db03 _tpl_cans +0 00009bd5 _unsetup_leds_line +0 0000937f _upload +1 0000dd43 _wait +0 0000937c _write_memory +0 0000937b _xflash +abs ffffffff binit +0 0000ad82 cinit +0 0000ad82 etext +abs ffffffff pinit + + +GLOBAL SYMBOLS: SORTED BY Symbol Address + +page address name +---- ------- ---- +0 00008000 .text +0 00008000 ___text__ +0 00008000 _rsvd_ISR +0 0000800a _XINT7_ISR +0 00008025 _XINT6_ISR +0 00008040 _XINT5_ISR +0 0000805b _XINT4_ISR +0 00008076 _XINT3_ISR +0 00008091 _XINT2_ISR +0 000080aa _XINT1_ISR +0 000080c3 _WAKEINT_ISR +0 000080de _USER9_ISR +0 000080e9 _USER8_ISR +0 000080f4 _USER7_ISR +0 000080ff _USER6_ISR +0 0000810a _USER5_ISR +0 00008115 _USER4_ISR +0 00008120 _USER3_ISR +0 0000812b _USER2_ISR +0 00008136 _USER1_ISR +0 00008141 _USER12_ISR +0 0000814c _USER11_ISR +0 00008157 _USER10_ISR +0 00008162 _TINT0_ISR +0 0000817d _SPITXINTA_ISR +0 00008198 _SPIRXINTA_ISR +0 000081b3 _SEQ2INT_ISR +0 000081ce _SEQ1INT_ISR +0 000081e9 _SCITXINTC_ISR +0 00008204 _SCITXINTB_ISR +0 0000821f _SCITXINTA_ISR +0 0000823a _SCIRXINTC_ISR +0 00008255 _SCIRXINTB_ISR +0 00008270 _SCIRXINTA_ISR +0 0000828b _RTOSINT_ISR +0 00008298 _PIE_RESERVED +0 000082a2 _NMI_ISR +0 000082ad _MXINTB_ISR +0 000082c8 _MXINTA_ISR +0 000082e3 _MRINTB_ISR +0 000082fe _MRINTA_ISR +0 00008319 _LVF_ISR +0 00008334 _LUF_ISR +0 0000834f _INT_NOTUSED_ISR +0 00008359 _INT14_ISR +0 00008366 _INT13_ISR +0 00008373 _ILLEGAL_ISR +0 0000837e _I2CINT2A_ISR +0 00008399 _I2CINT1A_ISR +0 000083b4 _EQEP2_INT_ISR +0 000083cf _EQEP1_INT_ISR +0 000083ea _EPWM6_TZINT_ISR +0 00008405 _EPWM6_INT_ISR +0 00008420 _EPWM5_TZINT_ISR +0 0000843b _EPWM5_INT_ISR +0 00008456 _EPWM4_TZINT_ISR +0 00008471 _EPWM4_INT_ISR +0 0000848c _EPWM3_TZINT_ISR +0 000084a7 _EPWM3_INT_ISR +0 000084c2 _EPWM2_TZINT_ISR +0 000084dd _EPWM2_INT_ISR +0 000084f8 _EPWM1_TZINT_ISR +0 00008513 _EPWM1_INT_ISR +0 0000852e _EMUINT_ISR +0 00008539 _ECAP6_INT_ISR +0 00008554 _ECAP5_INT_ISR +0 0000856f _ECAP4_INT_ISR +0 0000858a _ECAP3_INT_ISR +0 000085a5 _ECAP2_INT_ISR +0 000085c0 _ECAP1_INT_ISR +0 000085db _ECAN1INTB_ISR +0 000085f6 _ECAN1INTA_ISR +0 00008611 _ECAN0INTB_ISR +0 0000862c _ECAN0INTA_ISR +0 00008647 _DINTCH6_ISR +0 00008662 _DINTCH5_ISR +0 0000867d _DINTCH4_ISR +0 00008698 _DINTCH3_ISR +0 000086b3 _DINTCH2_ISR +0 000086ce _DINTCH1_ISR +0 000086e9 _DATALOG_ISR +0 000086f6 _ADCINT_ISR +0 00008711 _timer_Init +0 0000873e _Isit +0 0000878b _main +0 00008c06 _reset_errs +0 00008c38 _er_anal +0 00008c4e _calc_sensor_koef +0 00008ca1 _Temper_count +0 00008e4d _Init_sensors +0 00008ef9 _Init_packMask +0 00008fc9 _test_rs_live +0 00008fca _RS_SetLineMode +0 00008ff7 _setup_arr_cmd_length +0 00009037 _RS_SetLineSpeed +0 00009059 _RS_SetBitMode +0 00009073 _setup_uart +0 00009115 _create_uart_vars +0 00009121 _clear_timer_rs_live +0 00009126 _RS_TX_Handler +0 0000919f _RS_Send +0 000091fc _RS_RX_Handler +0 0000934d _RS_BSend +0 0000937b _xflash +0 0000937c _write_memory +0 0000937f _upload +0 0000941b _tflash +0 0000941c _run +0 0000941d _read_memory +0 00009420 _Answer +0 00009455 _poke +0 0000949d _peek +0 0000952c _load +0 00009576 _initload +0 000095b9 _init +0 000095ba _get_command +0 0000962c _extendbios +0 000096a1 _SendCorreoRS +0 000096f0 _Save_params +0 0000971b _ReceiveCommandModbus6 +0 00009746 _ReceiveCommandModbus3 +0 0000985a _Default_params +0 0000991a _Load_params +0 0000997e _spiSe2pWrite +0 00009982 _spiSe2pRead +0 00009986 _spiSe2pFree +0 0000998d _SPISE2P_DRV_csclr +0 00009992 _SPISE2P_DRV_csset +0 00009997 _SPISE2P_DRV_init +0 000099c5 _SPISE2P_DRV_tick +0 00009b2a _Seeprom_write +0 00009b6b _Seeprom_read +0 00009bac _InitSeeprom +0 00009bd5 _unsetup_leds_line +0 00009c03 _setup_leds_line +0 00009c2d _select_tpl_canal +0 00009c72 _select_tpl_255 +0 00009c87 _get_Mode +0 00009d3b _get_Buttons +0 00009da7 _InitCan +0 00009eac _Handlai +0 00009efe _CAN_send +0 00009f5f _adc_isr +0 0000a105 _DOUT +0 0000a111 _DCLK +0 0000a11d _SENDBIT +0 0000a12e _RESET +0 0000a141 _kanal_Send +0 0000a296 _cpu_timer1_isr_SENS +0 0000a416 _cpu_timer1_isr_PULT +0 0000a591 _ServiceDog +0 0000a5a4 _DisableDog +0 0000a5ac _InitPll +0 0000a629 _InitPeripheralClocks +0 0000a6a3 _InitSysCtrl +0 0000a6ac _CsmUnlock +0 0000a6db _RSB_TX_Handler +0 0000a71f _RSB_RX_Handler +0 0000a763 _RSA_TX_Handler +0 0000a7a7 _RSA_RX_Handler +0 0000a7eb _InitXintf16Gpio +0 0000a839 _InitXintf32Gpio +0 0000a880 _InitXintf +0 0000a8d5 _setup_adc +0 0000a9a4 _CANa_reset_err +0 0000a9d7 _CANa_handler +0 0000aa32 FS$$DIV +0 0000aaba _get_crc_16b +0 0000aae4 _get_crc_16 +0 0000aaf6 _get_crc16 +0 0000ab22 _InitCpuTimers +0 0000ab63 _ConfigCpuTimer +0 0000ab88 _pause_us +0 0000ab9a _init_zone7 +0 0000abd0 _c_int00 +0 0000ac16 _filterbat +0 0000ac51 _cpu_timer2_isr +0 0000ac8a L$$DIV +0 0000ac99 L$$MOD +0 0000aca7 UL$$DIV +0 0000acae UL$$MOD +0 0000acb4 _InitPieCtrl +0 0000acd3 _EnableInterrupts +0 0000acdc I$$DIV +0 0000aced I$$MOD +0 0000acfe __args_main +0 0000ad19 _InitAdc +0 0000ad32 C$$EXIT +0 0000ad32 _abort +0 0000ad34 _exit +0 0000ad4b _clear_mem +0 0000ad60 _InitPieVectTable +0 0000ad70 __register_unlock +0 0000ad74 __register_lock +0 0000ad78 __nop +0 0000ad79 _set_cntrl_addr +0 0000ad7e _DSP28x_usDelay +0 0000ad82 ___cinit__ +0 0000ad82 ___etext__ +0 0000ad82 cinit +0 0000ad82 etext +0 0000c000 _PieVectTableInit +0 0000c000 _RamfuncsLoadEnd +0 0000c000 _RamfuncsLoadStart +0 0000c000 _RamfuncsRunStart +0 0000c10e _ADDR_ANSWER +0 0000c10f _ADDR_TERMINAL +0 0000c110 _CNTRL_ADDR_UNIVERSAL +0 00380080 _ADC_cal +1 00000400 __stack +1 000007f0 __STACK_END +1 00000880 _DevEmuRegs +1 00000a80 _FlashRegs +1 00000ae0 _CsmRegs +1 00000b00 _AdcMirror +1 00000b20 _XintfRegs +1 00000c00 _CpuTimer0Regs +1 00000c08 _CpuTimer1Regs +1 00000c10 _CpuTimer2Regs +1 00000ce0 _PieCtrlRegs +1 00000d00 _PieVectTable +1 00001000 _DmaRegs +1 00005000 _McbspaRegs +1 00005040 _McbspbRegs +1 00006000 _ECanaRegs +1 00006040 _ECanaLAMRegs +1 00006080 _ECanaMOTSRegs +1 000060c0 _ECanaMOTORegs +1 00006100 _ECanaMboxes +1 00006200 _ECanbRegs +1 00006240 _ECanbLAMRegs +1 00006280 _ECanbMOTSRegs +1 000062c0 _ECanbMOTORegs +1 00006300 _ECanbMboxes +1 00006800 _EPwm1Regs +1 00006840 _EPwm2Regs +1 00006880 _EPwm3Regs +1 000068c0 _EPwm4Regs +1 00006900 _EPwm5Regs +1 00006940 _EPwm6Regs +1 00006a00 _ECap1Regs +1 00006a20 _ECap2Regs +1 00006a40 _ECap3Regs +1 00006a60 _ECap4Regs +1 00006a80 _ECap5Regs +1 00006aa0 _ECap6Regs +1 00006b00 _EQep1Regs +1 00006b40 _EQep2Regs +1 00006f80 _GpioCtrlRegs +1 00006fc0 _GpioDataRegs +1 00006fe0 _GpioIntRegs +1 00007010 _SysCtrlRegs +1 00007040 _SpiaRegs +1 00007050 _SciaRegs +1 00007070 _XIntruptRegs +1 00007100 _AdcRegs +1 00007750 _ScibRegs +1 00007770 _ScicRegs +1 00007900 _I2caRegs +1 0000d040 _rs_a +1 0000d3c0 _rs_b +1 0000d704 _ADC_table +1 0000d72c _prev_ok +1 0000d740 _adc_filter +1 0000d8a8 _CpuTimer0 +1 0000d8b0 _CpuTimer1 +1 0000d8b8 _CpuTimer2 +1 0000d8c0 _crc_16_tab +1 0000d9c0 _archiv +1 0000da41 _flag_DEBUG +1 0000da42 _out_filter +1 0000da6a _GOOD +1 0000da7a _SYSCLKOUT +1 0000da7c _LSPCLK +1 0000da7e _HSPCLK +1 0000da80 _county +1 0000db02 _TPL_CANS +1 0000db03 _tpl_cans +1 0000db04 _cal_addr +1 0000db05 _chk +1 0000db06 _sig +1 0000db07 _CanPowse +1 0000db08 _CanGO +1 0000db09 _okay +1 0000db12 _Caliber_time +1 0000db14 _def_FILTERBAT +1 0000db26 _sens_pair +1 0000db40 _espero +1 0000dbc2 _ccc +1 0000dbde _sens_type +1 0000dbf6 _Mode +1 0000dbf7 _Desk +1 0000dbf8 _CanDevAdr +1 0000dbf9 _TermoAD +1 0000dbfa _TermoRS +1 0000dbfb _TermoSW +1 0000dbfc _MUX_GPIO32 +1 0000dbfd _MUX_GPIO48 +1 0000dbfe _DIR_GPIO32 +1 0000dbff _DIR_GPIO48 +1 0000dc00 _modbus +1 0000dc81 _Maska +1 0000dc91 _ZERO +1 0000dca1 _digits +1 0000dcb2 _COUNT_ONE_CANAL +1 0000dcb3 _COUNT_DISCHARGE +1 0000dcb4 _COUNT_TRANSICIA +1 0000dcb5 _FILTER_CLIP +1 0000dcba _MesPerSec +1 0000dcbc _WAKE +1 0000dcbe _WAKE_TIME +1 0000dcc0 _param +1 0000dd42 _CanTimeOutErrorTR +1 0000dd43 _wait +1 0000dd44 _ErrorCount +1 0000dd46 _MessageReceivedCount +1 0000dd48 _MessageTransivedCount +1 0000dd4a _TestMbox1 +1 0000dd4c _TestMbox2 +1 0000dd4e _TestMbox3 +1 0000dd50 _no_write +1 0000dd51 _never_write +1 0000dd52 _Read_Log +1 0000dd53 _flog +1 0000dd54 _Log +1 0000dd62 _LoneLeft +1 0000dd64 _LoneRite +1 0000dd70 _readr +1 0000dd76 _Kt +1 0000dd7a _ADDR_FOR_ALL +1 0000dd7b _CNTRL_ADDR +1 0000dd7c _cntr_addr_c +1 0000dd7d _cntr_addr_c_all +1 0000dd80 _RS_Len +1 0000ddc6 __unlock +1 0000ddc8 __lock +1 0000ddca __cleanup_ptr +1 0000ddcc __dtors_ptr +1 00200000 _logs_block +1 0033fff8 _CsmPwl +1 00380090 _PartIdRegs +abs 000003f0 __STACK_SIZE +abs ffffffff ___TI_pprof_out_hndl +abs ffffffff ___TI_prof_data_size +abs ffffffff ___TI_prof_data_start +abs ffffffff ___binit__ +abs ffffffff ___c_args__ +abs ffffffff ___pinit__ +abs ffffffff binit +abs ffffffff pinit + +[350 symbols] diff --git a/UKSSTMS320F28335.paf2 b/UKSSTMS320F28335.paf2 new file mode 100644 index 0000000000000000000000000000000000000000..9c27fb258f1c16fce1adef934b1b0146e2b13dea GIT binary patch literal 24178 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 R`_ew-7`tqX?@^F}=fBv;iWdL? literal 0 HcmV?d00001 diff --git a/UKSSTMS320F28335.pjt b/UKSSTMS320F28335.pjt index c7b9d37..e235a73 100644 --- a/UKSSTMS320F28335.pjt +++ b/UKSSTMS320F28335.pjt @@ -47,7 +47,7 @@ FinalBuildCmd=$(Proj_dir)\bin\hex2000.exe $(Proj_dir)\bin\UKSSTMS320F28335.out - FinalBuildCmd=$(Proj_dir)\bin\hex2000.exe $(Proj_dir)\bin\UKSSTMS320F28335.out -boot -sci8 -map $(Proj_dir)\bin\UKSSTMS320F28335.map -o $(Proj_dir)\bin\UKSSTMS320F28335.bin -b ["Compiler" Settings: "Debug"] -Options=-g -pdsw225 -fr"$(Proj_dir)\Debug" -fs"$(Proj_dir)\Asm" -i"$(Proj_dir)\Source\External\v120\DSP2833x_headers\include" -i"$(Proj_dir)\Source\Internal\Include" -i"$(Proj_dir)\Source\External\v120\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" -md -ml -v28 --float_support=fpu32 +Options=-g -pdsw225 -o1 -fr"$(Proj_dir)\Debug" -fs"$(Proj_dir)\Asm" -i"$(Proj_dir)\Source\External\v120\DSP2833x_headers\include" -i"$(Proj_dir)\Source\Internal\Include" -i"$(Proj_dir)\Source\External\v120\DSP2833x_common\include" -d"_DEBUG" -d"LARGE_MODEL" -md -ml -v28 --float_support=fpu32 ["Compiler" Settings: "Release"] Options=-pdsw225 -o3 -fr"$(Proj_dir)\Release" -d"LARGE_MODEL" -ml -v28 diff --git a/UKSSTMS320F28335.sbl b/UKSSTMS320F28335.sbl new file mode 100644 index 0000000000000000000000000000000000000000..ad497be10608721e5649fa3c50a93042900cd1a6 GIT binary patch literal 21712 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 CRI5q= literal 0 HcmV?d00001 diff --git a/cc_build_Debug.log b/cc_build_Debug.log new file mode 100644 index 0000000..6e8df87 --- /dev/null +++ b/cc_build_Debug.log @@ -0,0 +1,23 @@ +------------------------ UKSSTMS320F28335.pjt - Debug ------------------------ +[Linking...] "D:\ti\cgt\C2000 Code Generation Tools 5.2.15\bin\cl2000" -@"Debug.lkf" + + +D:\project2833\GIT\UKSS_23550_2\bin\hex2000.exe D:\project2833\GIT\UKSS_23550_2\bin\UKSSTMS320F28335.out -boot -sci8 -map D:\project2833\GIT\UKSS_23550_2\bin\UKSSTMS320F28335.map -o D:\project2833\GIT\UKSS_23550_2\bin\UKSSTMS320F28335.hex -i +Translating to Intel format... + "D:\project2833\GIT\UKSS_23550_2\bin\UKSSTMS320F28335.out" ==> .cinit (BOOT LOAD) + "D:\project2833\GIT\UKSS_23550_2\bin\UKSSTMS320F28335.out" ==> .text (BOOT LOAD) + "D:\project2833\GIT\UKSS_23550_2\bin\UKSSTMS320F28335.out" ==> ramfuncs (BOOT LOAD) + "D:\project2833\GIT\UKSS_23550_2\bin\UKSSTMS320F28335.out" ==> .econst (BOOT LOAD) + "D:\project2833\GIT\UKSS_23550_2\bin\UKSSTMS320F28335.out" ==> .switch (BOOT LOAD) + +D:\project2833\GIT\UKSS_23550_2\bin\hex2000.exe D:\project2833\GIT\UKSS_23550_2\bin\UKSSTMS320F28335.out -boot -sci8 -map D:\project2833\GIT\UKSS_23550_2\bin\UKSSTMS320F28335.map -o D:\project2833\GIT\UKSS_23550_2\bin\UKSSTMS320F28335.bin -b +Translating to Binary format... + "D:\project2833\GIT\UKSS_23550_2\bin\UKSSTMS320F28335.out" ==> .cinit (BOOT LOAD) + "D:\project2833\GIT\UKSS_23550_2\bin\UKSSTMS320F28335.out" ==> .text (BOOT LOAD) + "D:\project2833\GIT\UKSS_23550_2\bin\UKSSTMS320F28335.out" ==> ramfuncs (BOOT LOAD) + "D:\project2833\GIT\UKSS_23550_2\bin\UKSSTMS320F28335.out" ==> .econst (BOOT LOAD) + "D:\project2833\GIT\UKSS_23550_2\bin\UKSSTMS320F28335.out" ==> .switch (BOOT LOAD) + +Build Complete, + 0 Errors, 0 Warnings, 0 Remarks. + Please view the build output for errors and warnings for any custom steps.