diff --git a/.cproject b/.cproject index 61b2e7a8..e059a1fa 100644 --- a/.cproject +++ b/.cproject @@ -1,247 +1,449 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.cproject_org b/.cproject_org new file mode 100644 index 00000000..bc89054d --- /dev/null +++ b/.cproject_org @@ -0,0 +1,247 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.gitignore b/.gitignore index 4d367229..d967bfac 100644 --- a/.gitignore +++ b/.gitignore @@ -1,16 +1,20 @@ -main.hex -**/*~ -*.asm -*.bin -*.elf -*.ihx -*.cdb -*.lk -*.map -*.adb -*.lst -*.rel -*.rst -*.sym - -Debug +main.hex +**/*~ +*.asm +*.bin +*.elf +*.ihx +*.cdb +*.lk +*.map +*.adb +*.lst +*.rel +*.rst +*.sym + +Debug/ +Release/ +build/ + +.settings/language.settings.xml diff --git a/.mxproject b/.mxproject index 0a23feda..a2ce3191 100644 --- a/.mxproject +++ b/.mxproject @@ -1,11 +1,5 @@ -[PreviousGenFiles] -HeaderPath=C:/LishuiFOC/Generated/LishuiFOC_01/Inc -HeaderFiles=stm32f1xx_it.h;stm32f1xx_hal_conf.h;main.h; -SourcePath=C:/LishuiFOC/Generated/LishuiFOC_01/Src -SourceFiles=stm32f1xx_it.c;stm32f1xx_hal_msp.c;main.c; - [PreviousLibFiles] -LibFiles=Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h;Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103x6.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h;Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/system_stm32f1xx.c;Drivers/CMSIS/Include/arm_common_tables.h;Drivers/CMSIS/Include/arm_const_structs.h;Drivers/CMSIS/Include/arm_math.h;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/cmsis_armcc_V6.h;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/core_cmFunc.h;Drivers/CMSIS/Include/core_cmInstr.h;Drivers/CMSIS/Include/core_cmSimd.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/core_sc300.h; +LibFiles=Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_adc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_def.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio_ex.h;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_cortex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_pwr.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_exti.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_tim_ex.h;Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_uart.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h;Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h;Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/system_stm32f1xx.c;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/cmsis_armclang.h;Drivers/CMSIS/Include/cmsis_compiler.h;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/cmsis_iccarm.h;Drivers/CMSIS/Include/cmsis_version.h;Drivers/CMSIS/Include/core_armv8mbl.h;Drivers/CMSIS/Include/core_armv8mml.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/core_cm1.h;Drivers/CMSIS/Include/core_cm23.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/core_cm33.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/core_sc300.h;Drivers/CMSIS/Include/mpu_armv7.h;Drivers/CMSIS/Include/mpu_armv8.h;Drivers/CMSIS/Include/tz_context.h; [] SourceFiles=;; @@ -15,3 +9,26 @@ SourceFiles=..\Src\main.c;..\Src\stm32f1xx_it.c;..\Src\stm32f1xx_hal_msp.c;../Dr HeaderPath=..\Drivers\STM32F1xx_HAL_Driver\Inc;..\Drivers\STM32F1xx_HAL_Driver\Inc\Legacy;..\Drivers\CMSIS\Device\ST\STM32F1xx\Include;..\Drivers\CMSIS\Include;..\Inc; CDefines=__weak:__attribute__((weak));__packed:__attribute__((__packed__)); +[PreviousUsedCubeIDEFiles] +SourceFiles=Core\Src\main.c;Core\Src\stm32f1xx_it.c;Core\Src\stm32f1xx_hal_msp.c;Core\Src\stm32f1xx_hal_timebase_tim.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c;Core\Src/system_stm32f1xx.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c;Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c;Core\Src/system_stm32f1xx.c;Drivers/CMSIS/Device/ST/STM32F1xx/Source/Templates/system_stm32f1xx.c;; +HeaderPath=Drivers\STM32F1xx_HAL_Driver\Inc;Drivers\STM32F1xx_HAL_Driver\Inc\Legacy;Drivers\CMSIS\Device\ST\STM32F1xx\Include;Drivers\CMSIS\Include;Core\Inc; +CDefines=USE_HAL_DRIVER;STM32F103xB;USE_HAL_DRIVER;USE_HAL_DRIVER; + +[PreviousGenFiles] +AdvancedFolderStructure=true +HeaderFileListSize=3 +HeaderFiles#0=C:/VSARM/SmartESC_STM32_v3/Core/Inc/stm32f1xx_it.h +HeaderFiles#1=C:/VSARM/SmartESC_STM32_v3/Core/Inc/stm32f1xx_hal_conf.h +HeaderFiles#2=C:/VSARM/SmartESC_STM32_v3/Core/Inc/main.h +HeaderFolderListSize=1 +HeaderPath#0=C:/VSARM/SmartESC_STM32_v3/Core/Inc +HeaderFiles=; +SourceFileListSize=4 +SourceFiles#0=C:/VSARM/SmartESC_STM32_v3/Core/Src/stm32f1xx_it.c +SourceFiles#1=C:/VSARM/SmartESC_STM32_v3/Core/Src/stm32f1xx_hal_msp.c +SourceFiles#2=C:/VSARM/SmartESC_STM32_v3/Core/Src/stm32f1xx_hal_timebase_tim.c +SourceFiles#3=C:/VSARM/SmartESC_STM32_v3/Core/Src/main.c +SourceFolderListSize=1 +SourcePath#0=C:/VSARM/SmartESC_STM32_v3/Core/Src +SourceFiles=; + diff --git a/.project b/.project index c5202eac..0443504c 100644 --- a/.project +++ b/.project @@ -1,7 +1,7 @@ - LishuiFOC_01 - + SmartESC_v3 + @@ -19,12 +19,16 @@ + com.st.stm32cube.ide.mcu.MCUProjectNature org.eclipse.cdt.core.cnature - org.eclipse.cdt.managedbuilder.core.managedBuildNature org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - fr.ac6.mcu.ide.core.MCUProjectNature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + com.st.stm32cube.ide.mcu.MCUSW4STM32ConvertedProjectNature + com.st.stm32cube.ide.mcu.MCUCubeIdeServicesRevAev2ProjectNature + com.st.stm32cube.ide.mcu.MCUCubeProjectNature + com.st.stm32cube.ide.mcu.MCUAdvancedStructureProjectNature + com.st.stm32cube.ide.mcu.MCUEndUserDisabledTrustZoneProjectNature + com.st.stm32cube.ide.mcu.MCUSingleCpuProjectNature + com.st.stm32cube.ide.mcu.MCURootProjectNature - - - diff --git a/.project_org b/.project_org new file mode 100644 index 00000000..5545c03b --- /dev/null +++ b/.project_org @@ -0,0 +1,30 @@ + + + SmartESC_v3 + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + fr.ac6.mcu.ide.core.MCUProjectNature + + + + + diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml deleted file mode 100644 index 023a00f3..00000000 --- a/.settings/language.settings.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.settings/org.eclipse.cdt.codan.core.prefs b/.settings/org.eclipse.cdt.codan.core.prefs new file mode 100644 index 00000000..19f7155e --- /dev/null +++ b/.settings/org.eclipse.cdt.codan.core.prefs @@ -0,0 +1,72 @@ +com.st.stm32cube.ide.mcu.ide.oss.source.checker.libnano.problem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Float formatting support\\")"} +eclipse.preferences.version=1 +org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false} +org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"} +org.eclipse.cdt.codan.checkers.localvarreturn=-Warning +org.eclipse.cdt.codan.checkers.localvarreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Returning the address of a local variable\\")"} +org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"} +org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"} +org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false} +org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"} +org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"} +org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"} +org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"} +org.eclipse.cdt.codan.internal.checkers.BlacklistProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.BlacklistProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function or method is blacklisted\\")",blacklist\=>()} +org.eclipse.cdt.codan.internal.checkers.CStyleCastProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.CStyleCastProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"C-Style cast instead of C++ cast\\")",checkMacro\=>true} +org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false} +org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()} +org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"} +org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true} +org.eclipse.cdt.codan.internal.checkers.CopyrightProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.CopyrightProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Lack of copyright information\\")",regex\=>".*Copyright.*"} +org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"} +org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"} +org.eclipse.cdt.codan.internal.checkers.FloatCompareProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.FloatCompareProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Direct float comparison\\")"} +org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"} +org.eclipse.cdt.codan.internal.checkers.GotoStatementProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.GotoStatementProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Goto statement used\\")"} +org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"} +org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"} +org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"} +org.eclipse.cdt.codan.internal.checkers.MagicNumberProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.MagicNumberProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Avoid magic numbers\\")",checkArray\=>true,checkOperatorParen\=>true,exceptions\=>(1,0,-1,2,1.0,0.0,-1.0)} +org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"} +org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"} +org.eclipse.cdt.codan.internal.checkers.MissCaseProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.MissCaseProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Missing cases in switch\\")"} +org.eclipse.cdt.codan.internal.checkers.MissDefaultProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.MissDefaultProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Missing default in switch\\")",defaultWithAllEnums\=>false} +org.eclipse.cdt.codan.internal.checkers.MissReferenceProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.MissReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Missing reference return value in assignment operator\\")"} +org.eclipse.cdt.codan.internal.checkers.MissSelfCheckProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.MissSelfCheckProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Missing self check in assignment operator\\")"} +org.eclipse.cdt.codan.internal.checkers.MultipleDeclarationsProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.MultipleDeclarationsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Multiple variable declaration\\")"} +org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} +org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"} +org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"} +org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"} +org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"} +org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"} +org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"} +org.eclipse.cdt.codan.internal.checkers.ShallowCopyProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.ShallowCopyProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Miss copy constructor or assignment operator\\")",onlynew\=>false} +org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()} +org.eclipse.cdt.codan.internal.checkers.StaticVariableInHeaderProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.StaticVariableInHeaderProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Static variable in header file\\")"} +org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false} +org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false} +org.eclipse.cdt.codan.internal.checkers.SymbolShadowingProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.SymbolShadowingProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol shadowing\\")",paramFuncParameters\=>true} +org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"} +org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true} +org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true} +org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")} +org.eclipse.cdt.codan.internal.checkers.UsingInHeaderProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.UsingInHeaderProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Using directive in header\\")"} +org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"} +org.eclipse.cdt.codan.internal.checkers.VirtualMethodCallProblem=-Error +org.eclipse.cdt.codan.internal.checkers.VirtualMethodCallProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Virtual method call in constructor/destructor\\")"} diff --git a/.settings/org.eclipse.cdt.core.prefs b/.settings/org.eclipse.cdt.core.prefs new file mode 100644 index 00000000..c8ec5df2 --- /dev/null +++ b/.settings/org.eclipse.cdt.core.prefs @@ -0,0 +1,6 @@ +doxygen/doxygen_new_line_after_brief=true +doxygen/doxygen_use_brief_tag=false +doxygen/doxygen_use_javadoc_tags=true +doxygen/doxygen_use_pre_tag=false +doxygen/doxygen_use_structural_commands=false +eclipse.preferences.version=1 diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 00000000..583ec115 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,99 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + + { + "name": "Flash", + "type": "cppdbg", + "request": "launch", + "args": [], + "stopAtEntry": true, + "cwd": "${workspaceFolder}", + "program": "${workspaceFolder}/build/EBiCS_Firmware2.elf", + "environment": [], + "externalConsole": false, + "MIMode": "gdb", + "miDebuggerServerAddress": "localhost:3333", + "targetArchitecture": "arm", + "logging": { + "moduleLoad": true, + "trace": true, + "engineLogging": true, + "programOutput": true, + "exceptions": true + }, + "linux": { + "MIDebuggerPath": "gdb-multiarch", + }, + "customLaunchSetupCommands": [ + { + "description": "Set remote target", + "text": "file ${workspaceFolder}/build/EBiCS_Firmware2.elf" + }, + { + "description": "Set remote target", + "text": "target remote localhost:3333" + }, + { + "text": "monitor init" + }, + { + "text": "monitor reset halt" + }, + { + "description": "Flash firmware", + "text": "monitor flash write_image erase ${workspaceFolder}/build/EBiCS_Firmware2.hex" + }, + { + "description": "Start debug", + "text": "monitor reset halt" + } + ] + }, + { + "name": "Unlock", + "type": "cppdbg", + "request": "launch", + "args": [], + "stopAtEntry": true, + "cwd": "${workspaceFolder}", + "program": "${workspaceFolder}/build/EBiCS_Firmware2.elf", + "environment": [], + "externalConsole": false, + "MIMode": "gdb", + "miDebuggerServerAddress": "localhost:3333", + "targetArchitecture": "arm", + "logging": { + "moduleLoad": true, + "trace": true, + "engineLogging": true, + "programOutput": true, + "exceptions": true + }, + "linux": { + "MIDebuggerPath": "gdb-multiarch", + }, + "customLaunchSetupCommands": [ + { + "description": "Set remote target", + "text": "target remote localhost:3333" + }, + { + "text": "monitor init" + }, + { + "text": "monitor reset halt" + }, + { + "text": "monitor stm32f1x unlock 0" + }, + { + "text": "monitor reset halt" + }, + ] + }, + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..ef6d3f5b --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,15 @@ +{ + "git.ignoreLimitWarning": true, + "github.gitAuthentication": false, + "files.associations": { + "optional": "c", + "istream": "c", + "ostream": "c", + "system_error": "c", + "array": "c", + "functional": "c", + "tuple": "c", + "type_traits": "c", + "utility": "c" + } +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 00000000..fdb3b546 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,63 @@ +{ + // See https://go.microsoft.com/fwlink/?LinkId=733558 + // for the documentation about the tasks.json format + "version": "2.0.0", + "tasks": [ + { + "label": "build", + "type": "shell", + "args": [], + "options": { + "cwd": "${workspaceFolder}" + }, + "linux": { + "command": "make" + }, + "problemMatcher": [], + "group": { + "kind": "build", + "isDefault": true + } + }, + { + "label": "clean", + "type": "shell", + "args": [], + "options": { + "cwd": "${workspaceFolder}" + }, + "linux": { + "command": "make", + "args": [ + "clean" + ] + }, + "problemMatcher": [], + "group": "build" + }, + { + "label": "OpenOCD - Jlink", + "type": "shell", + "args": [], + "linux": { + "command": "openocd -c 'interface jlink; transport select swd; source [find target/stm32f1x.cfg]'" + }, + "problemMatcher": [] + }, + { + "label": "OpenOCD - STLinkV2", + "type": "shell", + "args": [], + "linux": { + "command": "openocd", + "args": [ + "-f", + "${workspaceFolder}/tools/openocd-v0.10.0_dev-scripts/stlink-v2.cfg", + "-f", + "${workspaceFolder}/tools/openocd-v0.10.0_dev-scripts/stm32f1x.cfg" + ] + }, + "problemMatcher": [] + } + ] +} \ No newline at end of file diff --git a/Inc/FOC.h b/Core/Inc/FOC.h similarity index 80% rename from Inc/FOC.h rename to Core/Inc/FOC.h index 3105f6ef..c2fc2909 100644 --- a/Inc/FOC.h +++ b/Core/Inc/FOC.h @@ -1,51 +1,52 @@ -/* - * FOC.h - * - * Created on: 25.01.2019 - * Author: stancecoke - */ - -#ifndef FOC_H_ -#define FOC_H_ - -#include -#include "config.h" -//exportetd functions -void FOC_calculation(int16_t int16_i_as, int16_t int16_i_bs, q31_t q31_teta, int16_t int16_i_q_target, int16_t throttle, MotorState_t* MS_FOC); -q31_t PI_control_i_q (q31_t ist, q31_t soll); -q31_t PI_control_i_d (q31_t ist, q31_t soll, int clamp); - -// Maximum Voltage applyed - -#ifdef DISABLE_DYNAMIC_ADC -#define _U_MAX 2000L //little lower than period of timer1 for proper phase current reading. Could be improved by dynamic timing of AD-conversion -#else -#define _U_MAX 2000L -#endif - - - -// Square Root of 3 -#define _SQRT3 1.73205081 - -#define ADC_DUR 250//minimal duration for proper ADC reading deadtime + noise subsiding + sample time - - -//globals -extern q31_t temp1; -extern q31_t temp2; -extern q31_t temp3; -extern q31_t temp4; -extern q31_t temp5; -extern q31_t temp6; -extern char PI_flag; - - - -extern q31_t e_log[300][6]; -extern char Obs_flag; -extern uint8_t ui8_debug_state; - - - -#endif /* FOC_H_ */ +/* + * FOC.h + * + * Created on: 25.01.2019 + * Author: stancecoke + */ + +#ifndef FOC_H_ +#define FOC_H_ + +#include +#include "motor.h" +#include "config.h" +//exportetd functions +void FOC_calculation(int16_t int16_i_as, int16_t int16_i_bs, q31_t q31_teta, MotorState_t* MS_FOC); +q31_t PI_control_i_q (q31_t ist, q31_t soll); +q31_t PI_control_i_d (q31_t ist, q31_t soll, q31_t clamp); + +// Maximum Voltage applyed + +#ifdef DISABLE_DYNAMIC_ADC +#define _U_MAX 2000L //little lower than period of timer1 for proper phase current reading. Could be improved by dynamic timing of AD-conversion +#else +#define _U_MAX 2000L +#endif + + + +// Square Root of 3 +#define _SQRT3 28 //1.73205081*16 + +#define ADC_DUR 250//minimal duration for proper ADC reading deadtime + noise subsiding + sample time + + +//globals +extern q31_t temp1; +extern q31_t temp2; +extern q31_t temp3; +extern q31_t temp4; +extern q31_t temp5; +extern q31_t temp6; +extern char PI_flag; + + + +extern q31_t e_log[300][6]; +extern char Obs_flag; +extern uint8_t ui8_debug_state; + + + +#endif /* FOC_H_ */ diff --git a/Core/Inc/M365_Dashboard.h b/Core/Inc/M365_Dashboard.h new file mode 100644 index 00000000..066797c7 --- /dev/null +++ b/Core/Inc/M365_Dashboard.h @@ -0,0 +1,21 @@ +/* + * M365_Dashboard.h + * + * Created on: Nov 27, 2021 + * Author: stancecoke + */ + +#ifndef INC_M365_DASHBOARD_H_ +#define INC_M365_DASHBOARD_H_ + +#include "motor.h" + + +void M365Dashboard_init(); + +void search_DashboardMessage(M365State_t *M365State, UART_HandleTypeDef huart1); +void process_DashboardMessage(M365State_t* p_M365State, uint8_t *message, uint8_t length, UART_HandleTypeDef huart1); +void addCRC(uint8_t * message, uint8_t size); +int16_t checkCRC(uint8_t * message, uint8_t size); + +#endif /* INC_M365_DASHBOARD_H_ */ diff --git a/Core/Inc/M365_memory_table.h b/Core/Inc/M365_memory_table.h new file mode 100644 index 00000000..9f770de5 --- /dev/null +++ b/Core/Inc/M365_memory_table.h @@ -0,0 +1,87 @@ +/* + * M365_memory_table.h + * + * Created on: 19.12.2021 + * Author: Stancecoke + * taken from https://github.com/rascafr/9-analyzer/blob/master/definitions.js + * and + */ + +#ifndef INC_M365_MEMORY_TABLE_H_ +#define INC_M365_MEMORY_TABLE_H_ + +typedef struct __attribute__ ((__packed__)) { + + uint16_t magic[13]; + uint16_t currA; + uint16_t currB; + uint16_t currC; + char scooter_serial[14]; + uint16_t scooter_pin[3]; + uint16_t ESC_version; + uint16_t error_code_1; + uint16_t alarm_code_1; + uint32_t ESC_status_1; + uint16_t ride_mode; + uint16_t capacity_battery_1; + uint16_t capacity_battery_2; + uint32_t battery_level_1; + uint16_t recent_remaining_range; + uint16_t predicted_remaining_range; + uint16_t recent_speed_1[3]; + uint16_t total_milage[6]; + uint16_t recent_milage[3]; + uint32_t total_operation_time; + uint16_t total_riding_time[6]; + uint16_t single_operating_time_1; + uint16_t single_riding_time_1[3]; + uint16_t frame_temperature; + uint16_t battery1_temperature; + uint16_t battery2_temperature; + uint16_t MOSFET_temperature[6]; + uint16_t ESC_supply_voltage; + uint16_t BMS_supply_voltage; + uint16_t BMS_current[7]; + uint16_t external_battery_temperature[3]; + uint16_t motor_phase_current[18]; + uint16_t average_speed; + uint16_t external_battery_version; + uint16_t internal_battery_version; + uint16_t BLE_version[8]; + uint16_t lock_command; + uint16_t unlock_command; + uint16_t speed_limit; + uint16_t speed_limit_normal; + uint16_t speed_limit_eco; + uint16_t operation_mode; + uint16_t start_stop; + uint16_t reboot; + uint16_t power_off; + uint16_t unknown; + uint16_t regen_level; + uint16_t cruise_control; + uint16_t tail_light[52]; + uint16_t error_code_2; + uint16_t alarm_code_2; + uint16_t ESC_status_2; + uint16_t capacity_battery_1_2; + uint16_t battery_2; + uint16_t recent_speed_2; + uint16_t average_speed_2; + uint32_t total_milage_2; + uint16_t recent_milage_2; + uint16_t single_operation_time_2; + uint16_t frame_temperature_2; + uint16_t recent_speed_limit_2; + uint16_t scooter_power; + uint16_t previous_alarm_code; + uint16_t predicted_remaining_range_2[7]; + uint32_t display_mode_lamp_strip; + uint32_t colour_strip_1; + uint32_t colour_strip_2; + uint32_t colour_strip_3; + uint32_t colour_strip_4; + +} M365_menory_table_t; + +#endif /* INC_M365_MEMORY_TABLE_H_ */ diff --git a/Drivers/CMSIS/Include/arm_common_tables.h b/Core/Inc/arm_common_tables.h similarity index 98% rename from Drivers/CMSIS/Include/arm_common_tables.h rename to Core/Inc/arm_common_tables.h index d5d72417..8742a569 100644 --- a/Drivers/CMSIS/Include/arm_common_tables.h +++ b/Core/Inc/arm_common_tables.h @@ -1,136 +1,136 @@ -/* ---------------------------------------------------------------------- -* Copyright (C) 2010-2014 ARM Limited. All rights reserved. -* -* $Date: 19. October 2015 -* $Revision: V.1.4.5 a -* -* Project: CMSIS DSP Library -* Title: arm_common_tables.h -* -* Description: This file has extern declaration for common tables like Bitreverse, reciprocal etc which are used across different functions -* -* Target Processor: Cortex-M4/Cortex-M3 -* -* Redistribution and use in source and binary forms, with or without -* modification, are permitted provided that the following conditions -* are met: -* - Redistributions of source code must retain the above copyright -* notice, this list of conditions and the following disclaimer. -* - Redistributions in binary form must reproduce the above copyright -* notice, this list of conditions and the following disclaimer in -* the documentation and/or other materials provided with the -* distribution. -* - Neither the name of ARM LIMITED nor the names of its contributors -* may be used to endorse or promote products derived from this -* software without specific prior written permission. -* -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -* POSSIBILITY OF SUCH DAMAGE. -* -------------------------------------------------------------------- */ - -#ifndef _ARM_COMMON_TABLES_H -#define _ARM_COMMON_TABLES_H - -#include "arm_math.h" - -extern const uint16_t armBitRevTable[1024]; -extern const q15_t armRecipTableQ15[64]; -extern const q31_t armRecipTableQ31[64]; -/* extern const q31_t realCoefAQ31[1024]; */ -/* extern const q31_t realCoefBQ31[1024]; */ -extern const float32_t twiddleCoef_16[32]; -extern const float32_t twiddleCoef_32[64]; -extern const float32_t twiddleCoef_64[128]; -extern const float32_t twiddleCoef_128[256]; -extern const float32_t twiddleCoef_256[512]; -extern const float32_t twiddleCoef_512[1024]; -extern const float32_t twiddleCoef_1024[2048]; -extern const float32_t twiddleCoef_2048[4096]; -extern const float32_t twiddleCoef_4096[8192]; -#define twiddleCoef twiddleCoef_4096 -extern const q31_t twiddleCoef_16_q31[24]; -extern const q31_t twiddleCoef_32_q31[48]; -extern const q31_t twiddleCoef_64_q31[96]; -extern const q31_t twiddleCoef_128_q31[192]; -extern const q31_t twiddleCoef_256_q31[384]; -extern const q31_t twiddleCoef_512_q31[768]; -extern const q31_t twiddleCoef_1024_q31[1536]; -extern const q31_t twiddleCoef_2048_q31[3072]; -extern const q31_t twiddleCoef_4096_q31[6144]; -extern const q15_t twiddleCoef_16_q15[24]; -extern const q15_t twiddleCoef_32_q15[48]; -extern const q15_t twiddleCoef_64_q15[96]; -extern const q15_t twiddleCoef_128_q15[192]; -extern const q15_t twiddleCoef_256_q15[384]; -extern const q15_t twiddleCoef_512_q15[768]; -extern const q15_t twiddleCoef_1024_q15[1536]; -extern const q15_t twiddleCoef_2048_q15[3072]; -extern const q15_t twiddleCoef_4096_q15[6144]; -extern const float32_t twiddleCoef_rfft_32[32]; -extern const float32_t twiddleCoef_rfft_64[64]; -extern const float32_t twiddleCoef_rfft_128[128]; -extern const float32_t twiddleCoef_rfft_256[256]; -extern const float32_t twiddleCoef_rfft_512[512]; -extern const float32_t twiddleCoef_rfft_1024[1024]; -extern const float32_t twiddleCoef_rfft_2048[2048]; -extern const float32_t twiddleCoef_rfft_4096[4096]; - - -/* floating-point bit reversal tables */ -#define ARMBITREVINDEXTABLE__16_TABLE_LENGTH ((uint16_t)20 ) -#define ARMBITREVINDEXTABLE__32_TABLE_LENGTH ((uint16_t)48 ) -#define ARMBITREVINDEXTABLE__64_TABLE_LENGTH ((uint16_t)56 ) -#define ARMBITREVINDEXTABLE_128_TABLE_LENGTH ((uint16_t)208 ) -#define ARMBITREVINDEXTABLE_256_TABLE_LENGTH ((uint16_t)440 ) -#define ARMBITREVINDEXTABLE_512_TABLE_LENGTH ((uint16_t)448 ) -#define ARMBITREVINDEXTABLE1024_TABLE_LENGTH ((uint16_t)1800) -#define ARMBITREVINDEXTABLE2048_TABLE_LENGTH ((uint16_t)3808) -#define ARMBITREVINDEXTABLE4096_TABLE_LENGTH ((uint16_t)4032) - -extern const uint16_t armBitRevIndexTable16[ARMBITREVINDEXTABLE__16_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable32[ARMBITREVINDEXTABLE__32_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable64[ARMBITREVINDEXTABLE__64_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable128[ARMBITREVINDEXTABLE_128_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable256[ARMBITREVINDEXTABLE_256_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable512[ARMBITREVINDEXTABLE_512_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable1024[ARMBITREVINDEXTABLE1024_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable2048[ARMBITREVINDEXTABLE2048_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable4096[ARMBITREVINDEXTABLE4096_TABLE_LENGTH]; - -/* fixed-point bit reversal tables */ -#define ARMBITREVINDEXTABLE_FIXED___16_TABLE_LENGTH ((uint16_t)12 ) -#define ARMBITREVINDEXTABLE_FIXED___32_TABLE_LENGTH ((uint16_t)24 ) -#define ARMBITREVINDEXTABLE_FIXED___64_TABLE_LENGTH ((uint16_t)56 ) -#define ARMBITREVINDEXTABLE_FIXED__128_TABLE_LENGTH ((uint16_t)112 ) -#define ARMBITREVINDEXTABLE_FIXED__256_TABLE_LENGTH ((uint16_t)240 ) -#define ARMBITREVINDEXTABLE_FIXED__512_TABLE_LENGTH ((uint16_t)480 ) -#define ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH ((uint16_t)992 ) -#define ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH ((uint16_t)1984) -#define ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH ((uint16_t)4032) - -extern const uint16_t armBitRevIndexTable_fixed_16[ARMBITREVINDEXTABLE_FIXED___16_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable_fixed_32[ARMBITREVINDEXTABLE_FIXED___32_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable_fixed_64[ARMBITREVINDEXTABLE_FIXED___64_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable_fixed_128[ARMBITREVINDEXTABLE_FIXED__128_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable_fixed_256[ARMBITREVINDEXTABLE_FIXED__256_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable_fixed_512[ARMBITREVINDEXTABLE_FIXED__512_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable_fixed_1024[ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable_fixed_2048[ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH]; -extern const uint16_t armBitRevIndexTable_fixed_4096[ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH]; - -/* Tables for Fast Math Sine and Cosine */ -extern const float32_t sinTable_f32[FAST_MATH_TABLE_SIZE + 1]; -extern const q31_t sinTable_q31[FAST_MATH_TABLE_SIZE + 1]; -extern const q15_t sinTable_q15[FAST_MATH_TABLE_SIZE + 1]; - -#endif /* ARM_COMMON_TABLES_H */ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. +* +* $Date: 19. October 2015 +* $Revision: V.1.4.5 a +* +* Project: CMSIS DSP Library +* Title: arm_common_tables.h +* +* Description: This file has extern declaration for common tables like Bitreverse, reciprocal etc which are used across different functions +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +* -------------------------------------------------------------------- */ + +#ifndef _ARM_COMMON_TABLES_H +#define _ARM_COMMON_TABLES_H + +#include "arm_math.h" + +extern const uint16_t armBitRevTable[1024]; +extern const q15_t armRecipTableQ15[64]; +extern const q31_t armRecipTableQ31[64]; +/* extern const q31_t realCoefAQ31[1024]; */ +/* extern const q31_t realCoefBQ31[1024]; */ +extern const float32_t twiddleCoef_16[32]; +extern const float32_t twiddleCoef_32[64]; +extern const float32_t twiddleCoef_64[128]; +extern const float32_t twiddleCoef_128[256]; +extern const float32_t twiddleCoef_256[512]; +extern const float32_t twiddleCoef_512[1024]; +extern const float32_t twiddleCoef_1024[2048]; +extern const float32_t twiddleCoef_2048[4096]; +extern const float32_t twiddleCoef_4096[8192]; +#define twiddleCoef twiddleCoef_4096 +extern const q31_t twiddleCoef_16_q31[24]; +extern const q31_t twiddleCoef_32_q31[48]; +extern const q31_t twiddleCoef_64_q31[96]; +extern const q31_t twiddleCoef_128_q31[192]; +extern const q31_t twiddleCoef_256_q31[384]; +extern const q31_t twiddleCoef_512_q31[768]; +extern const q31_t twiddleCoef_1024_q31[1536]; +extern const q31_t twiddleCoef_2048_q31[3072]; +extern const q31_t twiddleCoef_4096_q31[6144]; +extern const q15_t twiddleCoef_16_q15[24]; +extern const q15_t twiddleCoef_32_q15[48]; +extern const q15_t twiddleCoef_64_q15[96]; +extern const q15_t twiddleCoef_128_q15[192]; +extern const q15_t twiddleCoef_256_q15[384]; +extern const q15_t twiddleCoef_512_q15[768]; +extern const q15_t twiddleCoef_1024_q15[1536]; +extern const q15_t twiddleCoef_2048_q15[3072]; +extern const q15_t twiddleCoef_4096_q15[6144]; +extern const float32_t twiddleCoef_rfft_32[32]; +extern const float32_t twiddleCoef_rfft_64[64]; +extern const float32_t twiddleCoef_rfft_128[128]; +extern const float32_t twiddleCoef_rfft_256[256]; +extern const float32_t twiddleCoef_rfft_512[512]; +extern const float32_t twiddleCoef_rfft_1024[1024]; +extern const float32_t twiddleCoef_rfft_2048[2048]; +extern const float32_t twiddleCoef_rfft_4096[4096]; + + +/* floating-point bit reversal tables */ +#define ARMBITREVINDEXTABLE__16_TABLE_LENGTH ((uint16_t)20 ) +#define ARMBITREVINDEXTABLE__32_TABLE_LENGTH ((uint16_t)48 ) +#define ARMBITREVINDEXTABLE__64_TABLE_LENGTH ((uint16_t)56 ) +#define ARMBITREVINDEXTABLE_128_TABLE_LENGTH ((uint16_t)208 ) +#define ARMBITREVINDEXTABLE_256_TABLE_LENGTH ((uint16_t)440 ) +#define ARMBITREVINDEXTABLE_512_TABLE_LENGTH ((uint16_t)448 ) +#define ARMBITREVINDEXTABLE1024_TABLE_LENGTH ((uint16_t)1800) +#define ARMBITREVINDEXTABLE2048_TABLE_LENGTH ((uint16_t)3808) +#define ARMBITREVINDEXTABLE4096_TABLE_LENGTH ((uint16_t)4032) + +extern const uint16_t armBitRevIndexTable16[ARMBITREVINDEXTABLE__16_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable32[ARMBITREVINDEXTABLE__32_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable64[ARMBITREVINDEXTABLE__64_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable128[ARMBITREVINDEXTABLE_128_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable256[ARMBITREVINDEXTABLE_256_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable512[ARMBITREVINDEXTABLE_512_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable1024[ARMBITREVINDEXTABLE1024_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable2048[ARMBITREVINDEXTABLE2048_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable4096[ARMBITREVINDEXTABLE4096_TABLE_LENGTH]; + +/* fixed-point bit reversal tables */ +#define ARMBITREVINDEXTABLE_FIXED___16_TABLE_LENGTH ((uint16_t)12 ) +#define ARMBITREVINDEXTABLE_FIXED___32_TABLE_LENGTH ((uint16_t)24 ) +#define ARMBITREVINDEXTABLE_FIXED___64_TABLE_LENGTH ((uint16_t)56 ) +#define ARMBITREVINDEXTABLE_FIXED__128_TABLE_LENGTH ((uint16_t)112 ) +#define ARMBITREVINDEXTABLE_FIXED__256_TABLE_LENGTH ((uint16_t)240 ) +#define ARMBITREVINDEXTABLE_FIXED__512_TABLE_LENGTH ((uint16_t)480 ) +#define ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH ((uint16_t)992 ) +#define ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH ((uint16_t)1984) +#define ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH ((uint16_t)4032) + +extern const uint16_t armBitRevIndexTable_fixed_16[ARMBITREVINDEXTABLE_FIXED___16_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable_fixed_32[ARMBITREVINDEXTABLE_FIXED___32_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable_fixed_64[ARMBITREVINDEXTABLE_FIXED___64_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable_fixed_128[ARMBITREVINDEXTABLE_FIXED__128_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable_fixed_256[ARMBITREVINDEXTABLE_FIXED__256_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable_fixed_512[ARMBITREVINDEXTABLE_FIXED__512_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable_fixed_1024[ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable_fixed_2048[ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH]; +extern const uint16_t armBitRevIndexTable_fixed_4096[ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH]; + +/* Tables for Fast Math Sine and Cosine */ +extern const float32_t sinTable_f32[FAST_MATH_TABLE_SIZE + 1]; +extern const q31_t sinTable_q31[FAST_MATH_TABLE_SIZE + 1]; +extern const q15_t sinTable_q15[FAST_MATH_TABLE_SIZE + 1]; + +#endif /* ARM_COMMON_TABLES_H */ diff --git a/Drivers/CMSIS/Include/arm_const_structs.h b/Core/Inc/arm_const_structs.h similarity index 97% rename from Drivers/CMSIS/Include/arm_const_structs.h rename to Core/Inc/arm_const_structs.h index 54595f55..726d06eb 100644 --- a/Drivers/CMSIS/Include/arm_const_structs.h +++ b/Core/Inc/arm_const_structs.h @@ -1,79 +1,79 @@ -/* ---------------------------------------------------------------------- -* Copyright (C) 2010-2014 ARM Limited. All rights reserved. -* -* $Date: 19. March 2015 -* $Revision: V.1.4.5 -* -* Project: CMSIS DSP Library -* Title: arm_const_structs.h -* -* Description: This file has constant structs that are initialized for -* user convenience. For example, some can be given as -* arguments to the arm_cfft_f32() function. -* -* Target Processor: Cortex-M4/Cortex-M3 -* -* Redistribution and use in source and binary forms, with or without -* modification, are permitted provided that the following conditions -* are met: -* - Redistributions of source code must retain the above copyright -* notice, this list of conditions and the following disclaimer. -* - Redistributions in binary form must reproduce the above copyright -* notice, this list of conditions and the following disclaimer in -* the documentation and/or other materials provided with the -* distribution. -* - Neither the name of ARM LIMITED nor the names of its contributors -* may be used to endorse or promote products derived from this -* software without specific prior written permission. -* -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -* POSSIBILITY OF SUCH DAMAGE. -* -------------------------------------------------------------------- */ - -#ifndef _ARM_CONST_STRUCTS_H -#define _ARM_CONST_STRUCTS_H - -#include "arm_math.h" -#include "arm_common_tables.h" - - extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len16; - extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len32; - extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len64; - extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len128; - extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len256; - extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len512; - extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len1024; - extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len2048; - extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len4096; - - extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len16; - extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len32; - extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len64; - extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len128; - extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len256; - extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len512; - extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len1024; - extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len2048; - extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len4096; - - extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len16; - extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len32; - extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len64; - extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len128; - extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len256; - extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len512; - extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len1024; - extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len2048; - extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len4096; - -#endif +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2014 ARM Limited. All rights reserved. +* +* $Date: 19. March 2015 +* $Revision: V.1.4.5 +* +* Project: CMSIS DSP Library +* Title: arm_const_structs.h +* +* Description: This file has constant structs that are initialized for +* user convenience. For example, some can be given as +* arguments to the arm_cfft_f32() function. +* +* Target Processor: Cortex-M4/Cortex-M3 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. +* -------------------------------------------------------------------- */ + +#ifndef _ARM_CONST_STRUCTS_H +#define _ARM_CONST_STRUCTS_H + +#include "arm_math.h" +#include "arm_common_tables.h" + + extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len16; + extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len32; + extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len64; + extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len128; + extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len256; + extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len512; + extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len1024; + extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len2048; + extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len4096; + + extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len16; + extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len32; + extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len64; + extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len128; + extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len256; + extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len512; + extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len1024; + extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len2048; + extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len4096; + + extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len16; + extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len32; + extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len64; + extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len128; + extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len256; + extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len512; + extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len1024; + extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len2048; + extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len4096; + +#endif diff --git a/Drivers/CMSIS/Include/arm_math.h b/Core/Inc/arm_math.h similarity index 97% rename from Drivers/CMSIS/Include/arm_math.h rename to Core/Inc/arm_math.h index 580cbbde..d33f8a9b 100644 --- a/Drivers/CMSIS/Include/arm_math.h +++ b/Core/Inc/arm_math.h @@ -1,7154 +1,7154 @@ -/* ---------------------------------------------------------------------- -* Copyright (C) 2010-2015 ARM Limited. All rights reserved. -* -* $Date: 20. October 2015 -* $Revision: V1.4.5 b -* -* Project: CMSIS DSP Library -* Title: arm_math.h -* -* Description: Public header file for CMSIS DSP Library -* -* Target Processor: Cortex-M7/Cortex-M4/Cortex-M3/Cortex-M0 -* -* Redistribution and use in source and binary forms, with or without -* modification, are permitted provided that the following conditions -* are met: -* - Redistributions of source code must retain the above copyright -* notice, this list of conditions and the following disclaimer. -* - Redistributions in binary form must reproduce the above copyright -* notice, this list of conditions and the following disclaimer in -* the documentation and/or other materials provided with the -* distribution. -* - Neither the name of ARM LIMITED nor the names of its contributors -* may be used to endorse or promote products derived from this -* software without specific prior written permission. -* -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -* POSSIBILITY OF SUCH DAMAGE. - * -------------------------------------------------------------------- */ - -/** - \mainpage CMSIS DSP Software Library - * - * Introduction - * ------------ - * - * This user manual describes the CMSIS DSP software library, - * a suite of common signal processing functions for use on Cortex-M processor based devices. - * - * The library is divided into a number of functions each covering a specific category: - * - Basic math functions - * - Fast math functions - * - Complex math functions - * - Filters - * - Matrix functions - * - Transforms - * - Motor control functions - * - Statistical functions - * - Support functions - * - Interpolation functions - * - * The library has separate functions for operating on 8-bit integers, 16-bit integers, - * 32-bit integer and 32-bit floating-point values. - * - * Using the Library - * ------------ - * - * The library installer contains prebuilt versions of the libraries in the Lib folder. - * - arm_cortexM7lfdp_math.lib (Little endian and Double Precision Floating Point Unit on Cortex-M7) - * - arm_cortexM7bfdp_math.lib (Big endian and Double Precision Floating Point Unit on Cortex-M7) - * - arm_cortexM7lfsp_math.lib (Little endian and Single Precision Floating Point Unit on Cortex-M7) - * - arm_cortexM7bfsp_math.lib (Big endian and Single Precision Floating Point Unit on Cortex-M7) - * - arm_cortexM7l_math.lib (Little endian on Cortex-M7) - * - arm_cortexM7b_math.lib (Big endian on Cortex-M7) - * - arm_cortexM4lf_math.lib (Little endian and Floating Point Unit on Cortex-M4) - * - arm_cortexM4bf_math.lib (Big endian and Floating Point Unit on Cortex-M4) - * - arm_cortexM4l_math.lib (Little endian on Cortex-M4) - * - arm_cortexM4b_math.lib (Big endian on Cortex-M4) - * - arm_cortexM3l_math.lib (Little endian on Cortex-M3) - * - arm_cortexM3b_math.lib (Big endian on Cortex-M3) - * - arm_cortexM0l_math.lib (Little endian on Cortex-M0 / CortexM0+) - * - arm_cortexM0b_math.lib (Big endian on Cortex-M0 / CortexM0+) - * - * The library functions are declared in the public file arm_math.h which is placed in the Include folder. - * Simply include this file and link the appropriate library in the application and begin calling the library functions. The Library supports single - * public header file arm_math.h for Cortex-M7/M4/M3/M0/M0+ with little endian and big endian. Same header file will be used for floating point unit(FPU) variants. - * Define the appropriate pre processor MACRO ARM_MATH_CM7 or ARM_MATH_CM4 or ARM_MATH_CM3 or - * ARM_MATH_CM0 or ARM_MATH_CM0PLUS depending on the target processor in the application. - * - * Examples - * -------- - * - * The library ships with a number of examples which demonstrate how to use the library functions. - * - * Toolchain Support - * ------------ - * - * The library has been developed and tested with MDK-ARM version 5.14.0.0 - * The library is being tested in GCC and IAR toolchains and updates on this activity will be made available shortly. - * - * Building the Library - * ------------ - * - * The library installer contains a project file to re build libraries on MDK-ARM Tool chain in the CMSIS\\DSP_Lib\\Source\\ARM folder. - * - arm_cortexM_math.uvprojx - * - * - * The libraries can be built by opening the arm_cortexM_math.uvprojx project in MDK-ARM, selecting a specific target, and defining the optional pre processor MACROs detailed above. - * - * Pre-processor Macros - * ------------ - * - * Each library project have differant pre-processor macros. - * - * - UNALIGNED_SUPPORT_DISABLE: - * - * Define macro UNALIGNED_SUPPORT_DISABLE, If the silicon does not support unaligned memory access - * - * - ARM_MATH_BIG_ENDIAN: - * - * Define macro ARM_MATH_BIG_ENDIAN to build the library for big endian targets. By default library builds for little endian targets. - * - * - ARM_MATH_MATRIX_CHECK: - * - * Define macro ARM_MATH_MATRIX_CHECK for checking on the input and output sizes of matrices - * - * - ARM_MATH_ROUNDING: - * - * Define macro ARM_MATH_ROUNDING for rounding on support functions - * - * - ARM_MATH_CMx: - * - * Define macro ARM_MATH_CM4 for building the library on Cortex-M4 target, ARM_MATH_CM3 for building library on Cortex-M3 target - * and ARM_MATH_CM0 for building library on Cortex-M0 target, ARM_MATH_CM0PLUS for building library on Cortex-M0+ target, and - * ARM_MATH_CM7 for building the library on cortex-M7. - * - * - __FPU_PRESENT: - * - * Initialize macro __FPU_PRESENT = 1 when building on FPU supported Targets. Enable this macro for M4bf and M4lf libraries - * - *
- * CMSIS-DSP in ARM::CMSIS Pack - * ----------------------------- - * - * The following files relevant to CMSIS-DSP are present in the ARM::CMSIS Pack directories: - * |File/Folder |Content | - * |------------------------------|------------------------------------------------------------------------| - * |\b CMSIS\\Documentation\\DSP | This documentation | - * |\b CMSIS\\DSP_Lib | Software license agreement (license.txt) | - * |\b CMSIS\\DSP_Lib\\Examples | Example projects demonstrating the usage of the library functions | - * |\b CMSIS\\DSP_Lib\\Source | Source files for rebuilding the library | - * - *
- * Revision History of CMSIS-DSP - * ------------ - * Please refer to \ref ChangeLog_pg. - * - * Copyright Notice - * ------------ - * - * Copyright (C) 2010-2015 ARM Limited. All rights reserved. - */ - - -/** - * @defgroup groupMath Basic Math Functions - */ - -/** - * @defgroup groupFastMath Fast Math Functions - * This set of functions provides a fast approximation to sine, cosine, and square root. - * As compared to most of the other functions in the CMSIS math library, the fast math functions - * operate on individual values and not arrays. - * There are separate functions for Q15, Q31, and floating-point data. - * - */ - -/** - * @defgroup groupCmplxMath Complex Math Functions - * This set of functions operates on complex data vectors. - * The data in the complex arrays is stored in an interleaved fashion - * (real, imag, real, imag, ...). - * In the API functions, the number of samples in a complex array refers - * to the number of complex values; the array contains twice this number of - * real values. - */ - -/** - * @defgroup groupFilters Filtering Functions - */ - -/** - * @defgroup groupMatrix Matrix Functions - * - * This set of functions provides basic matrix math operations. - * The functions operate on matrix data structures. For example, - * the type - * definition for the floating-point matrix structure is shown - * below: - *
- *     typedef struct
- *     {
- *       uint16_t numRows;     // number of rows of the matrix.
- *       uint16_t numCols;     // number of columns of the matrix.
- *       float32_t *pData;     // points to the data of the matrix.
- *     } arm_matrix_instance_f32;
- * 
- * There are similar definitions for Q15 and Q31 data types. - * - * The structure specifies the size of the matrix and then points to - * an array of data. The array is of size numRows X numCols - * and the values are arranged in row order. That is, the - * matrix element (i, j) is stored at: - *
- *     pData[i*numCols + j]
- * 
- * - * \par Init Functions - * There is an associated initialization function for each type of matrix - * data structure. - * The initialization function sets the values of the internal structure fields. - * Refer to the function arm_mat_init_f32(), arm_mat_init_q31() - * and arm_mat_init_q15() for floating-point, Q31 and Q15 types, respectively. - * - * \par - * Use of the initialization function is optional. However, if initialization function is used - * then the instance structure cannot be placed into a const data section. - * To place the instance structure in a const data - * section, manually initialize the data structure. For example: - *
- * arm_matrix_instance_f32 S = {nRows, nColumns, pData};
- * arm_matrix_instance_q31 S = {nRows, nColumns, pData};
- * arm_matrix_instance_q15 S = {nRows, nColumns, pData};
- * 
- * where nRows specifies the number of rows, nColumns - * specifies the number of columns, and pData points to the - * data array. - * - * \par Size Checking - * By default all of the matrix functions perform size checking on the input and - * output matrices. For example, the matrix addition function verifies that the - * two input matrices and the output matrix all have the same number of rows and - * columns. If the size check fails the functions return: - *
- *     ARM_MATH_SIZE_MISMATCH
- * 
- * Otherwise the functions return - *
- *     ARM_MATH_SUCCESS
- * 
- * There is some overhead associated with this matrix size checking. - * The matrix size checking is enabled via the \#define - *
- *     ARM_MATH_MATRIX_CHECK
- * 
- * within the library project settings. By default this macro is defined - * and size checking is enabled. By changing the project settings and - * undefining this macro size checking is eliminated and the functions - * run a bit faster. With size checking disabled the functions always - * return ARM_MATH_SUCCESS. - */ - -/** - * @defgroup groupTransforms Transform Functions - */ - -/** - * @defgroup groupController Controller Functions - */ - -/** - * @defgroup groupStats Statistics Functions - */ -/** - * @defgroup groupSupport Support Functions - */ - -/** - * @defgroup groupInterpolation Interpolation Functions - * These functions perform 1- and 2-dimensional interpolation of data. - * Linear interpolation is used for 1-dimensional data and - * bilinear interpolation is used for 2-dimensional data. - */ - -/** - * @defgroup groupExamples Examples - */ -#ifndef _ARM_MATH_H -#define _ARM_MATH_H - -/* ignore some GCC warnings */ -#if defined ( __GNUC__ ) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wsign-conversion" -#pragma GCC diagnostic ignored "-Wconversion" -#pragma GCC diagnostic ignored "-Wunused-parameter" -#endif - -#define __CMSIS_GENERIC /* disable NVIC and Systick functions */ - -#if defined(ARM_MATH_CM7) - #include "core_cm7.h" -#elif defined (ARM_MATH_CM4) - #include "core_cm4.h" -#elif defined (ARM_MATH_CM3) - #include "core_cm3.h" -#elif defined (ARM_MATH_CM0) - #include "core_cm0.h" - #define ARM_MATH_CM0_FAMILY -#elif defined (ARM_MATH_CM0PLUS) - #include "core_cm0plus.h" - #define ARM_MATH_CM0_FAMILY -#else - #error "Define according the used Cortex core ARM_MATH_CM7, ARM_MATH_CM4, ARM_MATH_CM3, ARM_MATH_CM0PLUS or ARM_MATH_CM0" -#endif - -#undef __CMSIS_GENERIC /* enable NVIC and Systick functions */ -#include "string.h" -#include "math.h" -#ifdef __cplusplus -extern "C" -{ -#endif - - - /** - * @brief Macros required for reciprocal calculation in Normalized LMS - */ - -#define DELTA_Q31 (0x100) -#define DELTA_Q15 0x5 -#define INDEX_MASK 0x0000003F -#ifndef PI -#define PI 3.14159265358979f -#endif - - /** - * @brief Macros required for SINE and COSINE Fast math approximations - */ - -#define FAST_MATH_TABLE_SIZE 512 -#define FAST_MATH_Q31_SHIFT (32 - 10) -#define FAST_MATH_Q15_SHIFT (16 - 10) -#define CONTROLLER_Q31_SHIFT (32 - 9) -#define TABLE_SIZE 256 -#define TABLE_SPACING_Q31 0x400000 -#define TABLE_SPACING_Q15 0x80 - - /** - * @brief Macros required for SINE and COSINE Controller functions - */ - /* 1.31(q31) Fixed value of 2/360 */ - /* -1 to +1 is divided into 360 values so total spacing is (2/360) */ -#define INPUT_SPACING 0xB60B61 - - /** - * @brief Macro for Unaligned Support - */ -#ifndef UNALIGNED_SUPPORT_DISABLE - #define ALIGN4 -#else - #if defined (__GNUC__) - #define ALIGN4 __attribute__((aligned(4))) - #else - #define ALIGN4 __align(4) - #endif -#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ - - /** - * @brief Error status returned by some functions in the library. - */ - - typedef enum - { - ARM_MATH_SUCCESS = 0, /**< No error */ - ARM_MATH_ARGUMENT_ERROR = -1, /**< One or more arguments are incorrect */ - ARM_MATH_LENGTH_ERROR = -2, /**< Length of data buffer is incorrect */ - ARM_MATH_SIZE_MISMATCH = -3, /**< Size of matrices is not compatible with the operation. */ - ARM_MATH_NANINF = -4, /**< Not-a-number (NaN) or infinity is generated */ - ARM_MATH_SINGULAR = -5, /**< Generated by matrix inversion if the input matrix is singular and cannot be inverted. */ - ARM_MATH_TEST_FAILURE = -6 /**< Test Failed */ - } arm_status; - - /** - * @brief 8-bit fractional data type in 1.7 format. - */ - typedef int8_t q7_t; - - /** - * @brief 16-bit fractional data type in 1.15 format. - */ - typedef int16_t q15_t; - - /** - * @brief 32-bit fractional data type in 1.31 format. - */ - typedef int32_t q31_t; - - /** - * @brief 64-bit fractional data type in 1.63 format. - */ - typedef int64_t q63_t; - - /** - * @brief 32-bit floating-point type definition. - */ - typedef float float32_t; - - /** - * @brief 64-bit floating-point type definition. - */ - typedef double float64_t; - - /** - * @brief definition to read/write two 16 bit values. - */ -#if defined __CC_ARM - #define __SIMD32_TYPE int32_t __packed - #define CMSIS_UNUSED __attribute__((unused)) - -#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #define __SIMD32_TYPE int32_t - #define CMSIS_UNUSED __attribute__((unused)) - -#elif defined __GNUC__ - #define __SIMD32_TYPE int32_t - #define CMSIS_UNUSED __attribute__((unused)) - -#elif defined __ICCARM__ - #define __SIMD32_TYPE int32_t __packed - #define CMSIS_UNUSED - -#elif defined __CSMC__ - #define __SIMD32_TYPE int32_t - #define CMSIS_UNUSED - -#elif defined __TASKING__ - #define __SIMD32_TYPE __unaligned int32_t - #define CMSIS_UNUSED - -#else - #error Unknown compiler -#endif - -#define __SIMD32(addr) (*(__SIMD32_TYPE **) & (addr)) -#define __SIMD32_CONST(addr) ((__SIMD32_TYPE *)(addr)) -#define _SIMD32_OFFSET(addr) (*(__SIMD32_TYPE *) (addr)) -#define __SIMD64(addr) (*(int64_t **) & (addr)) - -#if defined (ARM_MATH_CM3) || defined (ARM_MATH_CM0_FAMILY) - /** - * @brief definition to pack two 16 bit values. - */ -#define __PKHBT(ARG1, ARG2, ARG3) ( (((int32_t)(ARG1) << 0) & (int32_t)0x0000FFFF) | \ - (((int32_t)(ARG2) << ARG3) & (int32_t)0xFFFF0000) ) -#define __PKHTB(ARG1, ARG2, ARG3) ( (((int32_t)(ARG1) << 0) & (int32_t)0xFFFF0000) | \ - (((int32_t)(ARG2) >> ARG3) & (int32_t)0x0000FFFF) ) - -#endif - - - /** - * @brief definition to pack four 8 bit values. - */ -#ifndef ARM_MATH_BIG_ENDIAN - -#define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v0) << 0) & (int32_t)0x000000FF) | \ - (((int32_t)(v1) << 8) & (int32_t)0x0000FF00) | \ - (((int32_t)(v2) << 16) & (int32_t)0x00FF0000) | \ - (((int32_t)(v3) << 24) & (int32_t)0xFF000000) ) -#else - -#define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v3) << 0) & (int32_t)0x000000FF) | \ - (((int32_t)(v2) << 8) & (int32_t)0x0000FF00) | \ - (((int32_t)(v1) << 16) & (int32_t)0x00FF0000) | \ - (((int32_t)(v0) << 24) & (int32_t)0xFF000000) ) - -#endif - - - /** - * @brief Clips Q63 to Q31 values. - */ - static __INLINE q31_t clip_q63_to_q31( - q63_t x) - { - return ((q31_t) (x >> 32) != ((q31_t) x >> 31)) ? - ((0x7FFFFFFF ^ ((q31_t) (x >> 63)))) : (q31_t) x; - } - - /** - * @brief Clips Q63 to Q15 values. - */ - static __INLINE q15_t clip_q63_to_q15( - q63_t x) - { - return ((q31_t) (x >> 32) != ((q31_t) x >> 31)) ? - ((0x7FFF ^ ((q15_t) (x >> 63)))) : (q15_t) (x >> 15); - } - - /** - * @brief Clips Q31 to Q7 values. - */ - static __INLINE q7_t clip_q31_to_q7( - q31_t x) - { - return ((q31_t) (x >> 24) != ((q31_t) x >> 23)) ? - ((0x7F ^ ((q7_t) (x >> 31)))) : (q7_t) x; - } - - /** - * @brief Clips Q31 to Q15 values. - */ - static __INLINE q15_t clip_q31_to_q15( - q31_t x) - { - return ((q31_t) (x >> 16) != ((q31_t) x >> 15)) ? - ((0x7FFF ^ ((q15_t) (x >> 31)))) : (q15_t) x; - } - - /** - * @brief Multiplies 32 X 64 and returns 32 bit result in 2.30 format. - */ - - static __INLINE q63_t mult32x64( - q63_t x, - q31_t y) - { - return ((((q63_t) (x & 0x00000000FFFFFFFF) * y) >> 32) + - (((q63_t) (x >> 32) * y))); - } - -/* - #if defined (ARM_MATH_CM0_FAMILY) && defined ( __CC_ARM ) - #define __CLZ __clz - #endif - */ -/* note: function can be removed when all toolchain support __CLZ for Cortex-M0 */ -#if defined (ARM_MATH_CM0_FAMILY) && ((defined (__ICCARM__)) ) - static __INLINE uint32_t __CLZ( - q31_t data); - - static __INLINE uint32_t __CLZ( - q31_t data) - { - uint32_t count = 0; - uint32_t mask = 0x80000000; - - while((data & mask) == 0) - { - count += 1u; - mask = mask >> 1u; - } - - return (count); - } -#endif - - /** - * @brief Function to Calculates 1/in (reciprocal) value of Q31 Data type. - */ - - static __INLINE uint32_t arm_recip_q31( - q31_t in, - q31_t * dst, - q31_t * pRecipTable) - { - q31_t out; - uint32_t tempVal; - uint32_t index, i; - uint32_t signBits; - - if(in > 0) - { - signBits = ((uint32_t) (__CLZ( in) - 1)); - } - else - { - signBits = ((uint32_t) (__CLZ(-in) - 1)); - } - - /* Convert input sample to 1.31 format */ - in = (in << signBits); - - /* calculation of index for initial approximated Val */ - index = (uint32_t)(in >> 24); - index = (index & INDEX_MASK); - - /* 1.31 with exp 1 */ - out = pRecipTable[index]; - - /* calculation of reciprocal value */ - /* running approximation for two iterations */ - for (i = 0u; i < 2u; i++) - { - tempVal = (uint32_t) (((q63_t) in * out) >> 31); - tempVal = 0x7FFFFFFFu - tempVal; - /* 1.31 with exp 1 */ - /* out = (q31_t) (((q63_t) out * tempVal) >> 30); */ - out = clip_q63_to_q31(((q63_t) out * tempVal) >> 30); - } - - /* write output */ - *dst = out; - - /* return num of signbits of out = 1/in value */ - return (signBits + 1u); - } - - - /** - * @brief Function to Calculates 1/in (reciprocal) value of Q15 Data type. - */ - static __INLINE uint32_t arm_recip_q15( - q15_t in, - q15_t * dst, - q15_t * pRecipTable) - { - q15_t out = 0; - uint32_t tempVal = 0; - uint32_t index = 0, i = 0; - uint32_t signBits = 0; - - if(in > 0) - { - signBits = ((uint32_t)(__CLZ( in) - 17)); - } - else - { - signBits = ((uint32_t)(__CLZ(-in) - 17)); - } - - /* Convert input sample to 1.15 format */ - in = (in << signBits); - - /* calculation of index for initial approximated Val */ - index = (uint32_t)(in >> 8); - index = (index & INDEX_MASK); - - /* 1.15 with exp 1 */ - out = pRecipTable[index]; - - /* calculation of reciprocal value */ - /* running approximation for two iterations */ - for (i = 0u; i < 2u; i++) - { - tempVal = (uint32_t) (((q31_t) in * out) >> 15); - tempVal = 0x7FFFu - tempVal; - /* 1.15 with exp 1 */ - out = (q15_t) (((q31_t) out * tempVal) >> 14); - /* out = clip_q31_to_q15(((q31_t) out * tempVal) >> 14); */ - } - - /* write output */ - *dst = out; - - /* return num of signbits of out = 1/in value */ - return (signBits + 1); - } - - - /* - * @brief C custom defined intrinisic function for only M0 processors - */ -#if defined(ARM_MATH_CM0_FAMILY) - static __INLINE q31_t __SSAT( - q31_t x, - uint32_t y) - { - int32_t posMax, negMin; - uint32_t i; - - posMax = 1; - for (i = 0; i < (y - 1); i++) - { - posMax = posMax * 2; - } - - if(x > 0) - { - posMax = (posMax - 1); - - if(x > posMax) - { - x = posMax; - } - } - else - { - negMin = -posMax; - - if(x < negMin) - { - x = negMin; - } - } - return (x); - } -#endif /* end of ARM_MATH_CM0_FAMILY */ - - - /* - * @brief C custom defined intrinsic function for M3 and M0 processors - */ -#if defined (ARM_MATH_CM3) || defined (ARM_MATH_CM0_FAMILY) - - /* - * @brief C custom defined QADD8 for M3 and M0 processors - */ - static __INLINE uint32_t __QADD8( - uint32_t x, - uint32_t y) - { - q31_t r, s, t, u; - - r = __SSAT(((((q31_t)x << 24) >> 24) + (((q31_t)y << 24) >> 24)), 8) & (int32_t)0x000000FF; - s = __SSAT(((((q31_t)x << 16) >> 24) + (((q31_t)y << 16) >> 24)), 8) & (int32_t)0x000000FF; - t = __SSAT(((((q31_t)x << 8) >> 24) + (((q31_t)y << 8) >> 24)), 8) & (int32_t)0x000000FF; - u = __SSAT(((((q31_t)x ) >> 24) + (((q31_t)y ) >> 24)), 8) & (int32_t)0x000000FF; - - return ((uint32_t)((u << 24) | (t << 16) | (s << 8) | (r ))); - } - - - /* - * @brief C custom defined QSUB8 for M3 and M0 processors - */ - static __INLINE uint32_t __QSUB8( - uint32_t x, - uint32_t y) - { - q31_t r, s, t, u; - - r = __SSAT(((((q31_t)x << 24) >> 24) - (((q31_t)y << 24) >> 24)), 8) & (int32_t)0x000000FF; - s = __SSAT(((((q31_t)x << 16) >> 24) - (((q31_t)y << 16) >> 24)), 8) & (int32_t)0x000000FF; - t = __SSAT(((((q31_t)x << 8) >> 24) - (((q31_t)y << 8) >> 24)), 8) & (int32_t)0x000000FF; - u = __SSAT(((((q31_t)x ) >> 24) - (((q31_t)y ) >> 24)), 8) & (int32_t)0x000000FF; - - return ((uint32_t)((u << 24) | (t << 16) | (s << 8) | (r ))); - } - - - /* - * @brief C custom defined QADD16 for M3 and M0 processors - */ - static __INLINE uint32_t __QADD16( - uint32_t x, - uint32_t y) - { -/* q31_t r, s; without initialisation 'arm_offset_q15 test' fails but 'intrinsic' tests pass! for armCC */ - q31_t r = 0, s = 0; - - r = __SSAT(((((q31_t)x << 16) >> 16) + (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF; - s = __SSAT(((((q31_t)x ) >> 16) + (((q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF; - - return ((uint32_t)((s << 16) | (r ))); - } - - - /* - * @brief C custom defined SHADD16 for M3 and M0 processors - */ - static __INLINE uint32_t __SHADD16( - uint32_t x, - uint32_t y) - { - q31_t r, s; - - r = (((((q31_t)x << 16) >> 16) + (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF; - s = (((((q31_t)x ) >> 16) + (((q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF; - - return ((uint32_t)((s << 16) | (r ))); - } - - - /* - * @brief C custom defined QSUB16 for M3 and M0 processors - */ - static __INLINE uint32_t __QSUB16( - uint32_t x, - uint32_t y) - { - q31_t r, s; - - r = __SSAT(((((q31_t)x << 16) >> 16) - (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF; - s = __SSAT(((((q31_t)x ) >> 16) - (((q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF; - - return ((uint32_t)((s << 16) | (r ))); - } - - - /* - * @brief C custom defined SHSUB16 for M3 and M0 processors - */ - static __INLINE uint32_t __SHSUB16( - uint32_t x, - uint32_t y) - { - q31_t r, s; - - r = (((((q31_t)x << 16) >> 16) - (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF; - s = (((((q31_t)x ) >> 16) - (((q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF; - - return ((uint32_t)((s << 16) | (r ))); - } - - - /* - * @brief C custom defined QASX for M3 and M0 processors - */ - static __INLINE uint32_t __QASX( - uint32_t x, - uint32_t y) - { - q31_t r, s; - - r = __SSAT(((((q31_t)x << 16) >> 16) - (((q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF; - s = __SSAT(((((q31_t)x ) >> 16) + (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF; - - return ((uint32_t)((s << 16) | (r ))); - } - - - /* - * @brief C custom defined SHASX for M3 and M0 processors - */ - static __INLINE uint32_t __SHASX( - uint32_t x, - uint32_t y) - { - q31_t r, s; - - r = (((((q31_t)x << 16) >> 16) - (((q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF; - s = (((((q31_t)x ) >> 16) + (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF; - - return ((uint32_t)((s << 16) | (r ))); - } - - - /* - * @brief C custom defined QSAX for M3 and M0 processors - */ - static __INLINE uint32_t __QSAX( - uint32_t x, - uint32_t y) - { - q31_t r, s; - - r = __SSAT(((((q31_t)x << 16) >> 16) + (((q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF; - s = __SSAT(((((q31_t)x ) >> 16) - (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF; - - return ((uint32_t)((s << 16) | (r ))); - } - - - /* - * @brief C custom defined SHSAX for M3 and M0 processors - */ - static __INLINE uint32_t __SHSAX( - uint32_t x, - uint32_t y) - { - q31_t r, s; - - r = (((((q31_t)x << 16) >> 16) + (((q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF; - s = (((((q31_t)x ) >> 16) - (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF; - - return ((uint32_t)((s << 16) | (r ))); - } - - - /* - * @brief C custom defined SMUSDX for M3 and M0 processors - */ - static __INLINE uint32_t __SMUSDX( - uint32_t x, - uint32_t y) - { - return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) - - ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) )); - } - - /* - * @brief C custom defined SMUADX for M3 and M0 processors - */ - static __INLINE uint32_t __SMUADX( - uint32_t x, - uint32_t y) - { - return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) + - ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) )); - } - - - /* - * @brief C custom defined QADD for M3 and M0 processors - */ - static __INLINE int32_t __QADD( - int32_t x, - int32_t y) - { - return ((int32_t)(clip_q63_to_q31((q63_t)x + (q31_t)y))); - } - - - /* - * @brief C custom defined QSUB for M3 and M0 processors - */ - static __INLINE int32_t __QSUB( - int32_t x, - int32_t y) - { - return ((int32_t)(clip_q63_to_q31((q63_t)x - (q31_t)y))); - } - - - /* - * @brief C custom defined SMLAD for M3 and M0 processors - */ - static __INLINE uint32_t __SMLAD( - uint32_t x, - uint32_t y, - uint32_t sum) - { - return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) + - ((((q31_t)x ) >> 16) * (((q31_t)y ) >> 16)) + - ( ((q31_t)sum ) ) )); - } - - - /* - * @brief C custom defined SMLADX for M3 and M0 processors - */ - static __INLINE uint32_t __SMLADX( - uint32_t x, - uint32_t y, - uint32_t sum) - { - return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) + - ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) + - ( ((q31_t)sum ) ) )); - } - - - /* - * @brief C custom defined SMLSDX for M3 and M0 processors - */ - static __INLINE uint32_t __SMLSDX( - uint32_t x, - uint32_t y, - uint32_t sum) - { - return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) - - ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) + - ( ((q31_t)sum ) ) )); - } - - - /* - * @brief C custom defined SMLALD for M3 and M0 processors - */ - static __INLINE uint64_t __SMLALD( - uint32_t x, - uint32_t y, - uint64_t sum) - { -/* return (sum + ((q15_t) (x >> 16) * (q15_t) (y >> 16)) + ((q15_t) x * (q15_t) y)); */ - return ((uint64_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) + - ((((q31_t)x ) >> 16) * (((q31_t)y ) >> 16)) + - ( ((q63_t)sum ) ) )); - } - - - /* - * @brief C custom defined SMLALDX for M3 and M0 processors - */ - static __INLINE uint64_t __SMLALDX( - uint32_t x, - uint32_t y, - uint64_t sum) - { -/* return (sum + ((q15_t) (x >> 16) * (q15_t) y)) + ((q15_t) x * (q15_t) (y >> 16)); */ - return ((uint64_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) + - ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) + - ( ((q63_t)sum ) ) )); - } - - - /* - * @brief C custom defined SMUAD for M3 and M0 processors - */ - static __INLINE uint32_t __SMUAD( - uint32_t x, - uint32_t y) - { - return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) + - ((((q31_t)x ) >> 16) * (((q31_t)y ) >> 16)) )); - } - - - /* - * @brief C custom defined SMUSD for M3 and M0 processors - */ - static __INLINE uint32_t __SMUSD( - uint32_t x, - uint32_t y) - { - return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) - - ((((q31_t)x ) >> 16) * (((q31_t)y ) >> 16)) )); - } - - - /* - * @brief C custom defined SXTB16 for M3 and M0 processors - */ - static __INLINE uint32_t __SXTB16( - uint32_t x) - { - return ((uint32_t)(((((q31_t)x << 24) >> 24) & (q31_t)0x0000FFFF) | - ((((q31_t)x << 8) >> 8) & (q31_t)0xFFFF0000) )); - } - -#endif /* defined (ARM_MATH_CM3) || defined (ARM_MATH_CM0_FAMILY) */ - - - /** - * @brief Instance structure for the Q7 FIR filter. - */ - typedef struct - { - uint16_t numTaps; /**< number of filter coefficients in the filter. */ - q7_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - q7_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ - } arm_fir_instance_q7; - - /** - * @brief Instance structure for the Q15 FIR filter. - */ - typedef struct - { - uint16_t numTaps; /**< number of filter coefficients in the filter. */ - q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ - } arm_fir_instance_q15; - - /** - * @brief Instance structure for the Q31 FIR filter. - */ - typedef struct - { - uint16_t numTaps; /**< number of filter coefficients in the filter. */ - q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ - } arm_fir_instance_q31; - - /** - * @brief Instance structure for the floating-point FIR filter. - */ - typedef struct - { - uint16_t numTaps; /**< number of filter coefficients in the filter. */ - float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ - } arm_fir_instance_f32; - - - /** - * @brief Processing function for the Q7 FIR filter. - * @param[in] S points to an instance of the Q7 FIR filter structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - */ - void arm_fir_q7( - const arm_fir_instance_q7 * S, - q7_t * pSrc, - q7_t * pDst, - uint32_t blockSize); - - - /** - * @brief Initialization function for the Q7 FIR filter. - * @param[in,out] S points to an instance of the Q7 FIR structure. - * @param[in] numTaps Number of filter coefficients in the filter. - * @param[in] pCoeffs points to the filter coefficients. - * @param[in] pState points to the state buffer. - * @param[in] blockSize number of samples that are processed. - */ - void arm_fir_init_q7( - arm_fir_instance_q7 * S, - uint16_t numTaps, - q7_t * pCoeffs, - q7_t * pState, - uint32_t blockSize); - - - /** - * @brief Processing function for the Q15 FIR filter. - * @param[in] S points to an instance of the Q15 FIR structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - */ - void arm_fir_q15( - const arm_fir_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - - /** - * @brief Processing function for the fast Q15 FIR filter for Cortex-M3 and Cortex-M4. - * @param[in] S points to an instance of the Q15 FIR filter structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - */ - void arm_fir_fast_q15( - const arm_fir_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - - /** - * @brief Initialization function for the Q15 FIR filter. - * @param[in,out] S points to an instance of the Q15 FIR filter structure. - * @param[in] numTaps Number of filter coefficients in the filter. Must be even and greater than or equal to 4. - * @param[in] pCoeffs points to the filter coefficients. - * @param[in] pState points to the state buffer. - * @param[in] blockSize number of samples that are processed at a time. - * @return The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_ARGUMENT_ERROR if - * numTaps is not a supported value. - */ - arm_status arm_fir_init_q15( - arm_fir_instance_q15 * S, - uint16_t numTaps, - q15_t * pCoeffs, - q15_t * pState, - uint32_t blockSize); - - - /** - * @brief Processing function for the Q31 FIR filter. - * @param[in] S points to an instance of the Q31 FIR filter structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - */ - void arm_fir_q31( - const arm_fir_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - - /** - * @brief Processing function for the fast Q31 FIR filter for Cortex-M3 and Cortex-M4. - * @param[in] S points to an instance of the Q31 FIR structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - */ - void arm_fir_fast_q31( - const arm_fir_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - - /** - * @brief Initialization function for the Q31 FIR filter. - * @param[in,out] S points to an instance of the Q31 FIR structure. - * @param[in] numTaps Number of filter coefficients in the filter. - * @param[in] pCoeffs points to the filter coefficients. - * @param[in] pState points to the state buffer. - * @param[in] blockSize number of samples that are processed at a time. - */ - void arm_fir_init_q31( - arm_fir_instance_q31 * S, - uint16_t numTaps, - q31_t * pCoeffs, - q31_t * pState, - uint32_t blockSize); - - - /** - * @brief Processing function for the floating-point FIR filter. - * @param[in] S points to an instance of the floating-point FIR structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - */ - void arm_fir_f32( - const arm_fir_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - - /** - * @brief Initialization function for the floating-point FIR filter. - * @param[in,out] S points to an instance of the floating-point FIR filter structure. - * @param[in] numTaps Number of filter coefficients in the filter. - * @param[in] pCoeffs points to the filter coefficients. - * @param[in] pState points to the state buffer. - * @param[in] blockSize number of samples that are processed at a time. - */ - void arm_fir_init_f32( - arm_fir_instance_f32 * S, - uint16_t numTaps, - float32_t * pCoeffs, - float32_t * pState, - uint32_t blockSize); - - - /** - * @brief Instance structure for the Q15 Biquad cascade filter. - */ - typedef struct - { - int8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ - q15_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */ - q15_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */ - int8_t postShift; /**< Additional shift, in bits, applied to each output sample. */ - } arm_biquad_casd_df1_inst_q15; - - /** - * @brief Instance structure for the Q31 Biquad cascade filter. - */ - typedef struct - { - uint32_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ - q31_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */ - q31_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */ - uint8_t postShift; /**< Additional shift, in bits, applied to each output sample. */ - } arm_biquad_casd_df1_inst_q31; - - /** - * @brief Instance structure for the floating-point Biquad cascade filter. - */ - typedef struct - { - uint32_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ - float32_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */ - float32_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */ - } arm_biquad_casd_df1_inst_f32; - - - /** - * @brief Processing function for the Q15 Biquad cascade filter. - * @param[in] S points to an instance of the Q15 Biquad cascade structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - */ - void arm_biquad_cascade_df1_q15( - const arm_biquad_casd_df1_inst_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - - /** - * @brief Initialization function for the Q15 Biquad cascade filter. - * @param[in,out] S points to an instance of the Q15 Biquad cascade structure. - * @param[in] numStages number of 2nd order stages in the filter. - * @param[in] pCoeffs points to the filter coefficients. - * @param[in] pState points to the state buffer. - * @param[in] postShift Shift to be applied to the output. Varies according to the coefficients format - */ - void arm_biquad_cascade_df1_init_q15( - arm_biquad_casd_df1_inst_q15 * S, - uint8_t numStages, - q15_t * pCoeffs, - q15_t * pState, - int8_t postShift); - - - /** - * @brief Fast but less precise processing function for the Q15 Biquad cascade filter for Cortex-M3 and Cortex-M4. - * @param[in] S points to an instance of the Q15 Biquad cascade structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - */ - void arm_biquad_cascade_df1_fast_q15( - const arm_biquad_casd_df1_inst_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - - /** - * @brief Processing function for the Q31 Biquad cascade filter - * @param[in] S points to an instance of the Q31 Biquad cascade structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - */ - void arm_biquad_cascade_df1_q31( - const arm_biquad_casd_df1_inst_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - - /** - * @brief Fast but less precise processing function for the Q31 Biquad cascade filter for Cortex-M3 and Cortex-M4. - * @param[in] S points to an instance of the Q31 Biquad cascade structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - */ - void arm_biquad_cascade_df1_fast_q31( - const arm_biquad_casd_df1_inst_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - - /** - * @brief Initialization function for the Q31 Biquad cascade filter. - * @param[in,out] S points to an instance of the Q31 Biquad cascade structure. - * @param[in] numStages number of 2nd order stages in the filter. - * @param[in] pCoeffs points to the filter coefficients. - * @param[in] pState points to the state buffer. - * @param[in] postShift Shift to be applied to the output. Varies according to the coefficients format - */ - void arm_biquad_cascade_df1_init_q31( - arm_biquad_casd_df1_inst_q31 * S, - uint8_t numStages, - q31_t * pCoeffs, - q31_t * pState, - int8_t postShift); - - - /** - * @brief Processing function for the floating-point Biquad cascade filter. - * @param[in] S points to an instance of the floating-point Biquad cascade structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - */ - void arm_biquad_cascade_df1_f32( - const arm_biquad_casd_df1_inst_f32 * S, - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - - /** - * @brief Initialization function for the floating-point Biquad cascade filter. - * @param[in,out] S points to an instance of the floating-point Biquad cascade structure. - * @param[in] numStages number of 2nd order stages in the filter. - * @param[in] pCoeffs points to the filter coefficients. - * @param[in] pState points to the state buffer. - */ - void arm_biquad_cascade_df1_init_f32( - arm_biquad_casd_df1_inst_f32 * S, - uint8_t numStages, - float32_t * pCoeffs, - float32_t * pState); - - - /** - * @brief Instance structure for the floating-point matrix structure. - */ - typedef struct - { - uint16_t numRows; /**< number of rows of the matrix. */ - uint16_t numCols; /**< number of columns of the matrix. */ - float32_t *pData; /**< points to the data of the matrix. */ - } arm_matrix_instance_f32; - - - /** - * @brief Instance structure for the floating-point matrix structure. - */ - typedef struct - { - uint16_t numRows; /**< number of rows of the matrix. */ - uint16_t numCols; /**< number of columns of the matrix. */ - float64_t *pData; /**< points to the data of the matrix. */ - } arm_matrix_instance_f64; - - /** - * @brief Instance structure for the Q15 matrix structure. - */ - typedef struct - { - uint16_t numRows; /**< number of rows of the matrix. */ - uint16_t numCols; /**< number of columns of the matrix. */ - q15_t *pData; /**< points to the data of the matrix. */ - } arm_matrix_instance_q15; - - /** - * @brief Instance structure for the Q31 matrix structure. - */ - typedef struct - { - uint16_t numRows; /**< number of rows of the matrix. */ - uint16_t numCols; /**< number of columns of the matrix. */ - q31_t *pData; /**< points to the data of the matrix. */ - } arm_matrix_instance_q31; - - - /** - * @brief Floating-point matrix addition. - * @param[in] pSrcA points to the first input matrix structure - * @param[in] pSrcB points to the second input matrix structure - * @param[out] pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - arm_status arm_mat_add_f32( - const arm_matrix_instance_f32 * pSrcA, - const arm_matrix_instance_f32 * pSrcB, - arm_matrix_instance_f32 * pDst); - - - /** - * @brief Q15 matrix addition. - * @param[in] pSrcA points to the first input matrix structure - * @param[in] pSrcB points to the second input matrix structure - * @param[out] pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - arm_status arm_mat_add_q15( - const arm_matrix_instance_q15 * pSrcA, - const arm_matrix_instance_q15 * pSrcB, - arm_matrix_instance_q15 * pDst); - - - /** - * @brief Q31 matrix addition. - * @param[in] pSrcA points to the first input matrix structure - * @param[in] pSrcB points to the second input matrix structure - * @param[out] pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - arm_status arm_mat_add_q31( - const arm_matrix_instance_q31 * pSrcA, - const arm_matrix_instance_q31 * pSrcB, - arm_matrix_instance_q31 * pDst); - - - /** - * @brief Floating-point, complex, matrix multiplication. - * @param[in] pSrcA points to the first input matrix structure - * @param[in] pSrcB points to the second input matrix structure - * @param[out] pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - arm_status arm_mat_cmplx_mult_f32( - const arm_matrix_instance_f32 * pSrcA, - const arm_matrix_instance_f32 * pSrcB, - arm_matrix_instance_f32 * pDst); - - - /** - * @brief Q15, complex, matrix multiplication. - * @param[in] pSrcA points to the first input matrix structure - * @param[in] pSrcB points to the second input matrix structure - * @param[out] pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - arm_status arm_mat_cmplx_mult_q15( - const arm_matrix_instance_q15 * pSrcA, - const arm_matrix_instance_q15 * pSrcB, - arm_matrix_instance_q15 * pDst, - q15_t * pScratch); - - - /** - * @brief Q31, complex, matrix multiplication. - * @param[in] pSrcA points to the first input matrix structure - * @param[in] pSrcB points to the second input matrix structure - * @param[out] pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - arm_status arm_mat_cmplx_mult_q31( - const arm_matrix_instance_q31 * pSrcA, - const arm_matrix_instance_q31 * pSrcB, - arm_matrix_instance_q31 * pDst); - - - /** - * @brief Floating-point matrix transpose. - * @param[in] pSrc points to the input matrix - * @param[out] pDst points to the output matrix - * @return The function returns either ARM_MATH_SIZE_MISMATCH - * or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - arm_status arm_mat_trans_f32( - const arm_matrix_instance_f32 * pSrc, - arm_matrix_instance_f32 * pDst); - - - /** - * @brief Q15 matrix transpose. - * @param[in] pSrc points to the input matrix - * @param[out] pDst points to the output matrix - * @return The function returns either ARM_MATH_SIZE_MISMATCH - * or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - arm_status arm_mat_trans_q15( - const arm_matrix_instance_q15 * pSrc, - arm_matrix_instance_q15 * pDst); - - - /** - * @brief Q31 matrix transpose. - * @param[in] pSrc points to the input matrix - * @param[out] pDst points to the output matrix - * @return The function returns either ARM_MATH_SIZE_MISMATCH - * or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - arm_status arm_mat_trans_q31( - const arm_matrix_instance_q31 * pSrc, - arm_matrix_instance_q31 * pDst); - - - /** - * @brief Floating-point matrix multiplication - * @param[in] pSrcA points to the first input matrix structure - * @param[in] pSrcB points to the second input matrix structure - * @param[out] pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - arm_status arm_mat_mult_f32( - const arm_matrix_instance_f32 * pSrcA, - const arm_matrix_instance_f32 * pSrcB, - arm_matrix_instance_f32 * pDst); - - - /** - * @brief Q15 matrix multiplication - * @param[in] pSrcA points to the first input matrix structure - * @param[in] pSrcB points to the second input matrix structure - * @param[out] pDst points to output matrix structure - * @param[in] pState points to the array for storing intermediate results - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - arm_status arm_mat_mult_q15( - const arm_matrix_instance_q15 * pSrcA, - const arm_matrix_instance_q15 * pSrcB, - arm_matrix_instance_q15 * pDst, - q15_t * pState); - - - /** - * @brief Q15 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4 - * @param[in] pSrcA points to the first input matrix structure - * @param[in] pSrcB points to the second input matrix structure - * @param[out] pDst points to output matrix structure - * @param[in] pState points to the array for storing intermediate results - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - arm_status arm_mat_mult_fast_q15( - const arm_matrix_instance_q15 * pSrcA, - const arm_matrix_instance_q15 * pSrcB, - arm_matrix_instance_q15 * pDst, - q15_t * pState); - - - /** - * @brief Q31 matrix multiplication - * @param[in] pSrcA points to the first input matrix structure - * @param[in] pSrcB points to the second input matrix structure - * @param[out] pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - arm_status arm_mat_mult_q31( - const arm_matrix_instance_q31 * pSrcA, - const arm_matrix_instance_q31 * pSrcB, - arm_matrix_instance_q31 * pDst); - - - /** - * @brief Q31 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4 - * @param[in] pSrcA points to the first input matrix structure - * @param[in] pSrcB points to the second input matrix structure - * @param[out] pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - arm_status arm_mat_mult_fast_q31( - const arm_matrix_instance_q31 * pSrcA, - const arm_matrix_instance_q31 * pSrcB, - arm_matrix_instance_q31 * pDst); - - - /** - * @brief Floating-point matrix subtraction - * @param[in] pSrcA points to the first input matrix structure - * @param[in] pSrcB points to the second input matrix structure - * @param[out] pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - arm_status arm_mat_sub_f32( - const arm_matrix_instance_f32 * pSrcA, - const arm_matrix_instance_f32 * pSrcB, - arm_matrix_instance_f32 * pDst); - - - /** - * @brief Q15 matrix subtraction - * @param[in] pSrcA points to the first input matrix structure - * @param[in] pSrcB points to the second input matrix structure - * @param[out] pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - arm_status arm_mat_sub_q15( - const arm_matrix_instance_q15 * pSrcA, - const arm_matrix_instance_q15 * pSrcB, - arm_matrix_instance_q15 * pDst); - - - /** - * @brief Q31 matrix subtraction - * @param[in] pSrcA points to the first input matrix structure - * @param[in] pSrcB points to the second input matrix structure - * @param[out] pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - arm_status arm_mat_sub_q31( - const arm_matrix_instance_q31 * pSrcA, - const arm_matrix_instance_q31 * pSrcB, - arm_matrix_instance_q31 * pDst); - - - /** - * @brief Floating-point matrix scaling. - * @param[in] pSrc points to the input matrix - * @param[in] scale scale factor - * @param[out] pDst points to the output matrix - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - arm_status arm_mat_scale_f32( - const arm_matrix_instance_f32 * pSrc, - float32_t scale, - arm_matrix_instance_f32 * pDst); - - - /** - * @brief Q15 matrix scaling. - * @param[in] pSrc points to input matrix - * @param[in] scaleFract fractional portion of the scale factor - * @param[in] shift number of bits to shift the result by - * @param[out] pDst points to output matrix - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - arm_status arm_mat_scale_q15( - const arm_matrix_instance_q15 * pSrc, - q15_t scaleFract, - int32_t shift, - arm_matrix_instance_q15 * pDst); - - - /** - * @brief Q31 matrix scaling. - * @param[in] pSrc points to input matrix - * @param[in] scaleFract fractional portion of the scale factor - * @param[in] shift number of bits to shift the result by - * @param[out] pDst points to output matrix structure - * @return The function returns either - * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. - */ - arm_status arm_mat_scale_q31( - const arm_matrix_instance_q31 * pSrc, - q31_t scaleFract, - int32_t shift, - arm_matrix_instance_q31 * pDst); - - - /** - * @brief Q31 matrix initialization. - * @param[in,out] S points to an instance of the floating-point matrix structure. - * @param[in] nRows number of rows in the matrix. - * @param[in] nColumns number of columns in the matrix. - * @param[in] pData points to the matrix data array. - */ - void arm_mat_init_q31( - arm_matrix_instance_q31 * S, - uint16_t nRows, - uint16_t nColumns, - q31_t * pData); - - - /** - * @brief Q15 matrix initialization. - * @param[in,out] S points to an instance of the floating-point matrix structure. - * @param[in] nRows number of rows in the matrix. - * @param[in] nColumns number of columns in the matrix. - * @param[in] pData points to the matrix data array. - */ - void arm_mat_init_q15( - arm_matrix_instance_q15 * S, - uint16_t nRows, - uint16_t nColumns, - q15_t * pData); - - - /** - * @brief Floating-point matrix initialization. - * @param[in,out] S points to an instance of the floating-point matrix structure. - * @param[in] nRows number of rows in the matrix. - * @param[in] nColumns number of columns in the matrix. - * @param[in] pData points to the matrix data array. - */ - void arm_mat_init_f32( - arm_matrix_instance_f32 * S, - uint16_t nRows, - uint16_t nColumns, - float32_t * pData); - - - - /** - * @brief Instance structure for the Q15 PID Control. - */ - typedef struct - { - q15_t A0; /**< The derived gain, A0 = Kp + Ki + Kd . */ -#ifdef ARM_MATH_CM0_FAMILY - q15_t A1; - q15_t A2; -#else - q31_t A1; /**< The derived gain A1 = -Kp - 2Kd | Kd.*/ -#endif - q15_t state[3]; /**< The state array of length 3. */ - q15_t Kp; /**< The proportional gain. */ - q15_t Ki; /**< The integral gain. */ - q15_t Kd; /**< The derivative gain. */ - } arm_pid_instance_q15; - - /** - * @brief Instance structure for the Q31 PID Control. - */ - typedef struct - { - q31_t A0; /**< The derived gain, A0 = Kp + Ki + Kd . */ - q31_t A1; /**< The derived gain, A1 = -Kp - 2Kd. */ - q31_t A2; /**< The derived gain, A2 = Kd . */ - q31_t state[3]; /**< The state array of length 3. */ - q31_t Kp; /**< The proportional gain. */ - q31_t Ki; /**< The integral gain. */ - q31_t Kd; /**< The derivative gain. */ - } arm_pid_instance_q31; - - /** - * @brief Instance structure for the floating-point PID Control. - */ - typedef struct - { - float32_t A0; /**< The derived gain, A0 = Kp + Ki + Kd . */ - float32_t A1; /**< The derived gain, A1 = -Kp - 2Kd. */ - float32_t A2; /**< The derived gain, A2 = Kd . */ - float32_t state[3]; /**< The state array of length 3. */ - float32_t Kp; /**< The proportional gain. */ - float32_t Ki; /**< The integral gain. */ - float32_t Kd; /**< The derivative gain. */ - } arm_pid_instance_f32; - - - - /** - * @brief Initialization function for the floating-point PID Control. - * @param[in,out] S points to an instance of the PID structure. - * @param[in] resetStateFlag flag to reset the state. 0 = no change in state 1 = reset the state. - */ - void arm_pid_init_f32( - arm_pid_instance_f32 * S, - int32_t resetStateFlag); - - - /** - * @brief Reset function for the floating-point PID Control. - * @param[in,out] S is an instance of the floating-point PID Control structure - */ - void arm_pid_reset_f32( - arm_pid_instance_f32 * S); - - - /** - * @brief Initialization function for the Q31 PID Control. - * @param[in,out] S points to an instance of the Q15 PID structure. - * @param[in] resetStateFlag flag to reset the state. 0 = no change in state 1 = reset the state. - */ - void arm_pid_init_q31( - arm_pid_instance_q31 * S, - int32_t resetStateFlag); - - - /** - * @brief Reset function for the Q31 PID Control. - * @param[in,out] S points to an instance of the Q31 PID Control structure - */ - - void arm_pid_reset_q31( - arm_pid_instance_q31 * S); - - - /** - * @brief Initialization function for the Q15 PID Control. - * @param[in,out] S points to an instance of the Q15 PID structure. - * @param[in] resetStateFlag flag to reset the state. 0 = no change in state 1 = reset the state. - */ - void arm_pid_init_q15( - arm_pid_instance_q15 * S, - int32_t resetStateFlag); - - - /** - * @brief Reset function for the Q15 PID Control. - * @param[in,out] S points to an instance of the q15 PID Control structure - */ - void arm_pid_reset_q15( - arm_pid_instance_q15 * S); - - - /** - * @brief Instance structure for the floating-point Linear Interpolate function. - */ - typedef struct - { - uint32_t nValues; /**< nValues */ - float32_t x1; /**< x1 */ - float32_t xSpacing; /**< xSpacing */ - float32_t *pYData; /**< pointer to the table of Y values */ - } arm_linear_interp_instance_f32; - - /** - * @brief Instance structure for the floating-point bilinear interpolation function. - */ - typedef struct - { - uint16_t numRows; /**< number of rows in the data table. */ - uint16_t numCols; /**< number of columns in the data table. */ - float32_t *pData; /**< points to the data table. */ - } arm_bilinear_interp_instance_f32; - - /** - * @brief Instance structure for the Q31 bilinear interpolation function. - */ - typedef struct - { - uint16_t numRows; /**< number of rows in the data table. */ - uint16_t numCols; /**< number of columns in the data table. */ - q31_t *pData; /**< points to the data table. */ - } arm_bilinear_interp_instance_q31; - - /** - * @brief Instance structure for the Q15 bilinear interpolation function. - */ - typedef struct - { - uint16_t numRows; /**< number of rows in the data table. */ - uint16_t numCols; /**< number of columns in the data table. */ - q15_t *pData; /**< points to the data table. */ - } arm_bilinear_interp_instance_q15; - - /** - * @brief Instance structure for the Q15 bilinear interpolation function. - */ - typedef struct - { - uint16_t numRows; /**< number of rows in the data table. */ - uint16_t numCols; /**< number of columns in the data table. */ - q7_t *pData; /**< points to the data table. */ - } arm_bilinear_interp_instance_q7; - - - /** - * @brief Q7 vector multiplication. - * @param[in] pSrcA points to the first input vector - * @param[in] pSrcB points to the second input vector - * @param[out] pDst points to the output vector - * @param[in] blockSize number of samples in each vector - */ - void arm_mult_q7( - q7_t * pSrcA, - q7_t * pSrcB, - q7_t * pDst, - uint32_t blockSize); - - - /** - * @brief Q15 vector multiplication. - * @param[in] pSrcA points to the first input vector - * @param[in] pSrcB points to the second input vector - * @param[out] pDst points to the output vector - * @param[in] blockSize number of samples in each vector - */ - void arm_mult_q15( - q15_t * pSrcA, - q15_t * pSrcB, - q15_t * pDst, - uint32_t blockSize); - - - /** - * @brief Q31 vector multiplication. - * @param[in] pSrcA points to the first input vector - * @param[in] pSrcB points to the second input vector - * @param[out] pDst points to the output vector - * @param[in] blockSize number of samples in each vector - */ - void arm_mult_q31( - q31_t * pSrcA, - q31_t * pSrcB, - q31_t * pDst, - uint32_t blockSize); - - - /** - * @brief Floating-point vector multiplication. - * @param[in] pSrcA points to the first input vector - * @param[in] pSrcB points to the second input vector - * @param[out] pDst points to the output vector - * @param[in] blockSize number of samples in each vector - */ - void arm_mult_f32( - float32_t * pSrcA, - float32_t * pSrcB, - float32_t * pDst, - uint32_t blockSize); - - - /** - * @brief Instance structure for the Q15 CFFT/CIFFT function. - */ - typedef struct - { - uint16_t fftLen; /**< length of the FFT. */ - uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ - uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ - q15_t *pTwiddle; /**< points to the Sin twiddle factor table. */ - uint16_t *pBitRevTable; /**< points to the bit reversal table. */ - uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ - uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ - } arm_cfft_radix2_instance_q15; - -/* Deprecated */ - arm_status arm_cfft_radix2_init_q15( - arm_cfft_radix2_instance_q15 * S, - uint16_t fftLen, - uint8_t ifftFlag, - uint8_t bitReverseFlag); - -/* Deprecated */ - void arm_cfft_radix2_q15( - const arm_cfft_radix2_instance_q15 * S, - q15_t * pSrc); - - - /** - * @brief Instance structure for the Q15 CFFT/CIFFT function. - */ - typedef struct - { - uint16_t fftLen; /**< length of the FFT. */ - uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ - uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ - q15_t *pTwiddle; /**< points to the twiddle factor table. */ - uint16_t *pBitRevTable; /**< points to the bit reversal table. */ - uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ - uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ - } arm_cfft_radix4_instance_q15; - -/* Deprecated */ - arm_status arm_cfft_radix4_init_q15( - arm_cfft_radix4_instance_q15 * S, - uint16_t fftLen, - uint8_t ifftFlag, - uint8_t bitReverseFlag); - -/* Deprecated */ - void arm_cfft_radix4_q15( - const arm_cfft_radix4_instance_q15 * S, - q15_t * pSrc); - - /** - * @brief Instance structure for the Radix-2 Q31 CFFT/CIFFT function. - */ - typedef struct - { - uint16_t fftLen; /**< length of the FFT. */ - uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ - uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ - q31_t *pTwiddle; /**< points to the Twiddle factor table. */ - uint16_t *pBitRevTable; /**< points to the bit reversal table. */ - uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ - uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ - } arm_cfft_radix2_instance_q31; - -/* Deprecated */ - arm_status arm_cfft_radix2_init_q31( - arm_cfft_radix2_instance_q31 * S, - uint16_t fftLen, - uint8_t ifftFlag, - uint8_t bitReverseFlag); - -/* Deprecated */ - void arm_cfft_radix2_q31( - const arm_cfft_radix2_instance_q31 * S, - q31_t * pSrc); - - /** - * @brief Instance structure for the Q31 CFFT/CIFFT function. - */ - typedef struct - { - uint16_t fftLen; /**< length of the FFT. */ - uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ - uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ - q31_t *pTwiddle; /**< points to the twiddle factor table. */ - uint16_t *pBitRevTable; /**< points to the bit reversal table. */ - uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ - uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ - } arm_cfft_radix4_instance_q31; - -/* Deprecated */ - void arm_cfft_radix4_q31( - const arm_cfft_radix4_instance_q31 * S, - q31_t * pSrc); - -/* Deprecated */ - arm_status arm_cfft_radix4_init_q31( - arm_cfft_radix4_instance_q31 * S, - uint16_t fftLen, - uint8_t ifftFlag, - uint8_t bitReverseFlag); - - /** - * @brief Instance structure for the floating-point CFFT/CIFFT function. - */ - typedef struct - { - uint16_t fftLen; /**< length of the FFT. */ - uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ - uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ - float32_t *pTwiddle; /**< points to the Twiddle factor table. */ - uint16_t *pBitRevTable; /**< points to the bit reversal table. */ - uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ - uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ - float32_t onebyfftLen; /**< value of 1/fftLen. */ - } arm_cfft_radix2_instance_f32; - -/* Deprecated */ - arm_status arm_cfft_radix2_init_f32( - arm_cfft_radix2_instance_f32 * S, - uint16_t fftLen, - uint8_t ifftFlag, - uint8_t bitReverseFlag); - -/* Deprecated */ - void arm_cfft_radix2_f32( - const arm_cfft_radix2_instance_f32 * S, - float32_t * pSrc); - - /** - * @brief Instance structure for the floating-point CFFT/CIFFT function. - */ - typedef struct - { - uint16_t fftLen; /**< length of the FFT. */ - uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ - uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ - float32_t *pTwiddle; /**< points to the Twiddle factor table. */ - uint16_t *pBitRevTable; /**< points to the bit reversal table. */ - uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ - uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ - float32_t onebyfftLen; /**< value of 1/fftLen. */ - } arm_cfft_radix4_instance_f32; - -/* Deprecated */ - arm_status arm_cfft_radix4_init_f32( - arm_cfft_radix4_instance_f32 * S, - uint16_t fftLen, - uint8_t ifftFlag, - uint8_t bitReverseFlag); - -/* Deprecated */ - void arm_cfft_radix4_f32( - const arm_cfft_radix4_instance_f32 * S, - float32_t * pSrc); - - /** - * @brief Instance structure for the fixed-point CFFT/CIFFT function. - */ - typedef struct - { - uint16_t fftLen; /**< length of the FFT. */ - const q15_t *pTwiddle; /**< points to the Twiddle factor table. */ - const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ - uint16_t bitRevLength; /**< bit reversal table length. */ - } arm_cfft_instance_q15; - -void arm_cfft_q15( - const arm_cfft_instance_q15 * S, - q15_t * p1, - uint8_t ifftFlag, - uint8_t bitReverseFlag); - - /** - * @brief Instance structure for the fixed-point CFFT/CIFFT function. - */ - typedef struct - { - uint16_t fftLen; /**< length of the FFT. */ - const q31_t *pTwiddle; /**< points to the Twiddle factor table. */ - const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ - uint16_t bitRevLength; /**< bit reversal table length. */ - } arm_cfft_instance_q31; - -void arm_cfft_q31( - const arm_cfft_instance_q31 * S, - q31_t * p1, - uint8_t ifftFlag, - uint8_t bitReverseFlag); - - /** - * @brief Instance structure for the floating-point CFFT/CIFFT function. - */ - typedef struct - { - uint16_t fftLen; /**< length of the FFT. */ - const float32_t *pTwiddle; /**< points to the Twiddle factor table. */ - const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ - uint16_t bitRevLength; /**< bit reversal table length. */ - } arm_cfft_instance_f32; - - void arm_cfft_f32( - const arm_cfft_instance_f32 * S, - float32_t * p1, - uint8_t ifftFlag, - uint8_t bitReverseFlag); - - /** - * @brief Instance structure for the Q15 RFFT/RIFFT function. - */ - typedef struct - { - uint32_t fftLenReal; /**< length of the real FFT. */ - uint8_t ifftFlagR; /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */ - uint8_t bitReverseFlagR; /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */ - uint32_t twidCoefRModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ - q15_t *pTwiddleAReal; /**< points to the real twiddle factor table. */ - q15_t *pTwiddleBReal; /**< points to the imag twiddle factor table. */ - const arm_cfft_instance_q15 *pCfft; /**< points to the complex FFT instance. */ - } arm_rfft_instance_q15; - - arm_status arm_rfft_init_q15( - arm_rfft_instance_q15 * S, - uint32_t fftLenReal, - uint32_t ifftFlagR, - uint32_t bitReverseFlag); - - void arm_rfft_q15( - const arm_rfft_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst); - - /** - * @brief Instance structure for the Q31 RFFT/RIFFT function. - */ - typedef struct - { - uint32_t fftLenReal; /**< length of the real FFT. */ - uint8_t ifftFlagR; /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */ - uint8_t bitReverseFlagR; /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */ - uint32_t twidCoefRModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ - q31_t *pTwiddleAReal; /**< points to the real twiddle factor table. */ - q31_t *pTwiddleBReal; /**< points to the imag twiddle factor table. */ - const arm_cfft_instance_q31 *pCfft; /**< points to the complex FFT instance. */ - } arm_rfft_instance_q31; - - arm_status arm_rfft_init_q31( - arm_rfft_instance_q31 * S, - uint32_t fftLenReal, - uint32_t ifftFlagR, - uint32_t bitReverseFlag); - - void arm_rfft_q31( - const arm_rfft_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst); - - /** - * @brief Instance structure for the floating-point RFFT/RIFFT function. - */ - typedef struct - { - uint32_t fftLenReal; /**< length of the real FFT. */ - uint16_t fftLenBy2; /**< length of the complex FFT. */ - uint8_t ifftFlagR; /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */ - uint8_t bitReverseFlagR; /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */ - uint32_t twidCoefRModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ - float32_t *pTwiddleAReal; /**< points to the real twiddle factor table. */ - float32_t *pTwiddleBReal; /**< points to the imag twiddle factor table. */ - arm_cfft_radix4_instance_f32 *pCfft; /**< points to the complex FFT instance. */ - } arm_rfft_instance_f32; - - arm_status arm_rfft_init_f32( - arm_rfft_instance_f32 * S, - arm_cfft_radix4_instance_f32 * S_CFFT, - uint32_t fftLenReal, - uint32_t ifftFlagR, - uint32_t bitReverseFlag); - - void arm_rfft_f32( - const arm_rfft_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst); - - /** - * @brief Instance structure for the floating-point RFFT/RIFFT function. - */ -typedef struct - { - arm_cfft_instance_f32 Sint; /**< Internal CFFT structure. */ - uint16_t fftLenRFFT; /**< length of the real sequence */ - float32_t * pTwiddleRFFT; /**< Twiddle factors real stage */ - } arm_rfft_fast_instance_f32 ; - -arm_status arm_rfft_fast_init_f32 ( - arm_rfft_fast_instance_f32 * S, - uint16_t fftLen); - -void arm_rfft_fast_f32( - arm_rfft_fast_instance_f32 * S, - float32_t * p, float32_t * pOut, - uint8_t ifftFlag); - - /** - * @brief Instance structure for the floating-point DCT4/IDCT4 function. - */ - typedef struct - { - uint16_t N; /**< length of the DCT4. */ - uint16_t Nby2; /**< half of the length of the DCT4. */ - float32_t normalize; /**< normalizing factor. */ - float32_t *pTwiddle; /**< points to the twiddle factor table. */ - float32_t *pCosFactor; /**< points to the cosFactor table. */ - arm_rfft_instance_f32 *pRfft; /**< points to the real FFT instance. */ - arm_cfft_radix4_instance_f32 *pCfft; /**< points to the complex FFT instance. */ - } arm_dct4_instance_f32; - - - /** - * @brief Initialization function for the floating-point DCT4/IDCT4. - * @param[in,out] S points to an instance of floating-point DCT4/IDCT4 structure. - * @param[in] S_RFFT points to an instance of floating-point RFFT/RIFFT structure. - * @param[in] S_CFFT points to an instance of floating-point CFFT/CIFFT structure. - * @param[in] N length of the DCT4. - * @param[in] Nby2 half of the length of the DCT4. - * @param[in] normalize normalizing factor. - * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported transform length. - */ - arm_status arm_dct4_init_f32( - arm_dct4_instance_f32 * S, - arm_rfft_instance_f32 * S_RFFT, - arm_cfft_radix4_instance_f32 * S_CFFT, - uint16_t N, - uint16_t Nby2, - float32_t normalize); - - - /** - * @brief Processing function for the floating-point DCT4/IDCT4. - * @param[in] S points to an instance of the floating-point DCT4/IDCT4 structure. - * @param[in] pState points to state buffer. - * @param[in,out] pInlineBuffer points to the in-place input and output buffer. - */ - void arm_dct4_f32( - const arm_dct4_instance_f32 * S, - float32_t * pState, - float32_t * pInlineBuffer); - - - /** - * @brief Instance structure for the Q31 DCT4/IDCT4 function. - */ - typedef struct - { - uint16_t N; /**< length of the DCT4. */ - uint16_t Nby2; /**< half of the length of the DCT4. */ - q31_t normalize; /**< normalizing factor. */ - q31_t *pTwiddle; /**< points to the twiddle factor table. */ - q31_t *pCosFactor; /**< points to the cosFactor table. */ - arm_rfft_instance_q31 *pRfft; /**< points to the real FFT instance. */ - arm_cfft_radix4_instance_q31 *pCfft; /**< points to the complex FFT instance. */ - } arm_dct4_instance_q31; - - - /** - * @brief Initialization function for the Q31 DCT4/IDCT4. - * @param[in,out] S points to an instance of Q31 DCT4/IDCT4 structure. - * @param[in] S_RFFT points to an instance of Q31 RFFT/RIFFT structure - * @param[in] S_CFFT points to an instance of Q31 CFFT/CIFFT structure - * @param[in] N length of the DCT4. - * @param[in] Nby2 half of the length of the DCT4. - * @param[in] normalize normalizing factor. - * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if N is not a supported transform length. - */ - arm_status arm_dct4_init_q31( - arm_dct4_instance_q31 * S, - arm_rfft_instance_q31 * S_RFFT, - arm_cfft_radix4_instance_q31 * S_CFFT, - uint16_t N, - uint16_t Nby2, - q31_t normalize); - - - /** - * @brief Processing function for the Q31 DCT4/IDCT4. - * @param[in] S points to an instance of the Q31 DCT4 structure. - * @param[in] pState points to state buffer. - * @param[in,out] pInlineBuffer points to the in-place input and output buffer. - */ - void arm_dct4_q31( - const arm_dct4_instance_q31 * S, - q31_t * pState, - q31_t * pInlineBuffer); - - - /** - * @brief Instance structure for the Q15 DCT4/IDCT4 function. - */ - typedef struct - { - uint16_t N; /**< length of the DCT4. */ - uint16_t Nby2; /**< half of the length of the DCT4. */ - q15_t normalize; /**< normalizing factor. */ - q15_t *pTwiddle; /**< points to the twiddle factor table. */ - q15_t *pCosFactor; /**< points to the cosFactor table. */ - arm_rfft_instance_q15 *pRfft; /**< points to the real FFT instance. */ - arm_cfft_radix4_instance_q15 *pCfft; /**< points to the complex FFT instance. */ - } arm_dct4_instance_q15; - - - /** - * @brief Initialization function for the Q15 DCT4/IDCT4. - * @param[in,out] S points to an instance of Q15 DCT4/IDCT4 structure. - * @param[in] S_RFFT points to an instance of Q15 RFFT/RIFFT structure. - * @param[in] S_CFFT points to an instance of Q15 CFFT/CIFFT structure. - * @param[in] N length of the DCT4. - * @param[in] Nby2 half of the length of the DCT4. - * @param[in] normalize normalizing factor. - * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if N is not a supported transform length. - */ - arm_status arm_dct4_init_q15( - arm_dct4_instance_q15 * S, - arm_rfft_instance_q15 * S_RFFT, - arm_cfft_radix4_instance_q15 * S_CFFT, - uint16_t N, - uint16_t Nby2, - q15_t normalize); - - - /** - * @brief Processing function for the Q15 DCT4/IDCT4. - * @param[in] S points to an instance of the Q15 DCT4 structure. - * @param[in] pState points to state buffer. - * @param[in,out] pInlineBuffer points to the in-place input and output buffer. - */ - void arm_dct4_q15( - const arm_dct4_instance_q15 * S, - q15_t * pState, - q15_t * pInlineBuffer); - - - /** - * @brief Floating-point vector addition. - * @param[in] pSrcA points to the first input vector - * @param[in] pSrcB points to the second input vector - * @param[out] pDst points to the output vector - * @param[in] blockSize number of samples in each vector - */ - void arm_add_f32( - float32_t * pSrcA, - float32_t * pSrcB, - float32_t * pDst, - uint32_t blockSize); - - - /** - * @brief Q7 vector addition. - * @param[in] pSrcA points to the first input vector - * @param[in] pSrcB points to the second input vector - * @param[out] pDst points to the output vector - * @param[in] blockSize number of samples in each vector - */ - void arm_add_q7( - q7_t * pSrcA, - q7_t * pSrcB, - q7_t * pDst, - uint32_t blockSize); - - - /** - * @brief Q15 vector addition. - * @param[in] pSrcA points to the first input vector - * @param[in] pSrcB points to the second input vector - * @param[out] pDst points to the output vector - * @param[in] blockSize number of samples in each vector - */ - void arm_add_q15( - q15_t * pSrcA, - q15_t * pSrcB, - q15_t * pDst, - uint32_t blockSize); - - - /** - * @brief Q31 vector addition. - * @param[in] pSrcA points to the first input vector - * @param[in] pSrcB points to the second input vector - * @param[out] pDst points to the output vector - * @param[in] blockSize number of samples in each vector - */ - void arm_add_q31( - q31_t * pSrcA, - q31_t * pSrcB, - q31_t * pDst, - uint32_t blockSize); - - - /** - * @brief Floating-point vector subtraction. - * @param[in] pSrcA points to the first input vector - * @param[in] pSrcB points to the second input vector - * @param[out] pDst points to the output vector - * @param[in] blockSize number of samples in each vector - */ - void arm_sub_f32( - float32_t * pSrcA, - float32_t * pSrcB, - float32_t * pDst, - uint32_t blockSize); - - - /** - * @brief Q7 vector subtraction. - * @param[in] pSrcA points to the first input vector - * @param[in] pSrcB points to the second input vector - * @param[out] pDst points to the output vector - * @param[in] blockSize number of samples in each vector - */ - void arm_sub_q7( - q7_t * pSrcA, - q7_t * pSrcB, - q7_t * pDst, - uint32_t blockSize); - - - /** - * @brief Q15 vector subtraction. - * @param[in] pSrcA points to the first input vector - * @param[in] pSrcB points to the second input vector - * @param[out] pDst points to the output vector - * @param[in] blockSize number of samples in each vector - */ - void arm_sub_q15( - q15_t * pSrcA, - q15_t * pSrcB, - q15_t * pDst, - uint32_t blockSize); - - - /** - * @brief Q31 vector subtraction. - * @param[in] pSrcA points to the first input vector - * @param[in] pSrcB points to the second input vector - * @param[out] pDst points to the output vector - * @param[in] blockSize number of samples in each vector - */ - void arm_sub_q31( - q31_t * pSrcA, - q31_t * pSrcB, - q31_t * pDst, - uint32_t blockSize); - - - /** - * @brief Multiplies a floating-point vector by a scalar. - * @param[in] pSrc points to the input vector - * @param[in] scale scale factor to be applied - * @param[out] pDst points to the output vector - * @param[in] blockSize number of samples in the vector - */ - void arm_scale_f32( - float32_t * pSrc, - float32_t scale, - float32_t * pDst, - uint32_t blockSize); - - - /** - * @brief Multiplies a Q7 vector by a scalar. - * @param[in] pSrc points to the input vector - * @param[in] scaleFract fractional portion of the scale value - * @param[in] shift number of bits to shift the result by - * @param[out] pDst points to the output vector - * @param[in] blockSize number of samples in the vector - */ - void arm_scale_q7( - q7_t * pSrc, - q7_t scaleFract, - int8_t shift, - q7_t * pDst, - uint32_t blockSize); - - - /** - * @brief Multiplies a Q15 vector by a scalar. - * @param[in] pSrc points to the input vector - * @param[in] scaleFract fractional portion of the scale value - * @param[in] shift number of bits to shift the result by - * @param[out] pDst points to the output vector - * @param[in] blockSize number of samples in the vector - */ - void arm_scale_q15( - q15_t * pSrc, - q15_t scaleFract, - int8_t shift, - q15_t * pDst, - uint32_t blockSize); - - - /** - * @brief Multiplies a Q31 vector by a scalar. - * @param[in] pSrc points to the input vector - * @param[in] scaleFract fractional portion of the scale value - * @param[in] shift number of bits to shift the result by - * @param[out] pDst points to the output vector - * @param[in] blockSize number of samples in the vector - */ - void arm_scale_q31( - q31_t * pSrc, - q31_t scaleFract, - int8_t shift, - q31_t * pDst, - uint32_t blockSize); - - - /** - * @brief Q7 vector absolute value. - * @param[in] pSrc points to the input buffer - * @param[out] pDst points to the output buffer - * @param[in] blockSize number of samples in each vector - */ - void arm_abs_q7( - q7_t * pSrc, - q7_t * pDst, - uint32_t blockSize); - - - /** - * @brief Floating-point vector absolute value. - * @param[in] pSrc points to the input buffer - * @param[out] pDst points to the output buffer - * @param[in] blockSize number of samples in each vector - */ - void arm_abs_f32( - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - - /** - * @brief Q15 vector absolute value. - * @param[in] pSrc points to the input buffer - * @param[out] pDst points to the output buffer - * @param[in] blockSize number of samples in each vector - */ - void arm_abs_q15( - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - - /** - * @brief Q31 vector absolute value. - * @param[in] pSrc points to the input buffer - * @param[out] pDst points to the output buffer - * @param[in] blockSize number of samples in each vector - */ - void arm_abs_q31( - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - - /** - * @brief Dot product of floating-point vectors. - * @param[in] pSrcA points to the first input vector - * @param[in] pSrcB points to the second input vector - * @param[in] blockSize number of samples in each vector - * @param[out] result output result returned here - */ - void arm_dot_prod_f32( - float32_t * pSrcA, - float32_t * pSrcB, - uint32_t blockSize, - float32_t * result); - - - /** - * @brief Dot product of Q7 vectors. - * @param[in] pSrcA points to the first input vector - * @param[in] pSrcB points to the second input vector - * @param[in] blockSize number of samples in each vector - * @param[out] result output result returned here - */ - void arm_dot_prod_q7( - q7_t * pSrcA, - q7_t * pSrcB, - uint32_t blockSize, - q31_t * result); - - - /** - * @brief Dot product of Q15 vectors. - * @param[in] pSrcA points to the first input vector - * @param[in] pSrcB points to the second input vector - * @param[in] blockSize number of samples in each vector - * @param[out] result output result returned here - */ - void arm_dot_prod_q15( - q15_t * pSrcA, - q15_t * pSrcB, - uint32_t blockSize, - q63_t * result); - - - /** - * @brief Dot product of Q31 vectors. - * @param[in] pSrcA points to the first input vector - * @param[in] pSrcB points to the second input vector - * @param[in] blockSize number of samples in each vector - * @param[out] result output result returned here - */ - void arm_dot_prod_q31( - q31_t * pSrcA, - q31_t * pSrcB, - uint32_t blockSize, - q63_t * result); - - - /** - * @brief Shifts the elements of a Q7 vector a specified number of bits. - * @param[in] pSrc points to the input vector - * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. - * @param[out] pDst points to the output vector - * @param[in] blockSize number of samples in the vector - */ - void arm_shift_q7( - q7_t * pSrc, - int8_t shiftBits, - q7_t * pDst, - uint32_t blockSize); - - - /** - * @brief Shifts the elements of a Q15 vector a specified number of bits. - * @param[in] pSrc points to the input vector - * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. - * @param[out] pDst points to the output vector - * @param[in] blockSize number of samples in the vector - */ - void arm_shift_q15( - q15_t * pSrc, - int8_t shiftBits, - q15_t * pDst, - uint32_t blockSize); - - - /** - * @brief Shifts the elements of a Q31 vector a specified number of bits. - * @param[in] pSrc points to the input vector - * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. - * @param[out] pDst points to the output vector - * @param[in] blockSize number of samples in the vector - */ - void arm_shift_q31( - q31_t * pSrc, - int8_t shiftBits, - q31_t * pDst, - uint32_t blockSize); - - - /** - * @brief Adds a constant offset to a floating-point vector. - * @param[in] pSrc points to the input vector - * @param[in] offset is the offset to be added - * @param[out] pDst points to the output vector - * @param[in] blockSize number of samples in the vector - */ - void arm_offset_f32( - float32_t * pSrc, - float32_t offset, - float32_t * pDst, - uint32_t blockSize); - - - /** - * @brief Adds a constant offset to a Q7 vector. - * @param[in] pSrc points to the input vector - * @param[in] offset is the offset to be added - * @param[out] pDst points to the output vector - * @param[in] blockSize number of samples in the vector - */ - void arm_offset_q7( - q7_t * pSrc, - q7_t offset, - q7_t * pDst, - uint32_t blockSize); - - - /** - * @brief Adds a constant offset to a Q15 vector. - * @param[in] pSrc points to the input vector - * @param[in] offset is the offset to be added - * @param[out] pDst points to the output vector - * @param[in] blockSize number of samples in the vector - */ - void arm_offset_q15( - q15_t * pSrc, - q15_t offset, - q15_t * pDst, - uint32_t blockSize); - - - /** - * @brief Adds a constant offset to a Q31 vector. - * @param[in] pSrc points to the input vector - * @param[in] offset is the offset to be added - * @param[out] pDst points to the output vector - * @param[in] blockSize number of samples in the vector - */ - void arm_offset_q31( - q31_t * pSrc, - q31_t offset, - q31_t * pDst, - uint32_t blockSize); - - - /** - * @brief Negates the elements of a floating-point vector. - * @param[in] pSrc points to the input vector - * @param[out] pDst points to the output vector - * @param[in] blockSize number of samples in the vector - */ - void arm_negate_f32( - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - - /** - * @brief Negates the elements of a Q7 vector. - * @param[in] pSrc points to the input vector - * @param[out] pDst points to the output vector - * @param[in] blockSize number of samples in the vector - */ - void arm_negate_q7( - q7_t * pSrc, - q7_t * pDst, - uint32_t blockSize); - - - /** - * @brief Negates the elements of a Q15 vector. - * @param[in] pSrc points to the input vector - * @param[out] pDst points to the output vector - * @param[in] blockSize number of samples in the vector - */ - void arm_negate_q15( - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - - /** - * @brief Negates the elements of a Q31 vector. - * @param[in] pSrc points to the input vector - * @param[out] pDst points to the output vector - * @param[in] blockSize number of samples in the vector - */ - void arm_negate_q31( - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - - /** - * @brief Copies the elements of a floating-point vector. - * @param[in] pSrc input pointer - * @param[out] pDst output pointer - * @param[in] blockSize number of samples to process - */ - void arm_copy_f32( - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - - /** - * @brief Copies the elements of a Q7 vector. - * @param[in] pSrc input pointer - * @param[out] pDst output pointer - * @param[in] blockSize number of samples to process - */ - void arm_copy_q7( - q7_t * pSrc, - q7_t * pDst, - uint32_t blockSize); - - - /** - * @brief Copies the elements of a Q15 vector. - * @param[in] pSrc input pointer - * @param[out] pDst output pointer - * @param[in] blockSize number of samples to process - */ - void arm_copy_q15( - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - - /** - * @brief Copies the elements of a Q31 vector. - * @param[in] pSrc input pointer - * @param[out] pDst output pointer - * @param[in] blockSize number of samples to process - */ - void arm_copy_q31( - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - - /** - * @brief Fills a constant value into a floating-point vector. - * @param[in] value input value to be filled - * @param[out] pDst output pointer - * @param[in] blockSize number of samples to process - */ - void arm_fill_f32( - float32_t value, - float32_t * pDst, - uint32_t blockSize); - - - /** - * @brief Fills a constant value into a Q7 vector. - * @param[in] value input value to be filled - * @param[out] pDst output pointer - * @param[in] blockSize number of samples to process - */ - void arm_fill_q7( - q7_t value, - q7_t * pDst, - uint32_t blockSize); - - - /** - * @brief Fills a constant value into a Q15 vector. - * @param[in] value input value to be filled - * @param[out] pDst output pointer - * @param[in] blockSize number of samples to process - */ - void arm_fill_q15( - q15_t value, - q15_t * pDst, - uint32_t blockSize); - - - /** - * @brief Fills a constant value into a Q31 vector. - * @param[in] value input value to be filled - * @param[out] pDst output pointer - * @param[in] blockSize number of samples to process - */ - void arm_fill_q31( - q31_t value, - q31_t * pDst, - uint32_t blockSize); - - -/** - * @brief Convolution of floating-point sequences. - * @param[in] pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] pDst points to the location where the output result is written. Length srcALen+srcBLen-1. - */ - void arm_conv_f32( - float32_t * pSrcA, - uint32_t srcALen, - float32_t * pSrcB, - uint32_t srcBLen, - float32_t * pDst); - - - /** - * @brief Convolution of Q15 sequences. - * @param[in] pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. - * @param[in] pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. - * @param[in] pScratch2 points to scratch buffer of size min(srcALen, srcBLen). - */ - void arm_conv_opt_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst, - q15_t * pScratch1, - q15_t * pScratch2); - - -/** - * @brief Convolution of Q15 sequences. - * @param[in] pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] pDst points to the location where the output result is written. Length srcALen+srcBLen-1. - */ - void arm_conv_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst); - - - /** - * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4 - * @param[in] pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. - */ - void arm_conv_fast_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst); - - - /** - * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4 - * @param[in] pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. - * @param[in] pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. - * @param[in] pScratch2 points to scratch buffer of size min(srcALen, srcBLen). - */ - void arm_conv_fast_opt_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst, - q15_t * pScratch1, - q15_t * pScratch2); - - - /** - * @brief Convolution of Q31 sequences. - * @param[in] pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. - */ - void arm_conv_q31( - q31_t * pSrcA, - uint32_t srcALen, - q31_t * pSrcB, - uint32_t srcBLen, - q31_t * pDst); - - - /** - * @brief Convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4 - * @param[in] pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. - */ - void arm_conv_fast_q31( - q31_t * pSrcA, - uint32_t srcALen, - q31_t * pSrcB, - uint32_t srcBLen, - q31_t * pDst); - - - /** - * @brief Convolution of Q7 sequences. - * @param[in] pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. - * @param[in] pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. - * @param[in] pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen). - */ - void arm_conv_opt_q7( - q7_t * pSrcA, - uint32_t srcALen, - q7_t * pSrcB, - uint32_t srcBLen, - q7_t * pDst, - q15_t * pScratch1, - q15_t * pScratch2); - - - /** - * @brief Convolution of Q7 sequences. - * @param[in] pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. - */ - void arm_conv_q7( - q7_t * pSrcA, - uint32_t srcALen, - q7_t * pSrcB, - uint32_t srcBLen, - q7_t * pDst); - - - /** - * @brief Partial convolution of floating-point sequences. - * @param[in] pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] pDst points to the block of output data - * @param[in] firstIndex is the first output sample to start with. - * @param[in] numPoints is the number of output points to be computed. - * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. - */ - arm_status arm_conv_partial_f32( - float32_t * pSrcA, - uint32_t srcALen, - float32_t * pSrcB, - uint32_t srcBLen, - float32_t * pDst, - uint32_t firstIndex, - uint32_t numPoints); - - - /** - * @brief Partial convolution of Q15 sequences. - * @param[in] pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] pDst points to the block of output data - * @param[in] firstIndex is the first output sample to start with. - * @param[in] numPoints is the number of output points to be computed. - * @param[in] pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. - * @param[in] pScratch2 points to scratch buffer of size min(srcALen, srcBLen). - * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. - */ - arm_status arm_conv_partial_opt_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst, - uint32_t firstIndex, - uint32_t numPoints, - q15_t * pScratch1, - q15_t * pScratch2); - - - /** - * @brief Partial convolution of Q15 sequences. - * @param[in] pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] pDst points to the block of output data - * @param[in] firstIndex is the first output sample to start with. - * @param[in] numPoints is the number of output points to be computed. - * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. - */ - arm_status arm_conv_partial_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst, - uint32_t firstIndex, - uint32_t numPoints); - - - /** - * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4 - * @param[in] pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] pDst points to the block of output data - * @param[in] firstIndex is the first output sample to start with. - * @param[in] numPoints is the number of output points to be computed. - * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. - */ - arm_status arm_conv_partial_fast_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst, - uint32_t firstIndex, - uint32_t numPoints); - - - /** - * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4 - * @param[in] pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] pDst points to the block of output data - * @param[in] firstIndex is the first output sample to start with. - * @param[in] numPoints is the number of output points to be computed. - * @param[in] pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. - * @param[in] pScratch2 points to scratch buffer of size min(srcALen, srcBLen). - * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. - */ - arm_status arm_conv_partial_fast_opt_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst, - uint32_t firstIndex, - uint32_t numPoints, - q15_t * pScratch1, - q15_t * pScratch2); - - - /** - * @brief Partial convolution of Q31 sequences. - * @param[in] pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] pDst points to the block of output data - * @param[in] firstIndex is the first output sample to start with. - * @param[in] numPoints is the number of output points to be computed. - * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. - */ - arm_status arm_conv_partial_q31( - q31_t * pSrcA, - uint32_t srcALen, - q31_t * pSrcB, - uint32_t srcBLen, - q31_t * pDst, - uint32_t firstIndex, - uint32_t numPoints); - - - /** - * @brief Partial convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4 - * @param[in] pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] pDst points to the block of output data - * @param[in] firstIndex is the first output sample to start with. - * @param[in] numPoints is the number of output points to be computed. - * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. - */ - arm_status arm_conv_partial_fast_q31( - q31_t * pSrcA, - uint32_t srcALen, - q31_t * pSrcB, - uint32_t srcBLen, - q31_t * pDst, - uint32_t firstIndex, - uint32_t numPoints); - - - /** - * @brief Partial convolution of Q7 sequences - * @param[in] pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] pDst points to the block of output data - * @param[in] firstIndex is the first output sample to start with. - * @param[in] numPoints is the number of output points to be computed. - * @param[in] pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. - * @param[in] pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen). - * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. - */ - arm_status arm_conv_partial_opt_q7( - q7_t * pSrcA, - uint32_t srcALen, - q7_t * pSrcB, - uint32_t srcBLen, - q7_t * pDst, - uint32_t firstIndex, - uint32_t numPoints, - q15_t * pScratch1, - q15_t * pScratch2); - - -/** - * @brief Partial convolution of Q7 sequences. - * @param[in] pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] pDst points to the block of output data - * @param[in] firstIndex is the first output sample to start with. - * @param[in] numPoints is the number of output points to be computed. - * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. - */ - arm_status arm_conv_partial_q7( - q7_t * pSrcA, - uint32_t srcALen, - q7_t * pSrcB, - uint32_t srcBLen, - q7_t * pDst, - uint32_t firstIndex, - uint32_t numPoints); - - - /** - * @brief Instance structure for the Q15 FIR decimator. - */ - typedef struct - { - uint8_t M; /**< decimation factor. */ - uint16_t numTaps; /**< number of coefficients in the filter. */ - q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ - q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - } arm_fir_decimate_instance_q15; - - /** - * @brief Instance structure for the Q31 FIR decimator. - */ - typedef struct - { - uint8_t M; /**< decimation factor. */ - uint16_t numTaps; /**< number of coefficients in the filter. */ - q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ - q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - } arm_fir_decimate_instance_q31; - - /** - * @brief Instance structure for the floating-point FIR decimator. - */ - typedef struct - { - uint8_t M; /**< decimation factor. */ - uint16_t numTaps; /**< number of coefficients in the filter. */ - float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ - float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - } arm_fir_decimate_instance_f32; - - - /** - * @brief Processing function for the floating-point FIR decimator. - * @param[in] S points to an instance of the floating-point FIR decimator structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data - * @param[in] blockSize number of input samples to process per call. - */ - void arm_fir_decimate_f32( - const arm_fir_decimate_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - - /** - * @brief Initialization function for the floating-point FIR decimator. - * @param[in,out] S points to an instance of the floating-point FIR decimator structure. - * @param[in] numTaps number of coefficients in the filter. - * @param[in] M decimation factor. - * @param[in] pCoeffs points to the filter coefficients. - * @param[in] pState points to the state buffer. - * @param[in] blockSize number of input samples to process per call. - * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if - * blockSize is not a multiple of M. - */ - arm_status arm_fir_decimate_init_f32( - arm_fir_decimate_instance_f32 * S, - uint16_t numTaps, - uint8_t M, - float32_t * pCoeffs, - float32_t * pState, - uint32_t blockSize); - - - /** - * @brief Processing function for the Q15 FIR decimator. - * @param[in] S points to an instance of the Q15 FIR decimator structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data - * @param[in] blockSize number of input samples to process per call. - */ - void arm_fir_decimate_q15( - const arm_fir_decimate_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - - /** - * @brief Processing function for the Q15 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4. - * @param[in] S points to an instance of the Q15 FIR decimator structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data - * @param[in] blockSize number of input samples to process per call. - */ - void arm_fir_decimate_fast_q15( - const arm_fir_decimate_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - - /** - * @brief Initialization function for the Q15 FIR decimator. - * @param[in,out] S points to an instance of the Q15 FIR decimator structure. - * @param[in] numTaps number of coefficients in the filter. - * @param[in] M decimation factor. - * @param[in] pCoeffs points to the filter coefficients. - * @param[in] pState points to the state buffer. - * @param[in] blockSize number of input samples to process per call. - * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if - * blockSize is not a multiple of M. - */ - arm_status arm_fir_decimate_init_q15( - arm_fir_decimate_instance_q15 * S, - uint16_t numTaps, - uint8_t M, - q15_t * pCoeffs, - q15_t * pState, - uint32_t blockSize); - - - /** - * @brief Processing function for the Q31 FIR decimator. - * @param[in] S points to an instance of the Q31 FIR decimator structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data - * @param[in] blockSize number of input samples to process per call. - */ - void arm_fir_decimate_q31( - const arm_fir_decimate_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - /** - * @brief Processing function for the Q31 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4. - * @param[in] S points to an instance of the Q31 FIR decimator structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data - * @param[in] blockSize number of input samples to process per call. - */ - void arm_fir_decimate_fast_q31( - arm_fir_decimate_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - - /** - * @brief Initialization function for the Q31 FIR decimator. - * @param[in,out] S points to an instance of the Q31 FIR decimator structure. - * @param[in] numTaps number of coefficients in the filter. - * @param[in] M decimation factor. - * @param[in] pCoeffs points to the filter coefficients. - * @param[in] pState points to the state buffer. - * @param[in] blockSize number of input samples to process per call. - * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if - * blockSize is not a multiple of M. - */ - arm_status arm_fir_decimate_init_q31( - arm_fir_decimate_instance_q31 * S, - uint16_t numTaps, - uint8_t M, - q31_t * pCoeffs, - q31_t * pState, - uint32_t blockSize); - - - /** - * @brief Instance structure for the Q15 FIR interpolator. - */ - typedef struct - { - uint8_t L; /**< upsample factor. */ - uint16_t phaseLength; /**< length of each polyphase filter component. */ - q15_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */ - q15_t *pState; /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */ - } arm_fir_interpolate_instance_q15; - - /** - * @brief Instance structure for the Q31 FIR interpolator. - */ - typedef struct - { - uint8_t L; /**< upsample factor. */ - uint16_t phaseLength; /**< length of each polyphase filter component. */ - q31_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */ - q31_t *pState; /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */ - } arm_fir_interpolate_instance_q31; - - /** - * @brief Instance structure for the floating-point FIR interpolator. - */ - typedef struct - { - uint8_t L; /**< upsample factor. */ - uint16_t phaseLength; /**< length of each polyphase filter component. */ - float32_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */ - float32_t *pState; /**< points to the state variable array. The array is of length phaseLength+numTaps-1. */ - } arm_fir_interpolate_instance_f32; - - - /** - * @brief Processing function for the Q15 FIR interpolator. - * @param[in] S points to an instance of the Q15 FIR interpolator structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data. - * @param[in] blockSize number of input samples to process per call. - */ - void arm_fir_interpolate_q15( - const arm_fir_interpolate_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - - /** - * @brief Initialization function for the Q15 FIR interpolator. - * @param[in,out] S points to an instance of the Q15 FIR interpolator structure. - * @param[in] L upsample factor. - * @param[in] numTaps number of filter coefficients in the filter. - * @param[in] pCoeffs points to the filter coefficient buffer. - * @param[in] pState points to the state buffer. - * @param[in] blockSize number of input samples to process per call. - * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if - * the filter length numTaps is not a multiple of the interpolation factor L. - */ - arm_status arm_fir_interpolate_init_q15( - arm_fir_interpolate_instance_q15 * S, - uint8_t L, - uint16_t numTaps, - q15_t * pCoeffs, - q15_t * pState, - uint32_t blockSize); - - - /** - * @brief Processing function for the Q31 FIR interpolator. - * @param[in] S points to an instance of the Q15 FIR interpolator structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data. - * @param[in] blockSize number of input samples to process per call. - */ - void arm_fir_interpolate_q31( - const arm_fir_interpolate_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - - /** - * @brief Initialization function for the Q31 FIR interpolator. - * @param[in,out] S points to an instance of the Q31 FIR interpolator structure. - * @param[in] L upsample factor. - * @param[in] numTaps number of filter coefficients in the filter. - * @param[in] pCoeffs points to the filter coefficient buffer. - * @param[in] pState points to the state buffer. - * @param[in] blockSize number of input samples to process per call. - * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if - * the filter length numTaps is not a multiple of the interpolation factor L. - */ - arm_status arm_fir_interpolate_init_q31( - arm_fir_interpolate_instance_q31 * S, - uint8_t L, - uint16_t numTaps, - q31_t * pCoeffs, - q31_t * pState, - uint32_t blockSize); - - - /** - * @brief Processing function for the floating-point FIR interpolator. - * @param[in] S points to an instance of the floating-point FIR interpolator structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data. - * @param[in] blockSize number of input samples to process per call. - */ - void arm_fir_interpolate_f32( - const arm_fir_interpolate_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - - /** - * @brief Initialization function for the floating-point FIR interpolator. - * @param[in,out] S points to an instance of the floating-point FIR interpolator structure. - * @param[in] L upsample factor. - * @param[in] numTaps number of filter coefficients in the filter. - * @param[in] pCoeffs points to the filter coefficient buffer. - * @param[in] pState points to the state buffer. - * @param[in] blockSize number of input samples to process per call. - * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if - * the filter length numTaps is not a multiple of the interpolation factor L. - */ - arm_status arm_fir_interpolate_init_f32( - arm_fir_interpolate_instance_f32 * S, - uint8_t L, - uint16_t numTaps, - float32_t * pCoeffs, - float32_t * pState, - uint32_t blockSize); - - - /** - * @brief Instance structure for the high precision Q31 Biquad cascade filter. - */ - typedef struct - { - uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ - q63_t *pState; /**< points to the array of state coefficients. The array is of length 4*numStages. */ - q31_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */ - uint8_t postShift; /**< additional shift, in bits, applied to each output sample. */ - } arm_biquad_cas_df1_32x64_ins_q31; - - - /** - * @param[in] S points to an instance of the high precision Q31 Biquad cascade filter structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data - * @param[in] blockSize number of samples to process. - */ - void arm_biquad_cas_df1_32x64_q31( - const arm_biquad_cas_df1_32x64_ins_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - - /** - * @param[in,out] S points to an instance of the high precision Q31 Biquad cascade filter structure. - * @param[in] numStages number of 2nd order stages in the filter. - * @param[in] pCoeffs points to the filter coefficients. - * @param[in] pState points to the state buffer. - * @param[in] postShift shift to be applied to the output. Varies according to the coefficients format - */ - void arm_biquad_cas_df1_32x64_init_q31( - arm_biquad_cas_df1_32x64_ins_q31 * S, - uint8_t numStages, - q31_t * pCoeffs, - q63_t * pState, - uint8_t postShift); - - - /** - * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter. - */ - typedef struct - { - uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ - float32_t *pState; /**< points to the array of state coefficients. The array is of length 2*numStages. */ - float32_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */ - } arm_biquad_cascade_df2T_instance_f32; - - /** - * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter. - */ - typedef struct - { - uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ - float32_t *pState; /**< points to the array of state coefficients. The array is of length 4*numStages. */ - float32_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */ - } arm_biquad_cascade_stereo_df2T_instance_f32; - - /** - * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter. - */ - typedef struct - { - uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ - float64_t *pState; /**< points to the array of state coefficients. The array is of length 2*numStages. */ - float64_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */ - } arm_biquad_cascade_df2T_instance_f64; - - - /** - * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. - * @param[in] S points to an instance of the filter data structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data - * @param[in] blockSize number of samples to process. - */ - void arm_biquad_cascade_df2T_f32( - const arm_biquad_cascade_df2T_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - - /** - * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. 2 channels - * @param[in] S points to an instance of the filter data structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data - * @param[in] blockSize number of samples to process. - */ - void arm_biquad_cascade_stereo_df2T_f32( - const arm_biquad_cascade_stereo_df2T_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - - /** - * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. - * @param[in] S points to an instance of the filter data structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data - * @param[in] blockSize number of samples to process. - */ - void arm_biquad_cascade_df2T_f64( - const arm_biquad_cascade_df2T_instance_f64 * S, - float64_t * pSrc, - float64_t * pDst, - uint32_t blockSize); - - - /** - * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter. - * @param[in,out] S points to an instance of the filter data structure. - * @param[in] numStages number of 2nd order stages in the filter. - * @param[in] pCoeffs points to the filter coefficients. - * @param[in] pState points to the state buffer. - */ - void arm_biquad_cascade_df2T_init_f32( - arm_biquad_cascade_df2T_instance_f32 * S, - uint8_t numStages, - float32_t * pCoeffs, - float32_t * pState); - - - /** - * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter. - * @param[in,out] S points to an instance of the filter data structure. - * @param[in] numStages number of 2nd order stages in the filter. - * @param[in] pCoeffs points to the filter coefficients. - * @param[in] pState points to the state buffer. - */ - void arm_biquad_cascade_stereo_df2T_init_f32( - arm_biquad_cascade_stereo_df2T_instance_f32 * S, - uint8_t numStages, - float32_t * pCoeffs, - float32_t * pState); - - - /** - * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter. - * @param[in,out] S points to an instance of the filter data structure. - * @param[in] numStages number of 2nd order stages in the filter. - * @param[in] pCoeffs points to the filter coefficients. - * @param[in] pState points to the state buffer. - */ - void arm_biquad_cascade_df2T_init_f64( - arm_biquad_cascade_df2T_instance_f64 * S, - uint8_t numStages, - float64_t * pCoeffs, - float64_t * pState); - - - /** - * @brief Instance structure for the Q15 FIR lattice filter. - */ - typedef struct - { - uint16_t numStages; /**< number of filter stages. */ - q15_t *pState; /**< points to the state variable array. The array is of length numStages. */ - q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */ - } arm_fir_lattice_instance_q15; - - /** - * @brief Instance structure for the Q31 FIR lattice filter. - */ - typedef struct - { - uint16_t numStages; /**< number of filter stages. */ - q31_t *pState; /**< points to the state variable array. The array is of length numStages. */ - q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */ - } arm_fir_lattice_instance_q31; - - /** - * @brief Instance structure for the floating-point FIR lattice filter. - */ - typedef struct - { - uint16_t numStages; /**< number of filter stages. */ - float32_t *pState; /**< points to the state variable array. The array is of length numStages. */ - float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */ - } arm_fir_lattice_instance_f32; - - - /** - * @brief Initialization function for the Q15 FIR lattice filter. - * @param[in] S points to an instance of the Q15 FIR lattice structure. - * @param[in] numStages number of filter stages. - * @param[in] pCoeffs points to the coefficient buffer. The array is of length numStages. - * @param[in] pState points to the state buffer. The array is of length numStages. - */ - void arm_fir_lattice_init_q15( - arm_fir_lattice_instance_q15 * S, - uint16_t numStages, - q15_t * pCoeffs, - q15_t * pState); - - - /** - * @brief Processing function for the Q15 FIR lattice filter. - * @param[in] S points to an instance of the Q15 FIR lattice structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - */ - void arm_fir_lattice_q15( - const arm_fir_lattice_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - - /** - * @brief Initialization function for the Q31 FIR lattice filter. - * @param[in] S points to an instance of the Q31 FIR lattice structure. - * @param[in] numStages number of filter stages. - * @param[in] pCoeffs points to the coefficient buffer. The array is of length numStages. - * @param[in] pState points to the state buffer. The array is of length numStages. - */ - void arm_fir_lattice_init_q31( - arm_fir_lattice_instance_q31 * S, - uint16_t numStages, - q31_t * pCoeffs, - q31_t * pState); - - - /** - * @brief Processing function for the Q31 FIR lattice filter. - * @param[in] S points to an instance of the Q31 FIR lattice structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data - * @param[in] blockSize number of samples to process. - */ - void arm_fir_lattice_q31( - const arm_fir_lattice_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - -/** - * @brief Initialization function for the floating-point FIR lattice filter. - * @param[in] S points to an instance of the floating-point FIR lattice structure. - * @param[in] numStages number of filter stages. - * @param[in] pCoeffs points to the coefficient buffer. The array is of length numStages. - * @param[in] pState points to the state buffer. The array is of length numStages. - */ - void arm_fir_lattice_init_f32( - arm_fir_lattice_instance_f32 * S, - uint16_t numStages, - float32_t * pCoeffs, - float32_t * pState); - - - /** - * @brief Processing function for the floating-point FIR lattice filter. - * @param[in] S points to an instance of the floating-point FIR lattice structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data - * @param[in] blockSize number of samples to process. - */ - void arm_fir_lattice_f32( - const arm_fir_lattice_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - - /** - * @brief Instance structure for the Q15 IIR lattice filter. - */ - typedef struct - { - uint16_t numStages; /**< number of stages in the filter. */ - q15_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */ - q15_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */ - q15_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */ - } arm_iir_lattice_instance_q15; - - /** - * @brief Instance structure for the Q31 IIR lattice filter. - */ - typedef struct - { - uint16_t numStages; /**< number of stages in the filter. */ - q31_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */ - q31_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */ - q31_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */ - } arm_iir_lattice_instance_q31; - - /** - * @brief Instance structure for the floating-point IIR lattice filter. - */ - typedef struct - { - uint16_t numStages; /**< number of stages in the filter. */ - float32_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */ - float32_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */ - float32_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */ - } arm_iir_lattice_instance_f32; - - - /** - * @brief Processing function for the floating-point IIR lattice filter. - * @param[in] S points to an instance of the floating-point IIR lattice structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - */ - void arm_iir_lattice_f32( - const arm_iir_lattice_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - - /** - * @brief Initialization function for the floating-point IIR lattice filter. - * @param[in] S points to an instance of the floating-point IIR lattice structure. - * @param[in] numStages number of stages in the filter. - * @param[in] pkCoeffs points to the reflection coefficient buffer. The array is of length numStages. - * @param[in] pvCoeffs points to the ladder coefficient buffer. The array is of length numStages+1. - * @param[in] pState points to the state buffer. The array is of length numStages+blockSize-1. - * @param[in] blockSize number of samples to process. - */ - void arm_iir_lattice_init_f32( - arm_iir_lattice_instance_f32 * S, - uint16_t numStages, - float32_t * pkCoeffs, - float32_t * pvCoeffs, - float32_t * pState, - uint32_t blockSize); - - - /** - * @brief Processing function for the Q31 IIR lattice filter. - * @param[in] S points to an instance of the Q31 IIR lattice structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - */ - void arm_iir_lattice_q31( - const arm_iir_lattice_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - - /** - * @brief Initialization function for the Q31 IIR lattice filter. - * @param[in] S points to an instance of the Q31 IIR lattice structure. - * @param[in] numStages number of stages in the filter. - * @param[in] pkCoeffs points to the reflection coefficient buffer. The array is of length numStages. - * @param[in] pvCoeffs points to the ladder coefficient buffer. The array is of length numStages+1. - * @param[in] pState points to the state buffer. The array is of length numStages+blockSize. - * @param[in] blockSize number of samples to process. - */ - void arm_iir_lattice_init_q31( - arm_iir_lattice_instance_q31 * S, - uint16_t numStages, - q31_t * pkCoeffs, - q31_t * pvCoeffs, - q31_t * pState, - uint32_t blockSize); - - - /** - * @brief Processing function for the Q15 IIR lattice filter. - * @param[in] S points to an instance of the Q15 IIR lattice structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data. - * @param[in] blockSize number of samples to process. - */ - void arm_iir_lattice_q15( - const arm_iir_lattice_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - -/** - * @brief Initialization function for the Q15 IIR lattice filter. - * @param[in] S points to an instance of the fixed-point Q15 IIR lattice structure. - * @param[in] numStages number of stages in the filter. - * @param[in] pkCoeffs points to reflection coefficient buffer. The array is of length numStages. - * @param[in] pvCoeffs points to ladder coefficient buffer. The array is of length numStages+1. - * @param[in] pState points to state buffer. The array is of length numStages+blockSize. - * @param[in] blockSize number of samples to process per call. - */ - void arm_iir_lattice_init_q15( - arm_iir_lattice_instance_q15 * S, - uint16_t numStages, - q15_t * pkCoeffs, - q15_t * pvCoeffs, - q15_t * pState, - uint32_t blockSize); - - - /** - * @brief Instance structure for the floating-point LMS filter. - */ - typedef struct - { - uint16_t numTaps; /**< number of coefficients in the filter. */ - float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ - float32_t mu; /**< step size that controls filter coefficient updates. */ - } arm_lms_instance_f32; - - - /** - * @brief Processing function for floating-point LMS filter. - * @param[in] S points to an instance of the floating-point LMS filter structure. - * @param[in] pSrc points to the block of input data. - * @param[in] pRef points to the block of reference data. - * @param[out] pOut points to the block of output data. - * @param[out] pErr points to the block of error data. - * @param[in] blockSize number of samples to process. - */ - void arm_lms_f32( - const arm_lms_instance_f32 * S, - float32_t * pSrc, - float32_t * pRef, - float32_t * pOut, - float32_t * pErr, - uint32_t blockSize); - - - /** - * @brief Initialization function for floating-point LMS filter. - * @param[in] S points to an instance of the floating-point LMS filter structure. - * @param[in] numTaps number of filter coefficients. - * @param[in] pCoeffs points to the coefficient buffer. - * @param[in] pState points to state buffer. - * @param[in] mu step size that controls filter coefficient updates. - * @param[in] blockSize number of samples to process. - */ - void arm_lms_init_f32( - arm_lms_instance_f32 * S, - uint16_t numTaps, - float32_t * pCoeffs, - float32_t * pState, - float32_t mu, - uint32_t blockSize); - - - /** - * @brief Instance structure for the Q15 LMS filter. - */ - typedef struct - { - uint16_t numTaps; /**< number of coefficients in the filter. */ - q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ - q15_t mu; /**< step size that controls filter coefficient updates. */ - uint32_t postShift; /**< bit shift applied to coefficients. */ - } arm_lms_instance_q15; - - - /** - * @brief Initialization function for the Q15 LMS filter. - * @param[in] S points to an instance of the Q15 LMS filter structure. - * @param[in] numTaps number of filter coefficients. - * @param[in] pCoeffs points to the coefficient buffer. - * @param[in] pState points to the state buffer. - * @param[in] mu step size that controls filter coefficient updates. - * @param[in] blockSize number of samples to process. - * @param[in] postShift bit shift applied to coefficients. - */ - void arm_lms_init_q15( - arm_lms_instance_q15 * S, - uint16_t numTaps, - q15_t * pCoeffs, - q15_t * pState, - q15_t mu, - uint32_t blockSize, - uint32_t postShift); - - - /** - * @brief Processing function for Q15 LMS filter. - * @param[in] S points to an instance of the Q15 LMS filter structure. - * @param[in] pSrc points to the block of input data. - * @param[in] pRef points to the block of reference data. - * @param[out] pOut points to the block of output data. - * @param[out] pErr points to the block of error data. - * @param[in] blockSize number of samples to process. - */ - void arm_lms_q15( - const arm_lms_instance_q15 * S, - q15_t * pSrc, - q15_t * pRef, - q15_t * pOut, - q15_t * pErr, - uint32_t blockSize); - - - /** - * @brief Instance structure for the Q31 LMS filter. - */ - typedef struct - { - uint16_t numTaps; /**< number of coefficients in the filter. */ - q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ - q31_t mu; /**< step size that controls filter coefficient updates. */ - uint32_t postShift; /**< bit shift applied to coefficients. */ - } arm_lms_instance_q31; - - - /** - * @brief Processing function for Q31 LMS filter. - * @param[in] S points to an instance of the Q15 LMS filter structure. - * @param[in] pSrc points to the block of input data. - * @param[in] pRef points to the block of reference data. - * @param[out] pOut points to the block of output data. - * @param[out] pErr points to the block of error data. - * @param[in] blockSize number of samples to process. - */ - void arm_lms_q31( - const arm_lms_instance_q31 * S, - q31_t * pSrc, - q31_t * pRef, - q31_t * pOut, - q31_t * pErr, - uint32_t blockSize); - - - /** - * @brief Initialization function for Q31 LMS filter. - * @param[in] S points to an instance of the Q31 LMS filter structure. - * @param[in] numTaps number of filter coefficients. - * @param[in] pCoeffs points to coefficient buffer. - * @param[in] pState points to state buffer. - * @param[in] mu step size that controls filter coefficient updates. - * @param[in] blockSize number of samples to process. - * @param[in] postShift bit shift applied to coefficients. - */ - void arm_lms_init_q31( - arm_lms_instance_q31 * S, - uint16_t numTaps, - q31_t * pCoeffs, - q31_t * pState, - q31_t mu, - uint32_t blockSize, - uint32_t postShift); - - - /** - * @brief Instance structure for the floating-point normalized LMS filter. - */ - typedef struct - { - uint16_t numTaps; /**< number of coefficients in the filter. */ - float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ - float32_t mu; /**< step size that control filter coefficient updates. */ - float32_t energy; /**< saves previous frame energy. */ - float32_t x0; /**< saves previous input sample. */ - } arm_lms_norm_instance_f32; - - - /** - * @brief Processing function for floating-point normalized LMS filter. - * @param[in] S points to an instance of the floating-point normalized LMS filter structure. - * @param[in] pSrc points to the block of input data. - * @param[in] pRef points to the block of reference data. - * @param[out] pOut points to the block of output data. - * @param[out] pErr points to the block of error data. - * @param[in] blockSize number of samples to process. - */ - void arm_lms_norm_f32( - arm_lms_norm_instance_f32 * S, - float32_t * pSrc, - float32_t * pRef, - float32_t * pOut, - float32_t * pErr, - uint32_t blockSize); - - - /** - * @brief Initialization function for floating-point normalized LMS filter. - * @param[in] S points to an instance of the floating-point LMS filter structure. - * @param[in] numTaps number of filter coefficients. - * @param[in] pCoeffs points to coefficient buffer. - * @param[in] pState points to state buffer. - * @param[in] mu step size that controls filter coefficient updates. - * @param[in] blockSize number of samples to process. - */ - void arm_lms_norm_init_f32( - arm_lms_norm_instance_f32 * S, - uint16_t numTaps, - float32_t * pCoeffs, - float32_t * pState, - float32_t mu, - uint32_t blockSize); - - - /** - * @brief Instance structure for the Q31 normalized LMS filter. - */ - typedef struct - { - uint16_t numTaps; /**< number of coefficients in the filter. */ - q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ - q31_t mu; /**< step size that controls filter coefficient updates. */ - uint8_t postShift; /**< bit shift applied to coefficients. */ - q31_t *recipTable; /**< points to the reciprocal initial value table. */ - q31_t energy; /**< saves previous frame energy. */ - q31_t x0; /**< saves previous input sample. */ - } arm_lms_norm_instance_q31; - - - /** - * @brief Processing function for Q31 normalized LMS filter. - * @param[in] S points to an instance of the Q31 normalized LMS filter structure. - * @param[in] pSrc points to the block of input data. - * @param[in] pRef points to the block of reference data. - * @param[out] pOut points to the block of output data. - * @param[out] pErr points to the block of error data. - * @param[in] blockSize number of samples to process. - */ - void arm_lms_norm_q31( - arm_lms_norm_instance_q31 * S, - q31_t * pSrc, - q31_t * pRef, - q31_t * pOut, - q31_t * pErr, - uint32_t blockSize); - - - /** - * @brief Initialization function for Q31 normalized LMS filter. - * @param[in] S points to an instance of the Q31 normalized LMS filter structure. - * @param[in] numTaps number of filter coefficients. - * @param[in] pCoeffs points to coefficient buffer. - * @param[in] pState points to state buffer. - * @param[in] mu step size that controls filter coefficient updates. - * @param[in] blockSize number of samples to process. - * @param[in] postShift bit shift applied to coefficients. - */ - void arm_lms_norm_init_q31( - arm_lms_norm_instance_q31 * S, - uint16_t numTaps, - q31_t * pCoeffs, - q31_t * pState, - q31_t mu, - uint32_t blockSize, - uint8_t postShift); - - - /** - * @brief Instance structure for the Q15 normalized LMS filter. - */ - typedef struct - { - uint16_t numTaps; /**< Number of coefficients in the filter. */ - q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ - q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ - q15_t mu; /**< step size that controls filter coefficient updates. */ - uint8_t postShift; /**< bit shift applied to coefficients. */ - q15_t *recipTable; /**< Points to the reciprocal initial value table. */ - q15_t energy; /**< saves previous frame energy. */ - q15_t x0; /**< saves previous input sample. */ - } arm_lms_norm_instance_q15; - - - /** - * @brief Processing function for Q15 normalized LMS filter. - * @param[in] S points to an instance of the Q15 normalized LMS filter structure. - * @param[in] pSrc points to the block of input data. - * @param[in] pRef points to the block of reference data. - * @param[out] pOut points to the block of output data. - * @param[out] pErr points to the block of error data. - * @param[in] blockSize number of samples to process. - */ - void arm_lms_norm_q15( - arm_lms_norm_instance_q15 * S, - q15_t * pSrc, - q15_t * pRef, - q15_t * pOut, - q15_t * pErr, - uint32_t blockSize); - - - /** - * @brief Initialization function for Q15 normalized LMS filter. - * @param[in] S points to an instance of the Q15 normalized LMS filter structure. - * @param[in] numTaps number of filter coefficients. - * @param[in] pCoeffs points to coefficient buffer. - * @param[in] pState points to state buffer. - * @param[in] mu step size that controls filter coefficient updates. - * @param[in] blockSize number of samples to process. - * @param[in] postShift bit shift applied to coefficients. - */ - void arm_lms_norm_init_q15( - arm_lms_norm_instance_q15 * S, - uint16_t numTaps, - q15_t * pCoeffs, - q15_t * pState, - q15_t mu, - uint32_t blockSize, - uint8_t postShift); - - - /** - * @brief Correlation of floating-point sequences. - * @param[in] pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. - */ - void arm_correlate_f32( - float32_t * pSrcA, - uint32_t srcALen, - float32_t * pSrcB, - uint32_t srcBLen, - float32_t * pDst); - - - /** - * @brief Correlation of Q15 sequences - * @param[in] pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. - * @param[in] pScratch points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. - */ - void arm_correlate_opt_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst, - q15_t * pScratch); - - - /** - * @brief Correlation of Q15 sequences. - * @param[in] pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. - */ - - void arm_correlate_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst); - - - /** - * @brief Correlation of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4. - * @param[in] pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. - */ - - void arm_correlate_fast_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst); - - - /** - * @brief Correlation of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4. - * @param[in] pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. - * @param[in] pScratch points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. - */ - void arm_correlate_fast_opt_q15( - q15_t * pSrcA, - uint32_t srcALen, - q15_t * pSrcB, - uint32_t srcBLen, - q15_t * pDst, - q15_t * pScratch); - - - /** - * @brief Correlation of Q31 sequences. - * @param[in] pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. - */ - void arm_correlate_q31( - q31_t * pSrcA, - uint32_t srcALen, - q31_t * pSrcB, - uint32_t srcBLen, - q31_t * pDst); - - - /** - * @brief Correlation of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4 - * @param[in] pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. - */ - void arm_correlate_fast_q31( - q31_t * pSrcA, - uint32_t srcALen, - q31_t * pSrcB, - uint32_t srcBLen, - q31_t * pDst); - - - /** - * @brief Correlation of Q7 sequences. - * @param[in] pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. - * @param[in] pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. - * @param[in] pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen). - */ - void arm_correlate_opt_q7( - q7_t * pSrcA, - uint32_t srcALen, - q7_t * pSrcB, - uint32_t srcBLen, - q7_t * pDst, - q15_t * pScratch1, - q15_t * pScratch2); - - - /** - * @brief Correlation of Q7 sequences. - * @param[in] pSrcA points to the first input sequence. - * @param[in] srcALen length of the first input sequence. - * @param[in] pSrcB points to the second input sequence. - * @param[in] srcBLen length of the second input sequence. - * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. - */ - void arm_correlate_q7( - q7_t * pSrcA, - uint32_t srcALen, - q7_t * pSrcB, - uint32_t srcBLen, - q7_t * pDst); - - - /** - * @brief Instance structure for the floating-point sparse FIR filter. - */ - typedef struct - { - uint16_t numTaps; /**< number of coefficients in the filter. */ - uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ - float32_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ - float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ - uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ - int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ - } arm_fir_sparse_instance_f32; - - /** - * @brief Instance structure for the Q31 sparse FIR filter. - */ - typedef struct - { - uint16_t numTaps; /**< number of coefficients in the filter. */ - uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ - q31_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ - q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ - uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ - int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ - } arm_fir_sparse_instance_q31; - - /** - * @brief Instance structure for the Q15 sparse FIR filter. - */ - typedef struct - { - uint16_t numTaps; /**< number of coefficients in the filter. */ - uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ - q15_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ - q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ - uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ - int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ - } arm_fir_sparse_instance_q15; - - /** - * @brief Instance structure for the Q7 sparse FIR filter. - */ - typedef struct - { - uint16_t numTaps; /**< number of coefficients in the filter. */ - uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ - q7_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ - q7_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ - uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ - int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ - } arm_fir_sparse_instance_q7; - - - /** - * @brief Processing function for the floating-point sparse FIR filter. - * @param[in] S points to an instance of the floating-point sparse FIR structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data - * @param[in] pScratchIn points to a temporary buffer of size blockSize. - * @param[in] blockSize number of input samples to process per call. - */ - void arm_fir_sparse_f32( - arm_fir_sparse_instance_f32 * S, - float32_t * pSrc, - float32_t * pDst, - float32_t * pScratchIn, - uint32_t blockSize); - - - /** - * @brief Initialization function for the floating-point sparse FIR filter. - * @param[in,out] S points to an instance of the floating-point sparse FIR structure. - * @param[in] numTaps number of nonzero coefficients in the filter. - * @param[in] pCoeffs points to the array of filter coefficients. - * @param[in] pState points to the state buffer. - * @param[in] pTapDelay points to the array of offset times. - * @param[in] maxDelay maximum offset time supported. - * @param[in] blockSize number of samples that will be processed per block. - */ - void arm_fir_sparse_init_f32( - arm_fir_sparse_instance_f32 * S, - uint16_t numTaps, - float32_t * pCoeffs, - float32_t * pState, - int32_t * pTapDelay, - uint16_t maxDelay, - uint32_t blockSize); - - - /** - * @brief Processing function for the Q31 sparse FIR filter. - * @param[in] S points to an instance of the Q31 sparse FIR structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data - * @param[in] pScratchIn points to a temporary buffer of size blockSize. - * @param[in] blockSize number of input samples to process per call. - */ - void arm_fir_sparse_q31( - arm_fir_sparse_instance_q31 * S, - q31_t * pSrc, - q31_t * pDst, - q31_t * pScratchIn, - uint32_t blockSize); - - - /** - * @brief Initialization function for the Q31 sparse FIR filter. - * @param[in,out] S points to an instance of the Q31 sparse FIR structure. - * @param[in] numTaps number of nonzero coefficients in the filter. - * @param[in] pCoeffs points to the array of filter coefficients. - * @param[in] pState points to the state buffer. - * @param[in] pTapDelay points to the array of offset times. - * @param[in] maxDelay maximum offset time supported. - * @param[in] blockSize number of samples that will be processed per block. - */ - void arm_fir_sparse_init_q31( - arm_fir_sparse_instance_q31 * S, - uint16_t numTaps, - q31_t * pCoeffs, - q31_t * pState, - int32_t * pTapDelay, - uint16_t maxDelay, - uint32_t blockSize); - - - /** - * @brief Processing function for the Q15 sparse FIR filter. - * @param[in] S points to an instance of the Q15 sparse FIR structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data - * @param[in] pScratchIn points to a temporary buffer of size blockSize. - * @param[in] pScratchOut points to a temporary buffer of size blockSize. - * @param[in] blockSize number of input samples to process per call. - */ - void arm_fir_sparse_q15( - arm_fir_sparse_instance_q15 * S, - q15_t * pSrc, - q15_t * pDst, - q15_t * pScratchIn, - q31_t * pScratchOut, - uint32_t blockSize); - - - /** - * @brief Initialization function for the Q15 sparse FIR filter. - * @param[in,out] S points to an instance of the Q15 sparse FIR structure. - * @param[in] numTaps number of nonzero coefficients in the filter. - * @param[in] pCoeffs points to the array of filter coefficients. - * @param[in] pState points to the state buffer. - * @param[in] pTapDelay points to the array of offset times. - * @param[in] maxDelay maximum offset time supported. - * @param[in] blockSize number of samples that will be processed per block. - */ - void arm_fir_sparse_init_q15( - arm_fir_sparse_instance_q15 * S, - uint16_t numTaps, - q15_t * pCoeffs, - q15_t * pState, - int32_t * pTapDelay, - uint16_t maxDelay, - uint32_t blockSize); - - - /** - * @brief Processing function for the Q7 sparse FIR filter. - * @param[in] S points to an instance of the Q7 sparse FIR structure. - * @param[in] pSrc points to the block of input data. - * @param[out] pDst points to the block of output data - * @param[in] pScratchIn points to a temporary buffer of size blockSize. - * @param[in] pScratchOut points to a temporary buffer of size blockSize. - * @param[in] blockSize number of input samples to process per call. - */ - void arm_fir_sparse_q7( - arm_fir_sparse_instance_q7 * S, - q7_t * pSrc, - q7_t * pDst, - q7_t * pScratchIn, - q31_t * pScratchOut, - uint32_t blockSize); - - - /** - * @brief Initialization function for the Q7 sparse FIR filter. - * @param[in,out] S points to an instance of the Q7 sparse FIR structure. - * @param[in] numTaps number of nonzero coefficients in the filter. - * @param[in] pCoeffs points to the array of filter coefficients. - * @param[in] pState points to the state buffer. - * @param[in] pTapDelay points to the array of offset times. - * @param[in] maxDelay maximum offset time supported. - * @param[in] blockSize number of samples that will be processed per block. - */ - void arm_fir_sparse_init_q7( - arm_fir_sparse_instance_q7 * S, - uint16_t numTaps, - q7_t * pCoeffs, - q7_t * pState, - int32_t * pTapDelay, - uint16_t maxDelay, - uint32_t blockSize); - - - /** - * @brief Floating-point sin_cos function. - * @param[in] theta input value in degrees - * @param[out] pSinVal points to the processed sine output. - * @param[out] pCosVal points to the processed cos output. - */ - void arm_sin_cos_f32( - float32_t theta, - float32_t * pSinVal, - float32_t * pCosVal); - - - /** - * @brief Q31 sin_cos function. - * @param[in] theta scaled input value in degrees - * @param[out] pSinVal points to the processed sine output. - * @param[out] pCosVal points to the processed cosine output. - */ - void arm_sin_cos_q31( - q31_t theta, - q31_t * pSinVal, - q31_t * pCosVal); - - - /** - * @brief Floating-point complex conjugate. - * @param[in] pSrc points to the input vector - * @param[out] pDst points to the output vector - * @param[in] numSamples number of complex samples in each vector - */ - void arm_cmplx_conj_f32( - float32_t * pSrc, - float32_t * pDst, - uint32_t numSamples); - - /** - * @brief Q31 complex conjugate. - * @param[in] pSrc points to the input vector - * @param[out] pDst points to the output vector - * @param[in] numSamples number of complex samples in each vector - */ - void arm_cmplx_conj_q31( - q31_t * pSrc, - q31_t * pDst, - uint32_t numSamples); - - - /** - * @brief Q15 complex conjugate. - * @param[in] pSrc points to the input vector - * @param[out] pDst points to the output vector - * @param[in] numSamples number of complex samples in each vector - */ - void arm_cmplx_conj_q15( - q15_t * pSrc, - q15_t * pDst, - uint32_t numSamples); - - - /** - * @brief Floating-point complex magnitude squared - * @param[in] pSrc points to the complex input vector - * @param[out] pDst points to the real output vector - * @param[in] numSamples number of complex samples in the input vector - */ - void arm_cmplx_mag_squared_f32( - float32_t * pSrc, - float32_t * pDst, - uint32_t numSamples); - - - /** - * @brief Q31 complex magnitude squared - * @param[in] pSrc points to the complex input vector - * @param[out] pDst points to the real output vector - * @param[in] numSamples number of complex samples in the input vector - */ - void arm_cmplx_mag_squared_q31( - q31_t * pSrc, - q31_t * pDst, - uint32_t numSamples); - - - /** - * @brief Q15 complex magnitude squared - * @param[in] pSrc points to the complex input vector - * @param[out] pDst points to the real output vector - * @param[in] numSamples number of complex samples in the input vector - */ - void arm_cmplx_mag_squared_q15( - q15_t * pSrc, - q15_t * pDst, - uint32_t numSamples); - - - /** - * @ingroup groupController - */ - - /** - * @defgroup PID PID Motor Control - * - * A Proportional Integral Derivative (PID) controller is a generic feedback control - * loop mechanism widely used in industrial control systems. - * A PID controller is the most commonly used type of feedback controller. - * - * This set of functions implements (PID) controllers - * for Q15, Q31, and floating-point data types. The functions operate on a single sample - * of data and each call to the function returns a single processed value. - * S points to an instance of the PID control data structure. in - * is the input sample value. The functions return the output value. - * - * \par Algorithm: - *
-   *    y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2]
-   *    A0 = Kp + Ki + Kd
-   *    A1 = (-Kp ) - (2 * Kd )
-   *    A2 = Kd  
- * - * \par - * where \c Kp is proportional constant, \c Ki is Integral constant and \c Kd is Derivative constant - * - * \par - * \image html PID.gif "Proportional Integral Derivative Controller" - * - * \par - * The PID controller calculates an "error" value as the difference between - * the measured output and the reference input. - * The controller attempts to minimize the error by adjusting the process control inputs. - * The proportional value determines the reaction to the current error, - * the integral value determines the reaction based on the sum of recent errors, - * and the derivative value determines the reaction based on the rate at which the error has been changing. - * - * \par Instance Structure - * The Gains A0, A1, A2 and state variables for a PID controller are stored together in an instance data structure. - * A separate instance structure must be defined for each PID Controller. - * There are separate instance structure declarations for each of the 3 supported data types. - * - * \par Reset Functions - * There is also an associated reset function for each data type which clears the state array. - * - * \par Initialization Functions - * There is also an associated initialization function for each data type. - * The initialization function performs the following operations: - * - Initializes the Gains A0, A1, A2 from Kp,Ki, Kd gains. - * - Zeros out the values in the state buffer. - * - * \par - * Instance structure cannot be placed into a const data section and it is recommended to use the initialization function. - * - * \par Fixed-Point Behavior - * Care must be taken when using the fixed-point versions of the PID Controller functions. - * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. - * Refer to the function specific documentation below for usage guidelines. - */ - - /** - * @addtogroup PID - * @{ - */ - - /** - * @brief Process function for the floating-point PID Control. - * @param[in,out] S is an instance of the floating-point PID Control structure - * @param[in] in input sample to process - * @return out processed output sample. - */ - static __INLINE float32_t arm_pid_f32( - arm_pid_instance_f32 * S, - float32_t in) - { - float32_t out; - - /* y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2] */ - out = (S->A0 * in) + - (S->A1 * S->state[0]) + (S->A2 * S->state[1]) + (S->state[2]); - - /* Update state */ - S->state[1] = S->state[0]; - S->state[0] = in; - S->state[2] = out; - - /* return to application */ - return (out); - - } - - /** - * @brief Process function for the Q31 PID Control. - * @param[in,out] S points to an instance of the Q31 PID Control structure - * @param[in] in input sample to process - * @return out processed output sample. - * - * Scaling and Overflow Behavior: - * \par - * The function is implemented using an internal 64-bit accumulator. - * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. - * Thus, if the accumulator result overflows it wraps around rather than clip. - * In order to avoid overflows completely the input signal must be scaled down by 2 bits as there are four additions. - * After all multiply-accumulates are performed, the 2.62 accumulator is truncated to 1.32 format and then saturated to 1.31 format. - */ - static __INLINE q31_t arm_pid_q31( - arm_pid_instance_q31 * S, - q31_t in) - { - q63_t acc; - q31_t out; - - /* acc = A0 * x[n] */ - acc = (q63_t) S->A0 * in; - - /* acc += A1 * x[n-1] */ - acc += (q63_t) S->A1 * S->state[0]; - - /* acc += A2 * x[n-2] */ - acc += (q63_t) S->A2 * S->state[1]; - - /* convert output to 1.31 format to add y[n-1] */ - out = (q31_t) (acc >> 31u); - - /* out += y[n-1] */ - out += S->state[2]; - - /* Update state */ - S->state[1] = S->state[0]; - S->state[0] = in; - S->state[2] = out; - - /* return to application */ - return (out); - } - - - /** - * @brief Process function for the Q15 PID Control. - * @param[in,out] S points to an instance of the Q15 PID Control structure - * @param[in] in input sample to process - * @return out processed output sample. - * - * Scaling and Overflow Behavior: - * \par - * The function is implemented using a 64-bit internal accumulator. - * Both Gains and state variables are represented in 1.15 format and multiplications yield a 2.30 result. - * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. - * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. - * After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits. - * Lastly, the accumulator is saturated to yield a result in 1.15 format. - */ - static __INLINE q15_t arm_pid_q15( - arm_pid_instance_q15 * S, - q15_t in) - { - q63_t acc; - q15_t out; - -#ifndef ARM_MATH_CM0_FAMILY - __SIMD32_TYPE *vstate; - - /* Implementation of PID controller */ - - /* acc = A0 * x[n] */ - acc = (q31_t) __SMUAD((uint32_t)S->A0, (uint32_t)in); - - /* acc += A1 * x[n-1] + A2 * x[n-2] */ - vstate = __SIMD32_CONST(S->state); - acc = (q63_t)__SMLALD((uint32_t)S->A1, (uint32_t)*vstate, (uint64_t)acc); -#else - /* acc = A0 * x[n] */ - acc = ((q31_t) S->A0) * in; - - /* acc += A1 * x[n-1] + A2 * x[n-2] */ - acc += (q31_t) S->A1 * S->state[0]; - acc += (q31_t) S->A2 * S->state[1]; -#endif - - /* acc += y[n-1] */ - acc += (q31_t) S->state[2] << 15; - - /* saturate the output */ - out = (q15_t) (__SSAT((acc >> 15), 16)); - - /* Update state */ - S->state[1] = S->state[0]; - S->state[0] = in; - S->state[2] = out; - - /* return to application */ - return (out); - } - - /** - * @} end of PID group - */ - - - /** - * @brief Floating-point matrix inverse. - * @param[in] src points to the instance of the input floating-point matrix structure. - * @param[out] dst points to the instance of the output floating-point matrix structure. - * @return The function returns ARM_MATH_SIZE_MISMATCH, if the dimensions do not match. - * If the input matrix is singular (does not have an inverse), then the algorithm terminates and returns error status ARM_MATH_SINGULAR. - */ - arm_status arm_mat_inverse_f32( - const arm_matrix_instance_f32 * src, - arm_matrix_instance_f32 * dst); - - - /** - * @brief Floating-point matrix inverse. - * @param[in] src points to the instance of the input floating-point matrix structure. - * @param[out] dst points to the instance of the output floating-point matrix structure. - * @return The function returns ARM_MATH_SIZE_MISMATCH, if the dimensions do not match. - * If the input matrix is singular (does not have an inverse), then the algorithm terminates and returns error status ARM_MATH_SINGULAR. - */ - arm_status arm_mat_inverse_f64( - const arm_matrix_instance_f64 * src, - arm_matrix_instance_f64 * dst); - - - - /** - * @ingroup groupController - */ - - /** - * @defgroup clarke Vector Clarke Transform - * Forward Clarke transform converts the instantaneous stator phases into a two-coordinate time invariant vector. - * Generally the Clarke transform uses three-phase currents Ia, Ib and Ic to calculate currents - * in the two-phase orthogonal stator axis Ialpha and Ibeta. - * When Ialpha is superposed with Ia as shown in the figure below - * \image html clarke.gif Stator current space vector and its components in (a,b). - * and Ia + Ib + Ic = 0, in this condition Ialpha and Ibeta - * can be calculated using only Ia and Ib. - * - * The function operates on a single sample of data and each call to the function returns the processed output. - * The library provides separate functions for Q31 and floating-point data types. - * \par Algorithm - * \image html clarkeFormula.gif - * where Ia and Ib are the instantaneous stator phases and - * pIalpha and pIbeta are the two coordinates of time invariant vector. - * \par Fixed-Point Behavior - * Care must be taken when using the Q31 version of the Clarke transform. - * In particular, the overflow and saturation behavior of the accumulator used must be considered. - * Refer to the function specific documentation below for usage guidelines. - */ - - /** - * @addtogroup clarke - * @{ - */ - - /** - * - * @brief Floating-point Clarke transform - * @param[in] Ia input three-phase coordinate a - * @param[in] Ib input three-phase coordinate b - * @param[out] pIalpha points to output two-phase orthogonal vector axis alpha - * @param[out] pIbeta points to output two-phase orthogonal vector axis beta - */ - static __INLINE void arm_clarke_f32( - float32_t Ia, - float32_t Ib, - float32_t * pIalpha, - float32_t * pIbeta) - { - /* Calculate pIalpha using the equation, pIalpha = Ia */ - *pIalpha = Ia; - - /* Calculate pIbeta using the equation, pIbeta = (1/sqrt(3)) * Ia + (2/sqrt(3)) * Ib */ - *pIbeta = ((float32_t) 0.57735026919 * Ia + (float32_t) 1.15470053838 * Ib); - } - - - /** - * @brief Clarke transform for Q31 version - * @param[in] Ia input three-phase coordinate a - * @param[in] Ib input three-phase coordinate b - * @param[out] pIalpha points to output two-phase orthogonal vector axis alpha - * @param[out] pIbeta points to output two-phase orthogonal vector axis beta - * - * Scaling and Overflow Behavior: - * \par - * The function is implemented using an internal 32-bit accumulator. - * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. - * There is saturation on the addition, hence there is no risk of overflow. - */ - static __INLINE void arm_clarke_q31( - q31_t Ia, - q31_t Ib, - q31_t * pIalpha, - q31_t * pIbeta) - { - q31_t product1, product2; /* Temporary variables used to store intermediate results */ - - /* Calculating pIalpha from Ia by equation pIalpha = Ia */ - *pIalpha = Ia; - - /* Intermediate product is calculated by (1/(sqrt(3)) * Ia) */ - product1 = (q31_t) (((q63_t) Ia * 0x24F34E8B) >> 30); - - /* Intermediate product is calculated by (2/sqrt(3) * Ib) */ - product2 = (q31_t) (((q63_t) Ib * 0x49E69D16) >> 30); - - /* pIbeta is calculated by adding the intermediate products */ - *pIbeta = __QADD(product1, product2); - } - - /** - * @} end of clarke group - */ - - /** - * @brief Converts the elements of the Q7 vector to Q31 vector. - * @param[in] pSrc input pointer - * @param[out] pDst output pointer - * @param[in] blockSize number of samples to process - */ - void arm_q7_to_q31( - q7_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - - - /** - * @ingroup groupController - */ - - /** - * @defgroup inv_clarke Vector Inverse Clarke Transform - * Inverse Clarke transform converts the two-coordinate time invariant vector into instantaneous stator phases. - * - * The function operates on a single sample of data and each call to the function returns the processed output. - * The library provides separate functions for Q31 and floating-point data types. - * \par Algorithm - * \image html clarkeInvFormula.gif - * where pIa and pIb are the instantaneous stator phases and - * Ialpha and Ibeta are the two coordinates of time invariant vector. - * \par Fixed-Point Behavior - * Care must be taken when using the Q31 version of the Clarke transform. - * In particular, the overflow and saturation behavior of the accumulator used must be considered. - * Refer to the function specific documentation below for usage guidelines. - */ - - /** - * @addtogroup inv_clarke - * @{ - */ - - /** - * @brief Floating-point Inverse Clarke transform - * @param[in] Ialpha input two-phase orthogonal vector axis alpha - * @param[in] Ibeta input two-phase orthogonal vector axis beta - * @param[out] pIa points to output three-phase coordinate a - * @param[out] pIb points to output three-phase coordinate b - */ - static __INLINE void arm_inv_clarke_f32( - float32_t Ialpha, - float32_t Ibeta, - float32_t * pIa, - float32_t * pIb) - { - /* Calculating pIa from Ialpha by equation pIa = Ialpha */ - *pIa = Ialpha; - - /* Calculating pIb from Ialpha and Ibeta by equation pIb = -(1/2) * Ialpha + (sqrt(3)/2) * Ibeta */ - *pIb = -0.5f * Ialpha + 0.8660254039f * Ibeta; - } - - - /** - * @brief Inverse Clarke transform for Q31 version - * @param[in] Ialpha input two-phase orthogonal vector axis alpha - * @param[in] Ibeta input two-phase orthogonal vector axis beta - * @param[out] pIa points to output three-phase coordinate a - * @param[out] pIb points to output three-phase coordinate b - * - * Scaling and Overflow Behavior: - * \par - * The function is implemented using an internal 32-bit accumulator. - * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. - * There is saturation on the subtraction, hence there is no risk of overflow. - */ - static __INLINE void arm_inv_clarke_q31( - q31_t Ialpha, - q31_t Ibeta, - q31_t * pIa, - q31_t * pIb) - { - q31_t product1, product2; /* Temporary variables used to store intermediate results */ - - /* Calculating pIa from Ialpha by equation pIa = Ialpha */ - *pIa = Ialpha; - - /* Intermediate product is calculated by (1/(2*sqrt(3)) * Ia) */ - product1 = (q31_t) (((q63_t) (Ialpha) * (0x40000000)) >> 31); - - /* Intermediate product is calculated by (1/sqrt(3) * pIb) */ - product2 = (q31_t) (((q63_t) (Ibeta) * (0x6ED9EBA1)) >> 31); - - /* pIb is calculated by subtracting the products */ - *pIb = __QSUB(product2, product1); - } - - /** - * @} end of inv_clarke group - */ - - /** - * @brief Converts the elements of the Q7 vector to Q15 vector. - * @param[in] pSrc input pointer - * @param[out] pDst output pointer - * @param[in] blockSize number of samples to process - */ - void arm_q7_to_q15( - q7_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - - - /** - * @ingroup groupController - */ - - /** - * @defgroup park Vector Park Transform - * - * Forward Park transform converts the input two-coordinate vector to flux and torque components. - * The Park transform can be used to realize the transformation of the Ialpha and the Ibeta currents - * from the stationary to the moving reference frame and control the spatial relationship between - * the stator vector current and rotor flux vector. - * If we consider the d axis aligned with the rotor flux, the diagram below shows the - * current vector and the relationship from the two reference frames: - * \image html park.gif "Stator current space vector and its component in (a,b) and in the d,q rotating reference frame" - * - * The function operates on a single sample of data and each call to the function returns the processed output. - * The library provides separate functions for Q31 and floating-point data types. - * \par Algorithm - * \image html parkFormula.gif - * where Ialpha and Ibeta are the stator vector components, - * pId and pIq are rotor vector components and cosVal and sinVal are the - * cosine and sine values of theta (rotor flux position). - * \par Fixed-Point Behavior - * Care must be taken when using the Q31 version of the Park transform. - * In particular, the overflow and saturation behavior of the accumulator used must be considered. - * Refer to the function specific documentation below for usage guidelines. - */ - - /** - * @addtogroup park - * @{ - */ - - /** - * @brief Floating-point Park transform - * @param[in] Ialpha input two-phase vector coordinate alpha - * @param[in] Ibeta input two-phase vector coordinate beta - * @param[out] pId points to output rotor reference frame d - * @param[out] pIq points to output rotor reference frame q - * @param[in] sinVal sine value of rotation angle theta - * @param[in] cosVal cosine value of rotation angle theta - * - * The function implements the forward Park transform. - * - */ - static __INLINE void arm_park_f32( - float32_t Ialpha, - float32_t Ibeta, - float32_t * pId, - float32_t * pIq, - float32_t sinVal, - float32_t cosVal) - { - /* Calculate pId using the equation, pId = Ialpha * cosVal + Ibeta * sinVal */ - *pId = Ialpha * cosVal + Ibeta * sinVal; - - /* Calculate pIq using the equation, pIq = - Ialpha * sinVal + Ibeta * cosVal */ - *pIq = -Ialpha * sinVal + Ibeta * cosVal; - } - - - /** - * @brief Park transform for Q31 version - * @param[in] Ialpha input two-phase vector coordinate alpha - * @param[in] Ibeta input two-phase vector coordinate beta - * @param[out] pId points to output rotor reference frame d - * @param[out] pIq points to output rotor reference frame q - * @param[in] sinVal sine value of rotation angle theta - * @param[in] cosVal cosine value of rotation angle theta - * - * Scaling and Overflow Behavior: - * \par - * The function is implemented using an internal 32-bit accumulator. - * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. - * There is saturation on the addition and subtraction, hence there is no risk of overflow. - */ - static __INLINE void arm_park_q31( - q31_t Ialpha, - q31_t Ibeta, - q31_t * pId, - q31_t * pIq, - q31_t sinVal, - q31_t cosVal) - { - q31_t product1, product2; /* Temporary variables used to store intermediate results */ - q31_t product3, product4; /* Temporary variables used to store intermediate results */ - - /* Intermediate product is calculated by (Ialpha * cosVal) */ - product1 = (q31_t) (((q63_t) (Ialpha) * (cosVal)) >> 31); - - /* Intermediate product is calculated by (Ibeta * sinVal) */ - product2 = (q31_t) (((q63_t) (Ibeta) * (sinVal)) >> 31); - - - /* Intermediate product is calculated by (Ialpha * sinVal) */ - product3 = (q31_t) (((q63_t) (Ialpha) * (sinVal)) >> 31); - - /* Intermediate product is calculated by (Ibeta * cosVal) */ - product4 = (q31_t) (((q63_t) (Ibeta) * (cosVal)) >> 31); - - /* Calculate pId by adding the two intermediate products 1 and 2 */ - *pId = __QADD(product1, product2); - - /* Calculate pIq by subtracting the two intermediate products 3 from 4 */ - *pIq = __QSUB(product4, product3); - } - - /** - * @} end of park group - */ - - /** - * @brief Converts the elements of the Q7 vector to floating-point vector. - * @param[in] pSrc is input pointer - * @param[out] pDst is output pointer - * @param[in] blockSize is the number of samples to process - */ - void arm_q7_to_float( - q7_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - - /** - * @ingroup groupController - */ - - /** - * @defgroup inv_park Vector Inverse Park transform - * Inverse Park transform converts the input flux and torque components to two-coordinate vector. - * - * The function operates on a single sample of data and each call to the function returns the processed output. - * The library provides separate functions for Q31 and floating-point data types. - * \par Algorithm - * \image html parkInvFormula.gif - * where pIalpha and pIbeta are the stator vector components, - * Id and Iq are rotor vector components and cosVal and sinVal are the - * cosine and sine values of theta (rotor flux position). - * \par Fixed-Point Behavior - * Care must be taken when using the Q31 version of the Park transform. - * In particular, the overflow and saturation behavior of the accumulator used must be considered. - * Refer to the function specific documentation below for usage guidelines. - */ - - /** - * @addtogroup inv_park - * @{ - */ - - /** - * @brief Floating-point Inverse Park transform - * @param[in] Id input coordinate of rotor reference frame d - * @param[in] Iq input coordinate of rotor reference frame q - * @param[out] pIalpha points to output two-phase orthogonal vector axis alpha - * @param[out] pIbeta points to output two-phase orthogonal vector axis beta - * @param[in] sinVal sine value of rotation angle theta - * @param[in] cosVal cosine value of rotation angle theta - */ - static __INLINE void arm_inv_park_f32( - float32_t Id, - float32_t Iq, - float32_t * pIalpha, - float32_t * pIbeta, - float32_t sinVal, - float32_t cosVal) - { - /* Calculate pIalpha using the equation, pIalpha = Id * cosVal - Iq * sinVal */ - *pIalpha = Id * cosVal - Iq * sinVal; - - /* Calculate pIbeta using the equation, pIbeta = Id * sinVal + Iq * cosVal */ - *pIbeta = Id * sinVal + Iq * cosVal; - } - - - /** - * @brief Inverse Park transform for Q31 version - * @param[in] Id input coordinate of rotor reference frame d - * @param[in] Iq input coordinate of rotor reference frame q - * @param[out] pIalpha points to output two-phase orthogonal vector axis alpha - * @param[out] pIbeta points to output two-phase orthogonal vector axis beta - * @param[in] sinVal sine value of rotation angle theta - * @param[in] cosVal cosine value of rotation angle theta - * - * Scaling and Overflow Behavior: - * \par - * The function is implemented using an internal 32-bit accumulator. - * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. - * There is saturation on the addition, hence there is no risk of overflow. - */ - static __INLINE void arm_inv_park_q31( - q31_t Id, - q31_t Iq, - q31_t * pIalpha, - q31_t * pIbeta, - q31_t sinVal, - q31_t cosVal) - { - q31_t product1, product2; /* Temporary variables used to store intermediate results */ - q31_t product3, product4; /* Temporary variables used to store intermediate results */ - - /* Intermediate product is calculated by (Id * cosVal) */ - product1 = (q31_t) (((q63_t) (Id) * (cosVal)) >> 31); - - /* Intermediate product is calculated by (Iq * sinVal) */ - product2 = (q31_t) (((q63_t) (Iq) * (sinVal)) >> 31); - - - /* Intermediate product is calculated by (Id * sinVal) */ - product3 = (q31_t) (((q63_t) (Id) * (sinVal)) >> 31); - - /* Intermediate product is calculated by (Iq * cosVal) */ - product4 = (q31_t) (((q63_t) (Iq) * (cosVal)) >> 31); - - /* Calculate pIalpha by using the two intermediate products 1 and 2 */ - *pIalpha = __QSUB(product1, product2); - - /* Calculate pIbeta by using the two intermediate products 3 and 4 */ - *pIbeta = __QADD(product4, product3); - } - - /** - * @} end of Inverse park group - */ - - - /** - * @brief Converts the elements of the Q31 vector to floating-point vector. - * @param[in] pSrc is input pointer - * @param[out] pDst is output pointer - * @param[in] blockSize is the number of samples to process - */ - void arm_q31_to_float( - q31_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - /** - * @ingroup groupInterpolation - */ - - /** - * @defgroup LinearInterpolate Linear Interpolation - * - * Linear interpolation is a method of curve fitting using linear polynomials. - * Linear interpolation works by effectively drawing a straight line between two neighboring samples and returning the appropriate point along that line - * - * \par - * \image html LinearInterp.gif "Linear interpolation" - * - * \par - * A Linear Interpolate function calculates an output value(y), for the input(x) - * using linear interpolation of the input values x0, x1( nearest input values) and the output values y0 and y1(nearest output values) - * - * \par Algorithm: - *
-   *       y = y0 + (x - x0) * ((y1 - y0)/(x1-x0))
-   *       where x0, x1 are nearest values of input x
-   *             y0, y1 are nearest values to output y
-   * 
- * - * \par - * This set of functions implements Linear interpolation process - * for Q7, Q15, Q31, and floating-point data types. The functions operate on a single - * sample of data and each call to the function returns a single processed value. - * S points to an instance of the Linear Interpolate function data structure. - * x is the input sample value. The functions returns the output value. - * - * \par - * if x is outside of the table boundary, Linear interpolation returns first value of the table - * if x is below input range and returns last value of table if x is above range. - */ - - /** - * @addtogroup LinearInterpolate - * @{ - */ - - /** - * @brief Process function for the floating-point Linear Interpolation Function. - * @param[in,out] S is an instance of the floating-point Linear Interpolation structure - * @param[in] x input sample to process - * @return y processed output sample. - * - */ - static __INLINE float32_t arm_linear_interp_f32( - arm_linear_interp_instance_f32 * S, - float32_t x) - { - float32_t y; - float32_t x0, x1; /* Nearest input values */ - float32_t y0, y1; /* Nearest output values */ - float32_t xSpacing = S->xSpacing; /* spacing between input values */ - int32_t i; /* Index variable */ - float32_t *pYData = S->pYData; /* pointer to output table */ - - /* Calculation of index */ - i = (int32_t) ((x - S->x1) / xSpacing); - - if(i < 0) - { - /* Iniatilize output for below specified range as least output value of table */ - y = pYData[0]; - } - else if((uint32_t)i >= S->nValues) - { - /* Iniatilize output for above specified range as last output value of table */ - y = pYData[S->nValues - 1]; - } - else - { - /* Calculation of nearest input values */ - x0 = S->x1 + i * xSpacing; - x1 = S->x1 + (i + 1) * xSpacing; - - /* Read of nearest output values */ - y0 = pYData[i]; - y1 = pYData[i + 1]; - - /* Calculation of output */ - y = y0 + (x - x0) * ((y1 - y0) / (x1 - x0)); - - } - - /* returns output value */ - return (y); - } - - - /** - * - * @brief Process function for the Q31 Linear Interpolation Function. - * @param[in] pYData pointer to Q31 Linear Interpolation table - * @param[in] x input sample to process - * @param[in] nValues number of table values - * @return y processed output sample. - * - * \par - * Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. - * This function can support maximum of table size 2^12. - * - */ - static __INLINE q31_t arm_linear_interp_q31( - q31_t * pYData, - q31_t x, - uint32_t nValues) - { - q31_t y; /* output */ - q31_t y0, y1; /* Nearest output values */ - q31_t fract; /* fractional part */ - int32_t index; /* Index to read nearest output values */ - - /* Input is in 12.20 format */ - /* 12 bits for the table index */ - /* Index value calculation */ - index = ((x & (q31_t)0xFFF00000) >> 20); - - if(index >= (int32_t)(nValues - 1)) - { - return (pYData[nValues - 1]); - } - else if(index < 0) - { - return (pYData[0]); - } - else - { - /* 20 bits for the fractional part */ - /* shift left by 11 to keep fract in 1.31 format */ - fract = (x & 0x000FFFFF) << 11; - - /* Read two nearest output values from the index in 1.31(q31) format */ - y0 = pYData[index]; - y1 = pYData[index + 1]; - - /* Calculation of y0 * (1-fract) and y is in 2.30 format */ - y = ((q31_t) ((q63_t) y0 * (0x7FFFFFFF - fract) >> 32)); - - /* Calculation of y0 * (1-fract) + y1 *fract and y is in 2.30 format */ - y += ((q31_t) (((q63_t) y1 * fract) >> 32)); - - /* Convert y to 1.31 format */ - return (y << 1u); - } - } - - - /** - * - * @brief Process function for the Q15 Linear Interpolation Function. - * @param[in] pYData pointer to Q15 Linear Interpolation table - * @param[in] x input sample to process - * @param[in] nValues number of table values - * @return y processed output sample. - * - * \par - * Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. - * This function can support maximum of table size 2^12. - * - */ - static __INLINE q15_t arm_linear_interp_q15( - q15_t * pYData, - q31_t x, - uint32_t nValues) - { - q63_t y; /* output */ - q15_t y0, y1; /* Nearest output values */ - q31_t fract; /* fractional part */ - int32_t index; /* Index to read nearest output values */ - - /* Input is in 12.20 format */ - /* 12 bits for the table index */ - /* Index value calculation */ - index = ((x & (int32_t)0xFFF00000) >> 20); - - if(index >= (int32_t)(nValues - 1)) - { - return (pYData[nValues - 1]); - } - else if(index < 0) - { - return (pYData[0]); - } - else - { - /* 20 bits for the fractional part */ - /* fract is in 12.20 format */ - fract = (x & 0x000FFFFF); - - /* Read two nearest output values from the index */ - y0 = pYData[index]; - y1 = pYData[index + 1]; - - /* Calculation of y0 * (1-fract) and y is in 13.35 format */ - y = ((q63_t) y0 * (0xFFFFF - fract)); - - /* Calculation of (y0 * (1-fract) + y1 * fract) and y is in 13.35 format */ - y += ((q63_t) y1 * (fract)); - - /* convert y to 1.15 format */ - return (q15_t) (y >> 20); - } - } - - - /** - * - * @brief Process function for the Q7 Linear Interpolation Function. - * @param[in] pYData pointer to Q7 Linear Interpolation table - * @param[in] x input sample to process - * @param[in] nValues number of table values - * @return y processed output sample. - * - * \par - * Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. - * This function can support maximum of table size 2^12. - */ - static __INLINE q7_t arm_linear_interp_q7( - q7_t * pYData, - q31_t x, - uint32_t nValues) - { - q31_t y; /* output */ - q7_t y0, y1; /* Nearest output values */ - q31_t fract; /* fractional part */ - uint32_t index; /* Index to read nearest output values */ - - /* Input is in 12.20 format */ - /* 12 bits for the table index */ - /* Index value calculation */ - if (x < 0) - { - return (pYData[0]); - } - index = (x >> 20) & 0xfff; - - if(index >= (nValues - 1)) - { - return (pYData[nValues - 1]); - } - else - { - /* 20 bits for the fractional part */ - /* fract is in 12.20 format */ - fract = (x & 0x000FFFFF); - - /* Read two nearest output values from the index and are in 1.7(q7) format */ - y0 = pYData[index]; - y1 = pYData[index + 1]; - - /* Calculation of y0 * (1-fract ) and y is in 13.27(q27) format */ - y = ((y0 * (0xFFFFF - fract))); - - /* Calculation of y1 * fract + y0 * (1-fract) and y is in 13.27(q27) format */ - y += (y1 * fract); - - /* convert y to 1.7(q7) format */ - return (q7_t) (y >> 20); - } - } - - /** - * @} end of LinearInterpolate group - */ - - /** - * @brief Fast approximation to the trigonometric sine function for floating-point data. - * @param[in] x input value in radians. - * @return sin(x). - */ - float32_t arm_sin_f32( - float32_t x); - - - /** - * @brief Fast approximation to the trigonometric sine function for Q31 data. - * @param[in] x Scaled input value in radians. - * @return sin(x). - */ - q31_t arm_sin_q31( - q31_t x); - - - /** - * @brief Fast approximation to the trigonometric sine function for Q15 data. - * @param[in] x Scaled input value in radians. - * @return sin(x). - */ - q15_t arm_sin_q15( - q15_t x); - - - /** - * @brief Fast approximation to the trigonometric cosine function for floating-point data. - * @param[in] x input value in radians. - * @return cos(x). - */ - float32_t arm_cos_f32( - float32_t x); - - - /** - * @brief Fast approximation to the trigonometric cosine function for Q31 data. - * @param[in] x Scaled input value in radians. - * @return cos(x). - */ - q31_t arm_cos_q31( - q31_t x); - - - /** - * @brief Fast approximation to the trigonometric cosine function for Q15 data. - * @param[in] x Scaled input value in radians. - * @return cos(x). - */ - q15_t arm_cos_q15( - q15_t x); - - - /** - * @ingroup groupFastMath - */ - - - /** - * @defgroup SQRT Square Root - * - * Computes the square root of a number. - * There are separate functions for Q15, Q31, and floating-point data types. - * The square root function is computed using the Newton-Raphson algorithm. - * This is an iterative algorithm of the form: - *
-   *      x1 = x0 - f(x0)/f'(x0)
-   * 
- * where x1 is the current estimate, - * x0 is the previous estimate, and - * f'(x0) is the derivative of f() evaluated at x0. - * For the square root function, the algorithm reduces to: - *
-   *     x0 = in/2                         [initial guess]
-   *     x1 = 1/2 * ( x0 + in / x0)        [each iteration]
-   * 
- */ - - - /** - * @addtogroup SQRT - * @{ - */ - - /** - * @brief Floating-point square root function. - * @param[in] in input value. - * @param[out] pOut square root of input value. - * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if - * in is negative value and returns zero output for negative values. - */ - static __INLINE arm_status arm_sqrt_f32( - float32_t in, - float32_t * pOut) - { - if(in >= 0.0f) - { - -#if (__FPU_USED == 1) && defined ( __CC_ARM ) - *pOut = __sqrtf(in); -#elif (__FPU_USED == 1) && (defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)) - *pOut = __builtin_sqrtf(in); -#elif (__FPU_USED == 1) && defined(__GNUC__) - *pOut = __builtin_sqrtf(in); -#elif (__FPU_USED == 1) && defined ( __ICCARM__ ) && (__VER__ >= 6040000) - __ASM("VSQRT.F32 %0,%1" : "=t"(*pOut) : "t"(in)); -#else - *pOut = sqrtf(in); -#endif - - return (ARM_MATH_SUCCESS); - } - else - { - *pOut = 0.0f; - return (ARM_MATH_ARGUMENT_ERROR); - } - } - - - /** - * @brief Q31 square root function. - * @param[in] in input value. The range of the input value is [0 +1) or 0x00000000 to 0x7FFFFFFF. - * @param[out] pOut square root of input value. - * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if - * in is negative value and returns zero output for negative values. - */ - arm_status arm_sqrt_q31( - q31_t in, - q31_t * pOut); - - - /** - * @brief Q15 square root function. - * @param[in] in input value. The range of the input value is [0 +1) or 0x0000 to 0x7FFF. - * @param[out] pOut square root of input value. - * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if - * in is negative value and returns zero output for negative values. - */ - arm_status arm_sqrt_q15( - q15_t in, - q15_t * pOut); - - /** - * @} end of SQRT group - */ - - - /** - * @brief floating-point Circular write function. - */ - static __INLINE void arm_circularWrite_f32( - int32_t * circBuffer, - int32_t L, - uint16_t * writeOffset, - int32_t bufferInc, - const int32_t * src, - int32_t srcInc, - uint32_t blockSize) - { - uint32_t i = 0u; - int32_t wOffset; - - /* Copy the value of Index pointer that points - * to the current location where the input samples to be copied */ - wOffset = *writeOffset; - - /* Loop over the blockSize */ - i = blockSize; - - while(i > 0u) - { - /* copy the input sample to the circular buffer */ - circBuffer[wOffset] = *src; - - /* Update the input pointer */ - src += srcInc; - - /* Circularly update wOffset. Watch out for positive and negative value */ - wOffset += bufferInc; - if(wOffset >= L) - wOffset -= L; - - /* Decrement the loop counter */ - i--; - } - - /* Update the index pointer */ - *writeOffset = (uint16_t)wOffset; - } - - - - /** - * @brief floating-point Circular Read function. - */ - static __INLINE void arm_circularRead_f32( - int32_t * circBuffer, - int32_t L, - int32_t * readOffset, - int32_t bufferInc, - int32_t * dst, - int32_t * dst_base, - int32_t dst_length, - int32_t dstInc, - uint32_t blockSize) - { - uint32_t i = 0u; - int32_t rOffset, dst_end; - - /* Copy the value of Index pointer that points - * to the current location from where the input samples to be read */ - rOffset = *readOffset; - dst_end = (int32_t) (dst_base + dst_length); - - /* Loop over the blockSize */ - i = blockSize; - - while(i > 0u) - { - /* copy the sample from the circular buffer to the destination buffer */ - *dst = circBuffer[rOffset]; - - /* Update the input pointer */ - dst += dstInc; - - if(dst == (int32_t *) dst_end) - { - dst = dst_base; - } - - /* Circularly update rOffset. Watch out for positive and negative value */ - rOffset += bufferInc; - - if(rOffset >= L) - { - rOffset -= L; - } - - /* Decrement the loop counter */ - i--; - } - - /* Update the index pointer */ - *readOffset = rOffset; - } - - - /** - * @brief Q15 Circular write function. - */ - static __INLINE void arm_circularWrite_q15( - q15_t * circBuffer, - int32_t L, - uint16_t * writeOffset, - int32_t bufferInc, - const q15_t * src, - int32_t srcInc, - uint32_t blockSize) - { - uint32_t i = 0u; - int32_t wOffset; - - /* Copy the value of Index pointer that points - * to the current location where the input samples to be copied */ - wOffset = *writeOffset; - - /* Loop over the blockSize */ - i = blockSize; - - while(i > 0u) - { - /* copy the input sample to the circular buffer */ - circBuffer[wOffset] = *src; - - /* Update the input pointer */ - src += srcInc; - - /* Circularly update wOffset. Watch out for positive and negative value */ - wOffset += bufferInc; - if(wOffset >= L) - wOffset -= L; - - /* Decrement the loop counter */ - i--; - } - - /* Update the index pointer */ - *writeOffset = (uint16_t)wOffset; - } - - - /** - * @brief Q15 Circular Read function. - */ - static __INLINE void arm_circularRead_q15( - q15_t * circBuffer, - int32_t L, - int32_t * readOffset, - int32_t bufferInc, - q15_t * dst, - q15_t * dst_base, - int32_t dst_length, - int32_t dstInc, - uint32_t blockSize) - { - uint32_t i = 0; - int32_t rOffset, dst_end; - - /* Copy the value of Index pointer that points - * to the current location from where the input samples to be read */ - rOffset = *readOffset; - - dst_end = (int32_t) (dst_base + dst_length); - - /* Loop over the blockSize */ - i = blockSize; - - while(i > 0u) - { - /* copy the sample from the circular buffer to the destination buffer */ - *dst = circBuffer[rOffset]; - - /* Update the input pointer */ - dst += dstInc; - - if(dst == (q15_t *) dst_end) - { - dst = dst_base; - } - - /* Circularly update wOffset. Watch out for positive and negative value */ - rOffset += bufferInc; - - if(rOffset >= L) - { - rOffset -= L; - } - - /* Decrement the loop counter */ - i--; - } - - /* Update the index pointer */ - *readOffset = rOffset; - } - - - /** - * @brief Q7 Circular write function. - */ - static __INLINE void arm_circularWrite_q7( - q7_t * circBuffer, - int32_t L, - uint16_t * writeOffset, - int32_t bufferInc, - const q7_t * src, - int32_t srcInc, - uint32_t blockSize) - { - uint32_t i = 0u; - int32_t wOffset; - - /* Copy the value of Index pointer that points - * to the current location where the input samples to be copied */ - wOffset = *writeOffset; - - /* Loop over the blockSize */ - i = blockSize; - - while(i > 0u) - { - /* copy the input sample to the circular buffer */ - circBuffer[wOffset] = *src; - - /* Update the input pointer */ - src += srcInc; - - /* Circularly update wOffset. Watch out for positive and negative value */ - wOffset += bufferInc; - if(wOffset >= L) - wOffset -= L; - - /* Decrement the loop counter */ - i--; - } - - /* Update the index pointer */ - *writeOffset = (uint16_t)wOffset; - } - - - /** - * @brief Q7 Circular Read function. - */ - static __INLINE void arm_circularRead_q7( - q7_t * circBuffer, - int32_t L, - int32_t * readOffset, - int32_t bufferInc, - q7_t * dst, - q7_t * dst_base, - int32_t dst_length, - int32_t dstInc, - uint32_t blockSize) - { - uint32_t i = 0; - int32_t rOffset, dst_end; - - /* Copy the value of Index pointer that points - * to the current location from where the input samples to be read */ - rOffset = *readOffset; - - dst_end = (int32_t) (dst_base + dst_length); - - /* Loop over the blockSize */ - i = blockSize; - - while(i > 0u) - { - /* copy the sample from the circular buffer to the destination buffer */ - *dst = circBuffer[rOffset]; - - /* Update the input pointer */ - dst += dstInc; - - if(dst == (q7_t *) dst_end) - { - dst = dst_base; - } - - /* Circularly update rOffset. Watch out for positive and negative value */ - rOffset += bufferInc; - - if(rOffset >= L) - { - rOffset -= L; - } - - /* Decrement the loop counter */ - i--; - } - - /* Update the index pointer */ - *readOffset = rOffset; - } - - - /** - * @brief Sum of the squares of the elements of a Q31 vector. - * @param[in] pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] pResult is output value. - */ - void arm_power_q31( - q31_t * pSrc, - uint32_t blockSize, - q63_t * pResult); - - - /** - * @brief Sum of the squares of the elements of a floating-point vector. - * @param[in] pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] pResult is output value. - */ - void arm_power_f32( - float32_t * pSrc, - uint32_t blockSize, - float32_t * pResult); - - - /** - * @brief Sum of the squares of the elements of a Q15 vector. - * @param[in] pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] pResult is output value. - */ - void arm_power_q15( - q15_t * pSrc, - uint32_t blockSize, - q63_t * pResult); - - - /** - * @brief Sum of the squares of the elements of a Q7 vector. - * @param[in] pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] pResult is output value. - */ - void arm_power_q7( - q7_t * pSrc, - uint32_t blockSize, - q31_t * pResult); - - - /** - * @brief Mean value of a Q7 vector. - * @param[in] pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] pResult is output value. - */ - void arm_mean_q7( - q7_t * pSrc, - uint32_t blockSize, - q7_t * pResult); - - - /** - * @brief Mean value of a Q15 vector. - * @param[in] pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] pResult is output value. - */ - void arm_mean_q15( - q15_t * pSrc, - uint32_t blockSize, - q15_t * pResult); - - - /** - * @brief Mean value of a Q31 vector. - * @param[in] pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] pResult is output value. - */ - void arm_mean_q31( - q31_t * pSrc, - uint32_t blockSize, - q31_t * pResult); - - - /** - * @brief Mean value of a floating-point vector. - * @param[in] pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] pResult is output value. - */ - void arm_mean_f32( - float32_t * pSrc, - uint32_t blockSize, - float32_t * pResult); - - - /** - * @brief Variance of the elements of a floating-point vector. - * @param[in] pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] pResult is output value. - */ - void arm_var_f32( - float32_t * pSrc, - uint32_t blockSize, - float32_t * pResult); - - - /** - * @brief Variance of the elements of a Q31 vector. - * @param[in] pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] pResult is output value. - */ - void arm_var_q31( - q31_t * pSrc, - uint32_t blockSize, - q31_t * pResult); - - - /** - * @brief Variance of the elements of a Q15 vector. - * @param[in] pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] pResult is output value. - */ - void arm_var_q15( - q15_t * pSrc, - uint32_t blockSize, - q15_t * pResult); - - - /** - * @brief Root Mean Square of the elements of a floating-point vector. - * @param[in] pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] pResult is output value. - */ - void arm_rms_f32( - float32_t * pSrc, - uint32_t blockSize, - float32_t * pResult); - - - /** - * @brief Root Mean Square of the elements of a Q31 vector. - * @param[in] pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] pResult is output value. - */ - void arm_rms_q31( - q31_t * pSrc, - uint32_t blockSize, - q31_t * pResult); - - - /** - * @brief Root Mean Square of the elements of a Q15 vector. - * @param[in] pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] pResult is output value. - */ - void arm_rms_q15( - q15_t * pSrc, - uint32_t blockSize, - q15_t * pResult); - - - /** - * @brief Standard deviation of the elements of a floating-point vector. - * @param[in] pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] pResult is output value. - */ - void arm_std_f32( - float32_t * pSrc, - uint32_t blockSize, - float32_t * pResult); - - - /** - * @brief Standard deviation of the elements of a Q31 vector. - * @param[in] pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] pResult is output value. - */ - void arm_std_q31( - q31_t * pSrc, - uint32_t blockSize, - q31_t * pResult); - - - /** - * @brief Standard deviation of the elements of a Q15 vector. - * @param[in] pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] pResult is output value. - */ - void arm_std_q15( - q15_t * pSrc, - uint32_t blockSize, - q15_t * pResult); - - - /** - * @brief Floating-point complex magnitude - * @param[in] pSrc points to the complex input vector - * @param[out] pDst points to the real output vector - * @param[in] numSamples number of complex samples in the input vector - */ - void arm_cmplx_mag_f32( - float32_t * pSrc, - float32_t * pDst, - uint32_t numSamples); - - - /** - * @brief Q31 complex magnitude - * @param[in] pSrc points to the complex input vector - * @param[out] pDst points to the real output vector - * @param[in] numSamples number of complex samples in the input vector - */ - void arm_cmplx_mag_q31( - q31_t * pSrc, - q31_t * pDst, - uint32_t numSamples); - - - /** - * @brief Q15 complex magnitude - * @param[in] pSrc points to the complex input vector - * @param[out] pDst points to the real output vector - * @param[in] numSamples number of complex samples in the input vector - */ - void arm_cmplx_mag_q15( - q15_t * pSrc, - q15_t * pDst, - uint32_t numSamples); - - - /** - * @brief Q15 complex dot product - * @param[in] pSrcA points to the first input vector - * @param[in] pSrcB points to the second input vector - * @param[in] numSamples number of complex samples in each vector - * @param[out] realResult real part of the result returned here - * @param[out] imagResult imaginary part of the result returned here - */ - void arm_cmplx_dot_prod_q15( - q15_t * pSrcA, - q15_t * pSrcB, - uint32_t numSamples, - q31_t * realResult, - q31_t * imagResult); - - - /** - * @brief Q31 complex dot product - * @param[in] pSrcA points to the first input vector - * @param[in] pSrcB points to the second input vector - * @param[in] numSamples number of complex samples in each vector - * @param[out] realResult real part of the result returned here - * @param[out] imagResult imaginary part of the result returned here - */ - void arm_cmplx_dot_prod_q31( - q31_t * pSrcA, - q31_t * pSrcB, - uint32_t numSamples, - q63_t * realResult, - q63_t * imagResult); - - - /** - * @brief Floating-point complex dot product - * @param[in] pSrcA points to the first input vector - * @param[in] pSrcB points to the second input vector - * @param[in] numSamples number of complex samples in each vector - * @param[out] realResult real part of the result returned here - * @param[out] imagResult imaginary part of the result returned here - */ - void arm_cmplx_dot_prod_f32( - float32_t * pSrcA, - float32_t * pSrcB, - uint32_t numSamples, - float32_t * realResult, - float32_t * imagResult); - - - /** - * @brief Q15 complex-by-real multiplication - * @param[in] pSrcCmplx points to the complex input vector - * @param[in] pSrcReal points to the real input vector - * @param[out] pCmplxDst points to the complex output vector - * @param[in] numSamples number of samples in each vector - */ - void arm_cmplx_mult_real_q15( - q15_t * pSrcCmplx, - q15_t * pSrcReal, - q15_t * pCmplxDst, - uint32_t numSamples); - - - /** - * @brief Q31 complex-by-real multiplication - * @param[in] pSrcCmplx points to the complex input vector - * @param[in] pSrcReal points to the real input vector - * @param[out] pCmplxDst points to the complex output vector - * @param[in] numSamples number of samples in each vector - */ - void arm_cmplx_mult_real_q31( - q31_t * pSrcCmplx, - q31_t * pSrcReal, - q31_t * pCmplxDst, - uint32_t numSamples); - - - /** - * @brief Floating-point complex-by-real multiplication - * @param[in] pSrcCmplx points to the complex input vector - * @param[in] pSrcReal points to the real input vector - * @param[out] pCmplxDst points to the complex output vector - * @param[in] numSamples number of samples in each vector - */ - void arm_cmplx_mult_real_f32( - float32_t * pSrcCmplx, - float32_t * pSrcReal, - float32_t * pCmplxDst, - uint32_t numSamples); - - - /** - * @brief Minimum value of a Q7 vector. - * @param[in] pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] result is output pointer - * @param[in] index is the array index of the minimum value in the input buffer. - */ - void arm_min_q7( - q7_t * pSrc, - uint32_t blockSize, - q7_t * result, - uint32_t * index); - - - /** - * @brief Minimum value of a Q15 vector. - * @param[in] pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] pResult is output pointer - * @param[in] pIndex is the array index of the minimum value in the input buffer. - */ - void arm_min_q15( - q15_t * pSrc, - uint32_t blockSize, - q15_t * pResult, - uint32_t * pIndex); - - - /** - * @brief Minimum value of a Q31 vector. - * @param[in] pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] pResult is output pointer - * @param[out] pIndex is the array index of the minimum value in the input buffer. - */ - void arm_min_q31( - q31_t * pSrc, - uint32_t blockSize, - q31_t * pResult, - uint32_t * pIndex); - - - /** - * @brief Minimum value of a floating-point vector. - * @param[in] pSrc is input pointer - * @param[in] blockSize is the number of samples to process - * @param[out] pResult is output pointer - * @param[out] pIndex is the array index of the minimum value in the input buffer. - */ - void arm_min_f32( - float32_t * pSrc, - uint32_t blockSize, - float32_t * pResult, - uint32_t * pIndex); - - -/** - * @brief Maximum value of a Q7 vector. - * @param[in] pSrc points to the input buffer - * @param[in] blockSize length of the input vector - * @param[out] pResult maximum value returned here - * @param[out] pIndex index of maximum value returned here - */ - void arm_max_q7( - q7_t * pSrc, - uint32_t blockSize, - q7_t * pResult, - uint32_t * pIndex); - - -/** - * @brief Maximum value of a Q15 vector. - * @param[in] pSrc points to the input buffer - * @param[in] blockSize length of the input vector - * @param[out] pResult maximum value returned here - * @param[out] pIndex index of maximum value returned here - */ - void arm_max_q15( - q15_t * pSrc, - uint32_t blockSize, - q15_t * pResult, - uint32_t * pIndex); - - -/** - * @brief Maximum value of a Q31 vector. - * @param[in] pSrc points to the input buffer - * @param[in] blockSize length of the input vector - * @param[out] pResult maximum value returned here - * @param[out] pIndex index of maximum value returned here - */ - void arm_max_q31( - q31_t * pSrc, - uint32_t blockSize, - q31_t * pResult, - uint32_t * pIndex); - - -/** - * @brief Maximum value of a floating-point vector. - * @param[in] pSrc points to the input buffer - * @param[in] blockSize length of the input vector - * @param[out] pResult maximum value returned here - * @param[out] pIndex index of maximum value returned here - */ - void arm_max_f32( - float32_t * pSrc, - uint32_t blockSize, - float32_t * pResult, - uint32_t * pIndex); - - - /** - * @brief Q15 complex-by-complex multiplication - * @param[in] pSrcA points to the first input vector - * @param[in] pSrcB points to the second input vector - * @param[out] pDst points to the output vector - * @param[in] numSamples number of complex samples in each vector - */ - void arm_cmplx_mult_cmplx_q15( - q15_t * pSrcA, - q15_t * pSrcB, - q15_t * pDst, - uint32_t numSamples); - - - /** - * @brief Q31 complex-by-complex multiplication - * @param[in] pSrcA points to the first input vector - * @param[in] pSrcB points to the second input vector - * @param[out] pDst points to the output vector - * @param[in] numSamples number of complex samples in each vector - */ - void arm_cmplx_mult_cmplx_q31( - q31_t * pSrcA, - q31_t * pSrcB, - q31_t * pDst, - uint32_t numSamples); - - - /** - * @brief Floating-point complex-by-complex multiplication - * @param[in] pSrcA points to the first input vector - * @param[in] pSrcB points to the second input vector - * @param[out] pDst points to the output vector - * @param[in] numSamples number of complex samples in each vector - */ - void arm_cmplx_mult_cmplx_f32( - float32_t * pSrcA, - float32_t * pSrcB, - float32_t * pDst, - uint32_t numSamples); - - - /** - * @brief Converts the elements of the floating-point vector to Q31 vector. - * @param[in] pSrc points to the floating-point input vector - * @param[out] pDst points to the Q31 output vector - * @param[in] blockSize length of the input vector - */ - void arm_float_to_q31( - float32_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - - /** - * @brief Converts the elements of the floating-point vector to Q15 vector. - * @param[in] pSrc points to the floating-point input vector - * @param[out] pDst points to the Q15 output vector - * @param[in] blockSize length of the input vector - */ - void arm_float_to_q15( - float32_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - - /** - * @brief Converts the elements of the floating-point vector to Q7 vector. - * @param[in] pSrc points to the floating-point input vector - * @param[out] pDst points to the Q7 output vector - * @param[in] blockSize length of the input vector - */ - void arm_float_to_q7( - float32_t * pSrc, - q7_t * pDst, - uint32_t blockSize); - - - /** - * @brief Converts the elements of the Q31 vector to Q15 vector. - * @param[in] pSrc is input pointer - * @param[out] pDst is output pointer - * @param[in] blockSize is the number of samples to process - */ - void arm_q31_to_q15( - q31_t * pSrc, - q15_t * pDst, - uint32_t blockSize); - - - /** - * @brief Converts the elements of the Q31 vector to Q7 vector. - * @param[in] pSrc is input pointer - * @param[out] pDst is output pointer - * @param[in] blockSize is the number of samples to process - */ - void arm_q31_to_q7( - q31_t * pSrc, - q7_t * pDst, - uint32_t blockSize); - - - /** - * @brief Converts the elements of the Q15 vector to floating-point vector. - * @param[in] pSrc is input pointer - * @param[out] pDst is output pointer - * @param[in] blockSize is the number of samples to process - */ - void arm_q15_to_float( - q15_t * pSrc, - float32_t * pDst, - uint32_t blockSize); - - - /** - * @brief Converts the elements of the Q15 vector to Q31 vector. - * @param[in] pSrc is input pointer - * @param[out] pDst is output pointer - * @param[in] blockSize is the number of samples to process - */ - void arm_q15_to_q31( - q15_t * pSrc, - q31_t * pDst, - uint32_t blockSize); - - - /** - * @brief Converts the elements of the Q15 vector to Q7 vector. - * @param[in] pSrc is input pointer - * @param[out] pDst is output pointer - * @param[in] blockSize is the number of samples to process - */ - void arm_q15_to_q7( - q15_t * pSrc, - q7_t * pDst, - uint32_t blockSize); - - - /** - * @ingroup groupInterpolation - */ - - /** - * @defgroup BilinearInterpolate Bilinear Interpolation - * - * Bilinear interpolation is an extension of linear interpolation applied to a two dimensional grid. - * The underlying function f(x, y) is sampled on a regular grid and the interpolation process - * determines values between the grid points. - * Bilinear interpolation is equivalent to two step linear interpolation, first in the x-dimension and then in the y-dimension. - * Bilinear interpolation is often used in image processing to rescale images. - * The CMSIS DSP library provides bilinear interpolation functions for Q7, Q15, Q31, and floating-point data types. - * - * Algorithm - * \par - * The instance structure used by the bilinear interpolation functions describes a two dimensional data table. - * For floating-point, the instance structure is defined as: - *
-   *   typedef struct
-   *   {
-   *     uint16_t numRows;
-   *     uint16_t numCols;
-   *     float32_t *pData;
-   * } arm_bilinear_interp_instance_f32;
-   * 
- * - * \par - * where numRows specifies the number of rows in the table; - * numCols specifies the number of columns in the table; - * and pData points to an array of size numRows*numCols values. - * The data table pTable is organized in row order and the supplied data values fall on integer indexes. - * That is, table element (x,y) is located at pTable[x + y*numCols] where x and y are integers. - * - * \par - * Let (x, y) specify the desired interpolation point. Then define: - *
-   *     XF = floor(x)
-   *     YF = floor(y)
-   * 
- * \par - * The interpolated output point is computed as: - *
-   *  f(x, y) = f(XF, YF) * (1-(x-XF)) * (1-(y-YF))
-   *           + f(XF+1, YF) * (x-XF)*(1-(y-YF))
-   *           + f(XF, YF+1) * (1-(x-XF))*(y-YF)
-   *           + f(XF+1, YF+1) * (x-XF)*(y-YF)
-   * 
- * Note that the coordinates (x, y) contain integer and fractional components. - * The integer components specify which portion of the table to use while the - * fractional components control the interpolation processor. - * - * \par - * if (x,y) are outside of the table boundary, Bilinear interpolation returns zero output. - */ - - /** - * @addtogroup BilinearInterpolate - * @{ - */ - - - /** - * - * @brief Floating-point bilinear interpolation. - * @param[in,out] S points to an instance of the interpolation structure. - * @param[in] X interpolation coordinate. - * @param[in] Y interpolation coordinate. - * @return out interpolated value. - */ - static __INLINE float32_t arm_bilinear_interp_f32( - const arm_bilinear_interp_instance_f32 * S, - float32_t X, - float32_t Y) - { - float32_t out; - float32_t f00, f01, f10, f11; - float32_t *pData = S->pData; - int32_t xIndex, yIndex, index; - float32_t xdiff, ydiff; - float32_t b1, b2, b3, b4; - - xIndex = (int32_t) X; - yIndex = (int32_t) Y; - - /* Care taken for table outside boundary */ - /* Returns zero output when values are outside table boundary */ - if(xIndex < 0 || xIndex > (S->numRows - 1) || yIndex < 0 || yIndex > (S->numCols - 1)) - { - return (0); - } - - /* Calculation of index for two nearest points in X-direction */ - index = (xIndex - 1) + (yIndex - 1) * S->numCols; - - - /* Read two nearest points in X-direction */ - f00 = pData[index]; - f01 = pData[index + 1]; - - /* Calculation of index for two nearest points in Y-direction */ - index = (xIndex - 1) + (yIndex) * S->numCols; - - - /* Read two nearest points in Y-direction */ - f10 = pData[index]; - f11 = pData[index + 1]; - - /* Calculation of intermediate values */ - b1 = f00; - b2 = f01 - f00; - b3 = f10 - f00; - b4 = f00 - f01 - f10 + f11; - - /* Calculation of fractional part in X */ - xdiff = X - xIndex; - - /* Calculation of fractional part in Y */ - ydiff = Y - yIndex; - - /* Calculation of bi-linear interpolated output */ - out = b1 + b2 * xdiff + b3 * ydiff + b4 * xdiff * ydiff; - - /* return to application */ - return (out); - } - - - /** - * - * @brief Q31 bilinear interpolation. - * @param[in,out] S points to an instance of the interpolation structure. - * @param[in] X interpolation coordinate in 12.20 format. - * @param[in] Y interpolation coordinate in 12.20 format. - * @return out interpolated value. - */ - static __INLINE q31_t arm_bilinear_interp_q31( - arm_bilinear_interp_instance_q31 * S, - q31_t X, - q31_t Y) - { - q31_t out; /* Temporary output */ - q31_t acc = 0; /* output */ - q31_t xfract, yfract; /* X, Y fractional parts */ - q31_t x1, x2, y1, y2; /* Nearest output values */ - int32_t rI, cI; /* Row and column indices */ - q31_t *pYData = S->pData; /* pointer to output table values */ - uint32_t nCols = S->numCols; /* num of rows */ - - /* Input is in 12.20 format */ - /* 12 bits for the table index */ - /* Index value calculation */ - rI = ((X & (q31_t)0xFFF00000) >> 20); - - /* Input is in 12.20 format */ - /* 12 bits for the table index */ - /* Index value calculation */ - cI = ((Y & (q31_t)0xFFF00000) >> 20); - - /* Care taken for table outside boundary */ - /* Returns zero output when values are outside table boundary */ - if(rI < 0 || rI > (S->numRows - 1) || cI < 0 || cI > (S->numCols - 1)) - { - return (0); - } - - /* 20 bits for the fractional part */ - /* shift left xfract by 11 to keep 1.31 format */ - xfract = (X & 0x000FFFFF) << 11u; - - /* Read two nearest output values from the index */ - x1 = pYData[(rI) + (int32_t)nCols * (cI) ]; - x2 = pYData[(rI) + (int32_t)nCols * (cI) + 1]; - - /* 20 bits for the fractional part */ - /* shift left yfract by 11 to keep 1.31 format */ - yfract = (Y & 0x000FFFFF) << 11u; - - /* Read two nearest output values from the index */ - y1 = pYData[(rI) + (int32_t)nCols * (cI + 1) ]; - y2 = pYData[(rI) + (int32_t)nCols * (cI + 1) + 1]; - - /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 3.29(q29) format */ - out = ((q31_t) (((q63_t) x1 * (0x7FFFFFFF - xfract)) >> 32)); - acc = ((q31_t) (((q63_t) out * (0x7FFFFFFF - yfract)) >> 32)); - - /* x2 * (xfract) * (1-yfract) in 3.29(q29) and adding to acc */ - out = ((q31_t) ((q63_t) x2 * (0x7FFFFFFF - yfract) >> 32)); - acc += ((q31_t) ((q63_t) out * (xfract) >> 32)); - - /* y1 * (1 - xfract) * (yfract) in 3.29(q29) and adding to acc */ - out = ((q31_t) ((q63_t) y1 * (0x7FFFFFFF - xfract) >> 32)); - acc += ((q31_t) ((q63_t) out * (yfract) >> 32)); - - /* y2 * (xfract) * (yfract) in 3.29(q29) and adding to acc */ - out = ((q31_t) ((q63_t) y2 * (xfract) >> 32)); - acc += ((q31_t) ((q63_t) out * (yfract) >> 32)); - - /* Convert acc to 1.31(q31) format */ - return ((q31_t)(acc << 2)); - } - - - /** - * @brief Q15 bilinear interpolation. - * @param[in,out] S points to an instance of the interpolation structure. - * @param[in] X interpolation coordinate in 12.20 format. - * @param[in] Y interpolation coordinate in 12.20 format. - * @return out interpolated value. - */ - static __INLINE q15_t arm_bilinear_interp_q15( - arm_bilinear_interp_instance_q15 * S, - q31_t X, - q31_t Y) - { - q63_t acc = 0; /* output */ - q31_t out; /* Temporary output */ - q15_t x1, x2, y1, y2; /* Nearest output values */ - q31_t xfract, yfract; /* X, Y fractional parts */ - int32_t rI, cI; /* Row and column indices */ - q15_t *pYData = S->pData; /* pointer to output table values */ - uint32_t nCols = S->numCols; /* num of rows */ - - /* Input is in 12.20 format */ - /* 12 bits for the table index */ - /* Index value calculation */ - rI = ((X & (q31_t)0xFFF00000) >> 20); - - /* Input is in 12.20 format */ - /* 12 bits for the table index */ - /* Index value calculation */ - cI = ((Y & (q31_t)0xFFF00000) >> 20); - - /* Care taken for table outside boundary */ - /* Returns zero output when values are outside table boundary */ - if(rI < 0 || rI > (S->numRows - 1) || cI < 0 || cI > (S->numCols - 1)) - { - return (0); - } - - /* 20 bits for the fractional part */ - /* xfract should be in 12.20 format */ - xfract = (X & 0x000FFFFF); - - /* Read two nearest output values from the index */ - x1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) ]; - x2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) + 1]; - - /* 20 bits for the fractional part */ - /* yfract should be in 12.20 format */ - yfract = (Y & 0x000FFFFF); - - /* Read two nearest output values from the index */ - y1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) ]; - y2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) + 1]; - - /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 13.51 format */ - - /* x1 is in 1.15(q15), xfract in 12.20 format and out is in 13.35 format */ - /* convert 13.35 to 13.31 by right shifting and out is in 1.31 */ - out = (q31_t) (((q63_t) x1 * (0xFFFFF - xfract)) >> 4u); - acc = ((q63_t) out * (0xFFFFF - yfract)); - - /* x2 * (xfract) * (1-yfract) in 1.51 and adding to acc */ - out = (q31_t) (((q63_t) x2 * (0xFFFFF - yfract)) >> 4u); - acc += ((q63_t) out * (xfract)); - - /* y1 * (1 - xfract) * (yfract) in 1.51 and adding to acc */ - out = (q31_t) (((q63_t) y1 * (0xFFFFF - xfract)) >> 4u); - acc += ((q63_t) out * (yfract)); - - /* y2 * (xfract) * (yfract) in 1.51 and adding to acc */ - out = (q31_t) (((q63_t) y2 * (xfract)) >> 4u); - acc += ((q63_t) out * (yfract)); - - /* acc is in 13.51 format and down shift acc by 36 times */ - /* Convert out to 1.15 format */ - return ((q15_t)(acc >> 36)); - } - - - /** - * @brief Q7 bilinear interpolation. - * @param[in,out] S points to an instance of the interpolation structure. - * @param[in] X interpolation coordinate in 12.20 format. - * @param[in] Y interpolation coordinate in 12.20 format. - * @return out interpolated value. - */ - static __INLINE q7_t arm_bilinear_interp_q7( - arm_bilinear_interp_instance_q7 * S, - q31_t X, - q31_t Y) - { - q63_t acc = 0; /* output */ - q31_t out; /* Temporary output */ - q31_t xfract, yfract; /* X, Y fractional parts */ - q7_t x1, x2, y1, y2; /* Nearest output values */ - int32_t rI, cI; /* Row and column indices */ - q7_t *pYData = S->pData; /* pointer to output table values */ - uint32_t nCols = S->numCols; /* num of rows */ - - /* Input is in 12.20 format */ - /* 12 bits for the table index */ - /* Index value calculation */ - rI = ((X & (q31_t)0xFFF00000) >> 20); - - /* Input is in 12.20 format */ - /* 12 bits for the table index */ - /* Index value calculation */ - cI = ((Y & (q31_t)0xFFF00000) >> 20); - - /* Care taken for table outside boundary */ - /* Returns zero output when values are outside table boundary */ - if(rI < 0 || rI > (S->numRows - 1) || cI < 0 || cI > (S->numCols - 1)) - { - return (0); - } - - /* 20 bits for the fractional part */ - /* xfract should be in 12.20 format */ - xfract = (X & (q31_t)0x000FFFFF); - - /* Read two nearest output values from the index */ - x1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) ]; - x2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) + 1]; - - /* 20 bits for the fractional part */ - /* yfract should be in 12.20 format */ - yfract = (Y & (q31_t)0x000FFFFF); - - /* Read two nearest output values from the index */ - y1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) ]; - y2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) + 1]; - - /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 16.47 format */ - out = ((x1 * (0xFFFFF - xfract))); - acc = (((q63_t) out * (0xFFFFF - yfract))); - - /* x2 * (xfract) * (1-yfract) in 2.22 and adding to acc */ - out = ((x2 * (0xFFFFF - yfract))); - acc += (((q63_t) out * (xfract))); - - /* y1 * (1 - xfract) * (yfract) in 2.22 and adding to acc */ - out = ((y1 * (0xFFFFF - xfract))); - acc += (((q63_t) out * (yfract))); - - /* y2 * (xfract) * (yfract) in 2.22 and adding to acc */ - out = ((y2 * (yfract))); - acc += (((q63_t) out * (xfract))); - - /* acc in 16.47 format and down shift by 40 to convert to 1.7 format */ - return ((q7_t)(acc >> 40)); - } - - /** - * @} end of BilinearInterpolate group - */ - - -/* SMMLAR */ -#define multAcc_32x32_keep32_R(a, x, y) \ - a = (q31_t) (((((q63_t) a) << 32) + ((q63_t) x * y) + 0x80000000LL ) >> 32) - -/* SMMLSR */ -#define multSub_32x32_keep32_R(a, x, y) \ - a = (q31_t) (((((q63_t) a) << 32) - ((q63_t) x * y) + 0x80000000LL ) >> 32) - -/* SMMULR */ -#define mult_32x32_keep32_R(a, x, y) \ - a = (q31_t) (((q63_t) x * y + 0x80000000LL ) >> 32) - -/* SMMLA */ -#define multAcc_32x32_keep32(a, x, y) \ - a += (q31_t) (((q63_t) x * y) >> 32) - -/* SMMLS */ -#define multSub_32x32_keep32(a, x, y) \ - a -= (q31_t) (((q63_t) x * y) >> 32) - -/* SMMUL */ -#define mult_32x32_keep32(a, x, y) \ - a = (q31_t) (((q63_t) x * y ) >> 32) - - -#if defined ( __CC_ARM ) - /* Enter low optimization region - place directly above function definition */ - #if defined( ARM_MATH_CM4 ) || defined( ARM_MATH_CM7) - #define LOW_OPTIMIZATION_ENTER \ - _Pragma ("push") \ - _Pragma ("O1") - #else - #define LOW_OPTIMIZATION_ENTER - #endif - - /* Exit low optimization region - place directly after end of function definition */ - #if defined( ARM_MATH_CM4 ) || defined( ARM_MATH_CM7) - #define LOW_OPTIMIZATION_EXIT \ - _Pragma ("pop") - #else - #define LOW_OPTIMIZATION_EXIT - #endif - - /* Enter low optimization region - place directly above function definition */ - #define IAR_ONLY_LOW_OPTIMIZATION_ENTER - - /* Exit low optimization region - place directly after end of function definition */ - #define IAR_ONLY_LOW_OPTIMIZATION_EXIT - -#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #define LOW_OPTIMIZATION_ENTER - #define LOW_OPTIMIZATION_EXIT - #define IAR_ONLY_LOW_OPTIMIZATION_ENTER - #define IAR_ONLY_LOW_OPTIMIZATION_EXIT - -#elif defined(__GNUC__) - #define LOW_OPTIMIZATION_ENTER __attribute__(( optimize("-O1") )) - #define LOW_OPTIMIZATION_EXIT - #define IAR_ONLY_LOW_OPTIMIZATION_ENTER - #define IAR_ONLY_LOW_OPTIMIZATION_EXIT - -#elif defined(__ICCARM__) - /* Enter low optimization region - place directly above function definition */ - #if defined( ARM_MATH_CM4 ) || defined( ARM_MATH_CM7) - #define LOW_OPTIMIZATION_ENTER \ - _Pragma ("optimize=low") - #else - #define LOW_OPTIMIZATION_ENTER - #endif - - /* Exit low optimization region - place directly after end of function definition */ - #define LOW_OPTIMIZATION_EXIT - - /* Enter low optimization region - place directly above function definition */ - #if defined( ARM_MATH_CM4 ) || defined( ARM_MATH_CM7) - #define IAR_ONLY_LOW_OPTIMIZATION_ENTER \ - _Pragma ("optimize=low") - #else - #define IAR_ONLY_LOW_OPTIMIZATION_ENTER - #endif - - /* Exit low optimization region - place directly after end of function definition */ - #define IAR_ONLY_LOW_OPTIMIZATION_EXIT - -#elif defined(__CSMC__) - #define LOW_OPTIMIZATION_ENTER - #define LOW_OPTIMIZATION_EXIT - #define IAR_ONLY_LOW_OPTIMIZATION_ENTER - #define IAR_ONLY_LOW_OPTIMIZATION_EXIT - -#elif defined(__TASKING__) - #define LOW_OPTIMIZATION_ENTER - #define LOW_OPTIMIZATION_EXIT - #define IAR_ONLY_LOW_OPTIMIZATION_ENTER - #define IAR_ONLY_LOW_OPTIMIZATION_EXIT - -#endif - - -#ifdef __cplusplus -} -#endif - - -#if defined ( __GNUC__ ) -#pragma GCC diagnostic pop -#endif - -#endif /* _ARM_MATH_H */ - -/** - * - * End of file. - */ +/* ---------------------------------------------------------------------- +* Copyright (C) 2010-2015 ARM Limited. All rights reserved. +* +* $Date: 20. October 2015 +* $Revision: V1.4.5 b +* +* Project: CMSIS DSP Library +* Title: arm_math.h +* +* Description: Public header file for CMSIS DSP Library +* +* Target Processor: Cortex-M7/Cortex-M4/Cortex-M3/Cortex-M0 +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* - Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* - Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in +* the documentation and/or other materials provided with the +* distribution. +* - Neither the name of ARM LIMITED nor the names of its contributors +* may be used to endorse or promote products derived from this +* software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGE. + * -------------------------------------------------------------------- */ + +/** + \mainpage CMSIS DSP Software Library + * + * Introduction + * ------------ + * + * This user manual describes the CMSIS DSP software library, + * a suite of common signal processing functions for use on Cortex-M processor based devices. + * + * The library is divided into a number of functions each covering a specific category: + * - Basic math functions + * - Fast math functions + * - Complex math functions + * - Filters + * - Matrix functions + * - Transforms + * - Motor control functions + * - Statistical functions + * - Support functions + * - Interpolation functions + * + * The library has separate functions for operating on 8-bit integers, 16-bit integers, + * 32-bit integer and 32-bit floating-point values. + * + * Using the Library + * ------------ + * + * The library installer contains prebuilt versions of the libraries in the Lib folder. + * - arm_cortexM7lfdp_math.lib (Little endian and Double Precision Floating Point Unit on Cortex-M7) + * - arm_cortexM7bfdp_math.lib (Big endian and Double Precision Floating Point Unit on Cortex-M7) + * - arm_cortexM7lfsp_math.lib (Little endian and Single Precision Floating Point Unit on Cortex-M7) + * - arm_cortexM7bfsp_math.lib (Big endian and Single Precision Floating Point Unit on Cortex-M7) + * - arm_cortexM7l_math.lib (Little endian on Cortex-M7) + * - arm_cortexM7b_math.lib (Big endian on Cortex-M7) + * - arm_cortexM4lf_math.lib (Little endian and Floating Point Unit on Cortex-M4) + * - arm_cortexM4bf_math.lib (Big endian and Floating Point Unit on Cortex-M4) + * - arm_cortexM4l_math.lib (Little endian on Cortex-M4) + * - arm_cortexM4b_math.lib (Big endian on Cortex-M4) + * - arm_cortexM3l_math.lib (Little endian on Cortex-M3) + * - arm_cortexM3b_math.lib (Big endian on Cortex-M3) + * - arm_cortexM0l_math.lib (Little endian on Cortex-M0 / CortexM0+) + * - arm_cortexM0b_math.lib (Big endian on Cortex-M0 / CortexM0+) + * + * The library functions are declared in the public file arm_math.h which is placed in the Include folder. + * Simply include this file and link the appropriate library in the application and begin calling the library functions. The Library supports single + * public header file arm_math.h for Cortex-M7/M4/M3/M0/M0+ with little endian and big endian. Same header file will be used for floating point unit(FPU) variants. + * Define the appropriate pre processor MACRO ARM_MATH_CM7 or ARM_MATH_CM4 or ARM_MATH_CM3 or + * ARM_MATH_CM0 or ARM_MATH_CM0PLUS depending on the target processor in the application. + * + * Examples + * -------- + * + * The library ships with a number of examples which demonstrate how to use the library functions. + * + * Toolchain Support + * ------------ + * + * The library has been developed and tested with MDK-ARM version 5.14.0.0 + * The library is being tested in GCC and IAR toolchains and updates on this activity will be made available shortly. + * + * Building the Library + * ------------ + * + * The library installer contains a project file to re build libraries on MDK-ARM Tool chain in the CMSIS\\DSP_Lib\\Source\\ARM folder. + * - arm_cortexM_math.uvprojx + * + * + * The libraries can be built by opening the arm_cortexM_math.uvprojx project in MDK-ARM, selecting a specific target, and defining the optional pre processor MACROs detailed above. + * + * Pre-processor Macros + * ------------ + * + * Each library project have differant pre-processor macros. + * + * - UNALIGNED_SUPPORT_DISABLE: + * + * Define macro UNALIGNED_SUPPORT_DISABLE, If the silicon does not support unaligned memory access + * + * - ARM_MATH_BIG_ENDIAN: + * + * Define macro ARM_MATH_BIG_ENDIAN to build the library for big endian targets. By default library builds for little endian targets. + * + * - ARM_MATH_MATRIX_CHECK: + * + * Define macro ARM_MATH_MATRIX_CHECK for checking on the input and output sizes of matrices + * + * - ARM_MATH_ROUNDING: + * + * Define macro ARM_MATH_ROUNDING for rounding on support functions + * + * - ARM_MATH_CMx: + * + * Define macro ARM_MATH_CM4 for building the library on Cortex-M4 target, ARM_MATH_CM3 for building library on Cortex-M3 target + * and ARM_MATH_CM0 for building library on Cortex-M0 target, ARM_MATH_CM0PLUS for building library on Cortex-M0+ target, and + * ARM_MATH_CM7 for building the library on cortex-M7. + * + * - __FPU_PRESENT: + * + * Initialize macro __FPU_PRESENT = 1 when building on FPU supported Targets. Enable this macro for M4bf and M4lf libraries + * + *
+ * CMSIS-DSP in ARM::CMSIS Pack + * ----------------------------- + * + * The following files relevant to CMSIS-DSP are present in the ARM::CMSIS Pack directories: + * |File/Folder |Content | + * |------------------------------|------------------------------------------------------------------------| + * |\b CMSIS\\Documentation\\DSP | This documentation | + * |\b CMSIS\\DSP_Lib | Software license agreement (license.txt) | + * |\b CMSIS\\DSP_Lib\\Examples | Example projects demonstrating the usage of the library functions | + * |\b CMSIS\\DSP_Lib\\Source | Source files for rebuilding the library | + * + *
+ * Revision History of CMSIS-DSP + * ------------ + * Please refer to \ref ChangeLog_pg. + * + * Copyright Notice + * ------------ + * + * Copyright (C) 2010-2015 ARM Limited. All rights reserved. + */ + + +/** + * @defgroup groupMath Basic Math Functions + */ + +/** + * @defgroup groupFastMath Fast Math Functions + * This set of functions provides a fast approximation to sine, cosine, and square root. + * As compared to most of the other functions in the CMSIS math library, the fast math functions + * operate on individual values and not arrays. + * There are separate functions for Q15, Q31, and floating-point data. + * + */ + +/** + * @defgroup groupCmplxMath Complex Math Functions + * This set of functions operates on complex data vectors. + * The data in the complex arrays is stored in an interleaved fashion + * (real, imag, real, imag, ...). + * In the API functions, the number of samples in a complex array refers + * to the number of complex values; the array contains twice this number of + * real values. + */ + +/** + * @defgroup groupFilters Filtering Functions + */ + +/** + * @defgroup groupMatrix Matrix Functions + * + * This set of functions provides basic matrix math operations. + * The functions operate on matrix data structures. For example, + * the type + * definition for the floating-point matrix structure is shown + * below: + *
+ *     typedef struct
+ *     {
+ *       uint16_t numRows;     // number of rows of the matrix.
+ *       uint16_t numCols;     // number of columns of the matrix.
+ *       float32_t *pData;     // points to the data of the matrix.
+ *     } arm_matrix_instance_f32;
+ * 
+ * There are similar definitions for Q15 and Q31 data types. + * + * The structure specifies the size of the matrix and then points to + * an array of data. The array is of size numRows X numCols + * and the values are arranged in row order. That is, the + * matrix element (i, j) is stored at: + *
+ *     pData[i*numCols + j]
+ * 
+ * + * \par Init Functions + * There is an associated initialization function for each type of matrix + * data structure. + * The initialization function sets the values of the internal structure fields. + * Refer to the function arm_mat_init_f32(), arm_mat_init_q31() + * and arm_mat_init_q15() for floating-point, Q31 and Q15 types, respectively. + * + * \par + * Use of the initialization function is optional. However, if initialization function is used + * then the instance structure cannot be placed into a const data section. + * To place the instance structure in a const data + * section, manually initialize the data structure. For example: + *
+ * arm_matrix_instance_f32 S = {nRows, nColumns, pData};
+ * arm_matrix_instance_q31 S = {nRows, nColumns, pData};
+ * arm_matrix_instance_q15 S = {nRows, nColumns, pData};
+ * 
+ * where nRows specifies the number of rows, nColumns + * specifies the number of columns, and pData points to the + * data array. + * + * \par Size Checking + * By default all of the matrix functions perform size checking on the input and + * output matrices. For example, the matrix addition function verifies that the + * two input matrices and the output matrix all have the same number of rows and + * columns. If the size check fails the functions return: + *
+ *     ARM_MATH_SIZE_MISMATCH
+ * 
+ * Otherwise the functions return + *
+ *     ARM_MATH_SUCCESS
+ * 
+ * There is some overhead associated with this matrix size checking. + * The matrix size checking is enabled via the \#define + *
+ *     ARM_MATH_MATRIX_CHECK
+ * 
+ * within the library project settings. By default this macro is defined + * and size checking is enabled. By changing the project settings and + * undefining this macro size checking is eliminated and the functions + * run a bit faster. With size checking disabled the functions always + * return ARM_MATH_SUCCESS. + */ + +/** + * @defgroup groupTransforms Transform Functions + */ + +/** + * @defgroup groupController Controller Functions + */ + +/** + * @defgroup groupStats Statistics Functions + */ +/** + * @defgroup groupSupport Support Functions + */ + +/** + * @defgroup groupInterpolation Interpolation Functions + * These functions perform 1- and 2-dimensional interpolation of data. + * Linear interpolation is used for 1-dimensional data and + * bilinear interpolation is used for 2-dimensional data. + */ + +/** + * @defgroup groupExamples Examples + */ +#ifndef _ARM_MATH_H +#define _ARM_MATH_H + +/* ignore some GCC warnings */ +#if defined ( __GNUC__ ) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wsign-conversion" +#pragma GCC diagnostic ignored "-Wconversion" +#pragma GCC diagnostic ignored "-Wunused-parameter" +#endif + +#define __CMSIS_GENERIC /* disable NVIC and Systick functions */ + +#if defined(ARM_MATH_CM7) + #include "core_cm7.h" +#elif defined (ARM_MATH_CM4) + #include "core_cm4.h" +#elif defined (ARM_MATH_CM3) + #include "core_cm3.h" +#elif defined (ARM_MATH_CM0) + #include "core_cm0.h" + #define ARM_MATH_CM0_FAMILY +#elif defined (ARM_MATH_CM0PLUS) + #include "core_cm0plus.h" + #define ARM_MATH_CM0_FAMILY +#else + #error "Define according the used Cortex core ARM_MATH_CM7, ARM_MATH_CM4, ARM_MATH_CM3, ARM_MATH_CM0PLUS or ARM_MATH_CM0" +#endif + +#undef __CMSIS_GENERIC /* enable NVIC and Systick functions */ +#include "string.h" +#include "math.h" +#ifdef __cplusplus +extern "C" +{ +#endif + + + /** + * @brief Macros required for reciprocal calculation in Normalized LMS + */ + +#define DELTA_Q31 (0x100) +#define DELTA_Q15 0x5 +#define INDEX_MASK 0x0000003F +#ifndef PI +#define PI 3.14159265358979f +#endif + + /** + * @brief Macros required for SINE and COSINE Fast math approximations + */ + +#define FAST_MATH_TABLE_SIZE 512 +#define FAST_MATH_Q31_SHIFT (32 - 10) +#define FAST_MATH_Q15_SHIFT (16 - 10) +#define CONTROLLER_Q31_SHIFT (32 - 9) +#define TABLE_SIZE 256 +#define TABLE_SPACING_Q31 0x400000 +#define TABLE_SPACING_Q15 0x80 + + /** + * @brief Macros required for SINE and COSINE Controller functions + */ + /* 1.31(q31) Fixed value of 2/360 */ + /* -1 to +1 is divided into 360 values so total spacing is (2/360) */ +#define INPUT_SPACING 0xB60B61 + + /** + * @brief Macro for Unaligned Support + */ +#ifndef UNALIGNED_SUPPORT_DISABLE + #define ALIGN4 +#else + #if defined (__GNUC__) + #define ALIGN4 __attribute__((aligned(4))) + #else + #define ALIGN4 __align(4) + #endif +#endif /* #ifndef UNALIGNED_SUPPORT_DISABLE */ + + /** + * @brief Error status returned by some functions in the library. + */ + + typedef enum + { + ARM_MATH_SUCCESS = 0, /**< No error */ + ARM_MATH_ARGUMENT_ERROR = -1, /**< One or more arguments are incorrect */ + ARM_MATH_LENGTH_ERROR = -2, /**< Length of data buffer is incorrect */ + ARM_MATH_SIZE_MISMATCH = -3, /**< Size of matrices is not compatible with the operation. */ + ARM_MATH_NANINF = -4, /**< Not-a-number (NaN) or infinity is generated */ + ARM_MATH_SINGULAR = -5, /**< Generated by matrix inversion if the input matrix is singular and cannot be inverted. */ + ARM_MATH_TEST_FAILURE = -6 /**< Test Failed */ + } arm_status; + + /** + * @brief 8-bit fractional data type in 1.7 format. + */ + typedef int8_t q7_t; + + /** + * @brief 16-bit fractional data type in 1.15 format. + */ + typedef int16_t q15_t; + + /** + * @brief 32-bit fractional data type in 1.31 format. + */ + typedef int32_t q31_t; + + /** + * @brief 64-bit fractional data type in 1.63 format. + */ + typedef int64_t q63_t; + + /** + * @brief 32-bit floating-point type definition. + */ + typedef float float32_t; + + /** + * @brief 64-bit floating-point type definition. + */ + typedef double float64_t; + + /** + * @brief definition to read/write two 16 bit values. + */ +#if defined __CC_ARM + #define __SIMD32_TYPE int32_t __packed + #define CMSIS_UNUSED __attribute__((unused)) + +#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #define __SIMD32_TYPE int32_t + #define CMSIS_UNUSED __attribute__((unused)) + +#elif defined __GNUC__ + #define __SIMD32_TYPE int32_t + #define CMSIS_UNUSED __attribute__((unused)) + +#elif defined __ICCARM__ + #define __SIMD32_TYPE int32_t __packed + #define CMSIS_UNUSED + +#elif defined __CSMC__ + #define __SIMD32_TYPE int32_t + #define CMSIS_UNUSED + +#elif defined __TASKING__ + #define __SIMD32_TYPE __unaligned int32_t + #define CMSIS_UNUSED + +#else + #error Unknown compiler +#endif + +#define __SIMD32(addr) (*(__SIMD32_TYPE **) & (addr)) +#define __SIMD32_CONST(addr) ((__SIMD32_TYPE *)(addr)) +#define _SIMD32_OFFSET(addr) (*(__SIMD32_TYPE *) (addr)) +#define __SIMD64(addr) (*(int64_t **) & (addr)) + +#if defined (ARM_MATH_CM3) || defined (ARM_MATH_CM0_FAMILY) + /** + * @brief definition to pack two 16 bit values. + */ +#define __PKHBT(ARG1, ARG2, ARG3) ( (((int32_t)(ARG1) << 0) & (int32_t)0x0000FFFF) | \ + (((int32_t)(ARG2) << ARG3) & (int32_t)0xFFFF0000) ) +#define __PKHTB(ARG1, ARG2, ARG3) ( (((int32_t)(ARG1) << 0) & (int32_t)0xFFFF0000) | \ + (((int32_t)(ARG2) >> ARG3) & (int32_t)0x0000FFFF) ) + +#endif + + + /** + * @brief definition to pack four 8 bit values. + */ +#ifndef ARM_MATH_BIG_ENDIAN + +#define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v0) << 0) & (int32_t)0x000000FF) | \ + (((int32_t)(v1) << 8) & (int32_t)0x0000FF00) | \ + (((int32_t)(v2) << 16) & (int32_t)0x00FF0000) | \ + (((int32_t)(v3) << 24) & (int32_t)0xFF000000) ) +#else + +#define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v3) << 0) & (int32_t)0x000000FF) | \ + (((int32_t)(v2) << 8) & (int32_t)0x0000FF00) | \ + (((int32_t)(v1) << 16) & (int32_t)0x00FF0000) | \ + (((int32_t)(v0) << 24) & (int32_t)0xFF000000) ) + +#endif + + + /** + * @brief Clips Q63 to Q31 values. + */ + static __INLINE q31_t clip_q63_to_q31( + q63_t x) + { + return ((q31_t) (x >> 32) != ((q31_t) x >> 31)) ? + ((0x7FFFFFFF ^ ((q31_t) (x >> 63)))) : (q31_t) x; + } + + /** + * @brief Clips Q63 to Q15 values. + */ + static __INLINE q15_t clip_q63_to_q15( + q63_t x) + { + return ((q31_t) (x >> 32) != ((q31_t) x >> 31)) ? + ((0x7FFF ^ ((q15_t) (x >> 63)))) : (q15_t) (x >> 15); + } + + /** + * @brief Clips Q31 to Q7 values. + */ + static __INLINE q7_t clip_q31_to_q7( + q31_t x) + { + return ((q31_t) (x >> 24) != ((q31_t) x >> 23)) ? + ((0x7F ^ ((q7_t) (x >> 31)))) : (q7_t) x; + } + + /** + * @brief Clips Q31 to Q15 values. + */ + static __INLINE q15_t clip_q31_to_q15( + q31_t x) + { + return ((q31_t) (x >> 16) != ((q31_t) x >> 15)) ? + ((0x7FFF ^ ((q15_t) (x >> 31)))) : (q15_t) x; + } + + /** + * @brief Multiplies 32 X 64 and returns 32 bit result in 2.30 format. + */ + + static __INLINE q63_t mult32x64( + q63_t x, + q31_t y) + { + return ((((q63_t) (x & 0x00000000FFFFFFFF) * y) >> 32) + + (((q63_t) (x >> 32) * y))); + } + +/* + #if defined (ARM_MATH_CM0_FAMILY) && defined ( __CC_ARM ) + #define __CLZ __clz + #endif + */ +/* note: function can be removed when all toolchain support __CLZ for Cortex-M0 */ +#if defined (ARM_MATH_CM0_FAMILY) && ((defined (__ICCARM__)) ) + static __INLINE uint32_t __CLZ( + q31_t data); + + static __INLINE uint32_t __CLZ( + q31_t data) + { + uint32_t count = 0; + uint32_t mask = 0x80000000; + + while((data & mask) == 0) + { + count += 1u; + mask = mask >> 1u; + } + + return (count); + } +#endif + + /** + * @brief Function to Calculates 1/in (reciprocal) value of Q31 Data type. + */ + + static __INLINE uint32_t arm_recip_q31( + q31_t in, + q31_t * dst, + q31_t * pRecipTable) + { + q31_t out; + uint32_t tempVal; + uint32_t index, i; + uint32_t signBits; + + if(in > 0) + { + signBits = ((uint32_t) (__CLZ( in) - 1)); + } + else + { + signBits = ((uint32_t) (__CLZ(-in) - 1)); + } + + /* Convert input sample to 1.31 format */ + in = (in << signBits); + + /* calculation of index for initial approximated Val */ + index = (uint32_t)(in >> 24); + index = (index & INDEX_MASK); + + /* 1.31 with exp 1 */ + out = pRecipTable[index]; + + /* calculation of reciprocal value */ + /* running approximation for two iterations */ + for (i = 0u; i < 2u; i++) + { + tempVal = (uint32_t) (((q63_t) in * out) >> 31); + tempVal = 0x7FFFFFFFu - tempVal; + /* 1.31 with exp 1 */ + /* out = (q31_t) (((q63_t) out * tempVal) >> 30); */ + out = clip_q63_to_q31(((q63_t) out * tempVal) >> 30); + } + + /* write output */ + *dst = out; + + /* return num of signbits of out = 1/in value */ + return (signBits + 1u); + } + + + /** + * @brief Function to Calculates 1/in (reciprocal) value of Q15 Data type. + */ + static __INLINE uint32_t arm_recip_q15( + q15_t in, + q15_t * dst, + q15_t * pRecipTable) + { + q15_t out = 0; + uint32_t tempVal = 0; + uint32_t index = 0, i = 0; + uint32_t signBits = 0; + + if(in > 0) + { + signBits = ((uint32_t)(__CLZ( in) - 17)); + } + else + { + signBits = ((uint32_t)(__CLZ(-in) - 17)); + } + + /* Convert input sample to 1.15 format */ + in = (in << signBits); + + /* calculation of index for initial approximated Val */ + index = (uint32_t)(in >> 8); + index = (index & INDEX_MASK); + + /* 1.15 with exp 1 */ + out = pRecipTable[index]; + + /* calculation of reciprocal value */ + /* running approximation for two iterations */ + for (i = 0u; i < 2u; i++) + { + tempVal = (uint32_t) (((q31_t) in * out) >> 15); + tempVal = 0x7FFFu - tempVal; + /* 1.15 with exp 1 */ + out = (q15_t) (((q31_t) out * tempVal) >> 14); + /* out = clip_q31_to_q15(((q31_t) out * tempVal) >> 14); */ + } + + /* write output */ + *dst = out; + + /* return num of signbits of out = 1/in value */ + return (signBits + 1); + } + + + /* + * @brief C custom defined intrinisic function for only M0 processors + */ +#if defined(ARM_MATH_CM0_FAMILY) + static __INLINE q31_t __SSAT( + q31_t x, + uint32_t y) + { + int32_t posMax, negMin; + uint32_t i; + + posMax = 1; + for (i = 0; i < (y - 1); i++) + { + posMax = posMax * 2; + } + + if(x > 0) + { + posMax = (posMax - 1); + + if(x > posMax) + { + x = posMax; + } + } + else + { + negMin = -posMax; + + if(x < negMin) + { + x = negMin; + } + } + return (x); + } +#endif /* end of ARM_MATH_CM0_FAMILY */ + + + /* + * @brief C custom defined intrinsic function for M3 and M0 processors + */ +#if defined (ARM_MATH_CM3) || defined (ARM_MATH_CM0_FAMILY) + + /* + * @brief C custom defined QADD8 for M3 and M0 processors + */ + static __INLINE uint32_t __QADD8( + uint32_t x, + uint32_t y) + { + q31_t r, s, t, u; + + r = __SSAT(((((q31_t)x << 24) >> 24) + (((q31_t)y << 24) >> 24)), 8) & (int32_t)0x000000FF; + s = __SSAT(((((q31_t)x << 16) >> 24) + (((q31_t)y << 16) >> 24)), 8) & (int32_t)0x000000FF; + t = __SSAT(((((q31_t)x << 8) >> 24) + (((q31_t)y << 8) >> 24)), 8) & (int32_t)0x000000FF; + u = __SSAT(((((q31_t)x ) >> 24) + (((q31_t)y ) >> 24)), 8) & (int32_t)0x000000FF; + + return ((uint32_t)((u << 24) | (t << 16) | (s << 8) | (r ))); + } + + + /* + * @brief C custom defined QSUB8 for M3 and M0 processors + */ + static __INLINE uint32_t __QSUB8( + uint32_t x, + uint32_t y) + { + q31_t r, s, t, u; + + r = __SSAT(((((q31_t)x << 24) >> 24) - (((q31_t)y << 24) >> 24)), 8) & (int32_t)0x000000FF; + s = __SSAT(((((q31_t)x << 16) >> 24) - (((q31_t)y << 16) >> 24)), 8) & (int32_t)0x000000FF; + t = __SSAT(((((q31_t)x << 8) >> 24) - (((q31_t)y << 8) >> 24)), 8) & (int32_t)0x000000FF; + u = __SSAT(((((q31_t)x ) >> 24) - (((q31_t)y ) >> 24)), 8) & (int32_t)0x000000FF; + + return ((uint32_t)((u << 24) | (t << 16) | (s << 8) | (r ))); + } + + + /* + * @brief C custom defined QADD16 for M3 and M0 processors + */ + static __INLINE uint32_t __QADD16( + uint32_t x, + uint32_t y) + { +/* q31_t r, s; without initialisation 'arm_offset_q15 test' fails but 'intrinsic' tests pass! for armCC */ + q31_t r = 0, s = 0; + + r = __SSAT(((((q31_t)x << 16) >> 16) + (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF; + s = __SSAT(((((q31_t)x ) >> 16) + (((q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined SHADD16 for M3 and M0 processors + */ + static __INLINE uint32_t __SHADD16( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = (((((q31_t)x << 16) >> 16) + (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF; + s = (((((q31_t)x ) >> 16) + (((q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined QSUB16 for M3 and M0 processors + */ + static __INLINE uint32_t __QSUB16( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = __SSAT(((((q31_t)x << 16) >> 16) - (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF; + s = __SSAT(((((q31_t)x ) >> 16) - (((q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined SHSUB16 for M3 and M0 processors + */ + static __INLINE uint32_t __SHSUB16( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = (((((q31_t)x << 16) >> 16) - (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF; + s = (((((q31_t)x ) >> 16) - (((q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined QASX for M3 and M0 processors + */ + static __INLINE uint32_t __QASX( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = __SSAT(((((q31_t)x << 16) >> 16) - (((q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF; + s = __SSAT(((((q31_t)x ) >> 16) + (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined SHASX for M3 and M0 processors + */ + static __INLINE uint32_t __SHASX( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = (((((q31_t)x << 16) >> 16) - (((q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF; + s = (((((q31_t)x ) >> 16) + (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined QSAX for M3 and M0 processors + */ + static __INLINE uint32_t __QSAX( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = __SSAT(((((q31_t)x << 16) >> 16) + (((q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF; + s = __SSAT(((((q31_t)x ) >> 16) - (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined SHSAX for M3 and M0 processors + */ + static __INLINE uint32_t __SHSAX( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = (((((q31_t)x << 16) >> 16) + (((q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF; + s = (((((q31_t)x ) >> 16) - (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined SMUSDX for M3 and M0 processors + */ + static __INLINE uint32_t __SMUSDX( + uint32_t x, + uint32_t y) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) - + ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) )); + } + + /* + * @brief C custom defined SMUADX for M3 and M0 processors + */ + static __INLINE uint32_t __SMUADX( + uint32_t x, + uint32_t y) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) + + ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) )); + } + + + /* + * @brief C custom defined QADD for M3 and M0 processors + */ + static __INLINE int32_t __QADD( + int32_t x, + int32_t y) + { + return ((int32_t)(clip_q63_to_q31((q63_t)x + (q31_t)y))); + } + + + /* + * @brief C custom defined QSUB for M3 and M0 processors + */ + static __INLINE int32_t __QSUB( + int32_t x, + int32_t y) + { + return ((int32_t)(clip_q63_to_q31((q63_t)x - (q31_t)y))); + } + + + /* + * @brief C custom defined SMLAD for M3 and M0 processors + */ + static __INLINE uint32_t __SMLAD( + uint32_t x, + uint32_t y, + uint32_t sum) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) + + ((((q31_t)x ) >> 16) * (((q31_t)y ) >> 16)) + + ( ((q31_t)sum ) ) )); + } + + + /* + * @brief C custom defined SMLADX for M3 and M0 processors + */ + static __INLINE uint32_t __SMLADX( + uint32_t x, + uint32_t y, + uint32_t sum) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) + + ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) + + ( ((q31_t)sum ) ) )); + } + + + /* + * @brief C custom defined SMLSDX for M3 and M0 processors + */ + static __INLINE uint32_t __SMLSDX( + uint32_t x, + uint32_t y, + uint32_t sum) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) - + ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) + + ( ((q31_t)sum ) ) )); + } + + + /* + * @brief C custom defined SMLALD for M3 and M0 processors + */ + static __INLINE uint64_t __SMLALD( + uint32_t x, + uint32_t y, + uint64_t sum) + { +/* return (sum + ((q15_t) (x >> 16) * (q15_t) (y >> 16)) + ((q15_t) x * (q15_t) y)); */ + return ((uint64_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) + + ((((q31_t)x ) >> 16) * (((q31_t)y ) >> 16)) + + ( ((q63_t)sum ) ) )); + } + + + /* + * @brief C custom defined SMLALDX for M3 and M0 processors + */ + static __INLINE uint64_t __SMLALDX( + uint32_t x, + uint32_t y, + uint64_t sum) + { +/* return (sum + ((q15_t) (x >> 16) * (q15_t) y)) + ((q15_t) x * (q15_t) (y >> 16)); */ + return ((uint64_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) + + ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) + + ( ((q63_t)sum ) ) )); + } + + + /* + * @brief C custom defined SMUAD for M3 and M0 processors + */ + static __INLINE uint32_t __SMUAD( + uint32_t x, + uint32_t y) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) + + ((((q31_t)x ) >> 16) * (((q31_t)y ) >> 16)) )); + } + + + /* + * @brief C custom defined SMUSD for M3 and M0 processors + */ + static __INLINE uint32_t __SMUSD( + uint32_t x, + uint32_t y) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) - + ((((q31_t)x ) >> 16) * (((q31_t)y ) >> 16)) )); + } + + + /* + * @brief C custom defined SXTB16 for M3 and M0 processors + */ + static __INLINE uint32_t __SXTB16( + uint32_t x) + { + return ((uint32_t)(((((q31_t)x << 24) >> 24) & (q31_t)0x0000FFFF) | + ((((q31_t)x << 8) >> 8) & (q31_t)0xFFFF0000) )); + } + +#endif /* defined (ARM_MATH_CM3) || defined (ARM_MATH_CM0_FAMILY) */ + + + /** + * @brief Instance structure for the Q7 FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of filter coefficients in the filter. */ + q7_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q7_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + } arm_fir_instance_q7; + + /** + * @brief Instance structure for the Q15 FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of filter coefficients in the filter. */ + q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + } arm_fir_instance_q15; + + /** + * @brief Instance structure for the Q31 FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of filter coefficients in the filter. */ + q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + } arm_fir_instance_q31; + + /** + * @brief Instance structure for the floating-point FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of filter coefficients in the filter. */ + float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + } arm_fir_instance_f32; + + + /** + * @brief Processing function for the Q7 FIR filter. + * @param[in] S points to an instance of the Q7 FIR filter structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_q7( + const arm_fir_instance_q7 * S, + q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q7 FIR filter. + * @param[in,out] S points to an instance of the Q7 FIR structure. + * @param[in] numTaps Number of filter coefficients in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of samples that are processed. + */ + void arm_fir_init_q7( + arm_fir_instance_q7 * S, + uint16_t numTaps, + q7_t * pCoeffs, + q7_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q15 FIR filter. + * @param[in] S points to an instance of the Q15 FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_q15( + const arm_fir_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Processing function for the fast Q15 FIR filter for Cortex-M3 and Cortex-M4. + * @param[in] S points to an instance of the Q15 FIR filter structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_fast_q15( + const arm_fir_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q15 FIR filter. + * @param[in,out] S points to an instance of the Q15 FIR filter structure. + * @param[in] numTaps Number of filter coefficients in the filter. Must be even and greater than or equal to 4. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of samples that are processed at a time. + * @return The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_ARGUMENT_ERROR if + * numTaps is not a supported value. + */ + arm_status arm_fir_init_q15( + arm_fir_instance_q15 * S, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q31 FIR filter. + * @param[in] S points to an instance of the Q31 FIR filter structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_q31( + const arm_fir_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Processing function for the fast Q31 FIR filter for Cortex-M3 and Cortex-M4. + * @param[in] S points to an instance of the Q31 FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_fast_q31( + const arm_fir_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 FIR filter. + * @param[in,out] S points to an instance of the Q31 FIR structure. + * @param[in] numTaps Number of filter coefficients in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of samples that are processed at a time. + */ + void arm_fir_init_q31( + arm_fir_instance_q31 * S, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the floating-point FIR filter. + * @param[in] S points to an instance of the floating-point FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_f32( + const arm_fir_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the floating-point FIR filter. + * @param[in,out] S points to an instance of the floating-point FIR filter structure. + * @param[in] numTaps Number of filter coefficients in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of samples that are processed at a time. + */ + void arm_fir_init_f32( + arm_fir_instance_f32 * S, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q15 Biquad cascade filter. + */ + typedef struct + { + int8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + q15_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */ + q15_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */ + int8_t postShift; /**< Additional shift, in bits, applied to each output sample. */ + } arm_biquad_casd_df1_inst_q15; + + /** + * @brief Instance structure for the Q31 Biquad cascade filter. + */ + typedef struct + { + uint32_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + q31_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */ + q31_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */ + uint8_t postShift; /**< Additional shift, in bits, applied to each output sample. */ + } arm_biquad_casd_df1_inst_q31; + + /** + * @brief Instance structure for the floating-point Biquad cascade filter. + */ + typedef struct + { + uint32_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + float32_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */ + float32_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */ + } arm_biquad_casd_df1_inst_f32; + + + /** + * @brief Processing function for the Q15 Biquad cascade filter. + * @param[in] S points to an instance of the Q15 Biquad cascade structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df1_q15( + const arm_biquad_casd_df1_inst_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q15 Biquad cascade filter. + * @param[in,out] S points to an instance of the Q15 Biquad cascade structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] postShift Shift to be applied to the output. Varies according to the coefficients format + */ + void arm_biquad_cascade_df1_init_q15( + arm_biquad_casd_df1_inst_q15 * S, + uint8_t numStages, + q15_t * pCoeffs, + q15_t * pState, + int8_t postShift); + + + /** + * @brief Fast but less precise processing function for the Q15 Biquad cascade filter for Cortex-M3 and Cortex-M4. + * @param[in] S points to an instance of the Q15 Biquad cascade structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df1_fast_q15( + const arm_biquad_casd_df1_inst_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q31 Biquad cascade filter + * @param[in] S points to an instance of the Q31 Biquad cascade structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df1_q31( + const arm_biquad_casd_df1_inst_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Fast but less precise processing function for the Q31 Biquad cascade filter for Cortex-M3 and Cortex-M4. + * @param[in] S points to an instance of the Q31 Biquad cascade structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df1_fast_q31( + const arm_biquad_casd_df1_inst_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 Biquad cascade filter. + * @param[in,out] S points to an instance of the Q31 Biquad cascade structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] postShift Shift to be applied to the output. Varies according to the coefficients format + */ + void arm_biquad_cascade_df1_init_q31( + arm_biquad_casd_df1_inst_q31 * S, + uint8_t numStages, + q31_t * pCoeffs, + q31_t * pState, + int8_t postShift); + + + /** + * @brief Processing function for the floating-point Biquad cascade filter. + * @param[in] S points to an instance of the floating-point Biquad cascade structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df1_f32( + const arm_biquad_casd_df1_inst_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the floating-point Biquad cascade filter. + * @param[in,out] S points to an instance of the floating-point Biquad cascade structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + */ + void arm_biquad_cascade_df1_init_f32( + arm_biquad_casd_df1_inst_f32 * S, + uint8_t numStages, + float32_t * pCoeffs, + float32_t * pState); + + + /** + * @brief Instance structure for the floating-point matrix structure. + */ + typedef struct + { + uint16_t numRows; /**< number of rows of the matrix. */ + uint16_t numCols; /**< number of columns of the matrix. */ + float32_t *pData; /**< points to the data of the matrix. */ + } arm_matrix_instance_f32; + + + /** + * @brief Instance structure for the floating-point matrix structure. + */ + typedef struct + { + uint16_t numRows; /**< number of rows of the matrix. */ + uint16_t numCols; /**< number of columns of the matrix. */ + float64_t *pData; /**< points to the data of the matrix. */ + } arm_matrix_instance_f64; + + /** + * @brief Instance structure for the Q15 matrix structure. + */ + typedef struct + { + uint16_t numRows; /**< number of rows of the matrix. */ + uint16_t numCols; /**< number of columns of the matrix. */ + q15_t *pData; /**< points to the data of the matrix. */ + } arm_matrix_instance_q15; + + /** + * @brief Instance structure for the Q31 matrix structure. + */ + typedef struct + { + uint16_t numRows; /**< number of rows of the matrix. */ + uint16_t numCols; /**< number of columns of the matrix. */ + q31_t *pData; /**< points to the data of the matrix. */ + } arm_matrix_instance_q31; + + + /** + * @brief Floating-point matrix addition. + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_add_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst); + + + /** + * @brief Q15 matrix addition. + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_add_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst); + + + /** + * @brief Q31 matrix addition. + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_add_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + + /** + * @brief Floating-point, complex, matrix multiplication. + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_cmplx_mult_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst); + + + /** + * @brief Q15, complex, matrix multiplication. + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_cmplx_mult_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst, + q15_t * pScratch); + + + /** + * @brief Q31, complex, matrix multiplication. + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_cmplx_mult_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + + /** + * @brief Floating-point matrix transpose. + * @param[in] pSrc points to the input matrix + * @param[out] pDst points to the output matrix + * @return The function returns either ARM_MATH_SIZE_MISMATCH + * or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_trans_f32( + const arm_matrix_instance_f32 * pSrc, + arm_matrix_instance_f32 * pDst); + + + /** + * @brief Q15 matrix transpose. + * @param[in] pSrc points to the input matrix + * @param[out] pDst points to the output matrix + * @return The function returns either ARM_MATH_SIZE_MISMATCH + * or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_trans_q15( + const arm_matrix_instance_q15 * pSrc, + arm_matrix_instance_q15 * pDst); + + + /** + * @brief Q31 matrix transpose. + * @param[in] pSrc points to the input matrix + * @param[out] pDst points to the output matrix + * @return The function returns either ARM_MATH_SIZE_MISMATCH + * or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_trans_q31( + const arm_matrix_instance_q31 * pSrc, + arm_matrix_instance_q31 * pDst); + + + /** + * @brief Floating-point matrix multiplication + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_mult_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst); + + + /** + * @brief Q15 matrix multiplication + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @param[in] pState points to the array for storing intermediate results + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_mult_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst, + q15_t * pState); + + + /** + * @brief Q15 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @param[in] pState points to the array for storing intermediate results + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_mult_fast_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst, + q15_t * pState); + + + /** + * @brief Q31 matrix multiplication + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_mult_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + + /** + * @brief Q31 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_mult_fast_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + + /** + * @brief Floating-point matrix subtraction + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_sub_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst); + + + /** + * @brief Q15 matrix subtraction + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_sub_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst); + + + /** + * @brief Q31 matrix subtraction + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_sub_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + + /** + * @brief Floating-point matrix scaling. + * @param[in] pSrc points to the input matrix + * @param[in] scale scale factor + * @param[out] pDst points to the output matrix + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_scale_f32( + const arm_matrix_instance_f32 * pSrc, + float32_t scale, + arm_matrix_instance_f32 * pDst); + + + /** + * @brief Q15 matrix scaling. + * @param[in] pSrc points to input matrix + * @param[in] scaleFract fractional portion of the scale factor + * @param[in] shift number of bits to shift the result by + * @param[out] pDst points to output matrix + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_scale_q15( + const arm_matrix_instance_q15 * pSrc, + q15_t scaleFract, + int32_t shift, + arm_matrix_instance_q15 * pDst); + + + /** + * @brief Q31 matrix scaling. + * @param[in] pSrc points to input matrix + * @param[in] scaleFract fractional portion of the scale factor + * @param[in] shift number of bits to shift the result by + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ + arm_status arm_mat_scale_q31( + const arm_matrix_instance_q31 * pSrc, + q31_t scaleFract, + int32_t shift, + arm_matrix_instance_q31 * pDst); + + + /** + * @brief Q31 matrix initialization. + * @param[in,out] S points to an instance of the floating-point matrix structure. + * @param[in] nRows number of rows in the matrix. + * @param[in] nColumns number of columns in the matrix. + * @param[in] pData points to the matrix data array. + */ + void arm_mat_init_q31( + arm_matrix_instance_q31 * S, + uint16_t nRows, + uint16_t nColumns, + q31_t * pData); + + + /** + * @brief Q15 matrix initialization. + * @param[in,out] S points to an instance of the floating-point matrix structure. + * @param[in] nRows number of rows in the matrix. + * @param[in] nColumns number of columns in the matrix. + * @param[in] pData points to the matrix data array. + */ + void arm_mat_init_q15( + arm_matrix_instance_q15 * S, + uint16_t nRows, + uint16_t nColumns, + q15_t * pData); + + + /** + * @brief Floating-point matrix initialization. + * @param[in,out] S points to an instance of the floating-point matrix structure. + * @param[in] nRows number of rows in the matrix. + * @param[in] nColumns number of columns in the matrix. + * @param[in] pData points to the matrix data array. + */ + void arm_mat_init_f32( + arm_matrix_instance_f32 * S, + uint16_t nRows, + uint16_t nColumns, + float32_t * pData); + + + + /** + * @brief Instance structure for the Q15 PID Control. + */ + typedef struct + { + q15_t A0; /**< The derived gain, A0 = Kp + Ki + Kd . */ +#ifdef ARM_MATH_CM0_FAMILY + q15_t A1; + q15_t A2; +#else + q31_t A1; /**< The derived gain A1 = -Kp - 2Kd | Kd.*/ +#endif + q15_t state[3]; /**< The state array of length 3. */ + q15_t Kp; /**< The proportional gain. */ + q15_t Ki; /**< The integral gain. */ + q15_t Kd; /**< The derivative gain. */ + } arm_pid_instance_q15; + + /** + * @brief Instance structure for the Q31 PID Control. + */ + typedef struct + { + q31_t A0; /**< The derived gain, A0 = Kp + Ki + Kd . */ + q31_t A1; /**< The derived gain, A1 = -Kp - 2Kd. */ + q31_t A2; /**< The derived gain, A2 = Kd . */ + q31_t state[3]; /**< The state array of length 3. */ + q31_t Kp; /**< The proportional gain. */ + q31_t Ki; /**< The integral gain. */ + q31_t Kd; /**< The derivative gain. */ + } arm_pid_instance_q31; + + /** + * @brief Instance structure for the floating-point PID Control. + */ + typedef struct + { + float32_t A0; /**< The derived gain, A0 = Kp + Ki + Kd . */ + float32_t A1; /**< The derived gain, A1 = -Kp - 2Kd. */ + float32_t A2; /**< The derived gain, A2 = Kd . */ + float32_t state[3]; /**< The state array of length 3. */ + float32_t Kp; /**< The proportional gain. */ + float32_t Ki; /**< The integral gain. */ + float32_t Kd; /**< The derivative gain. */ + } arm_pid_instance_f32; + + + + /** + * @brief Initialization function for the floating-point PID Control. + * @param[in,out] S points to an instance of the PID structure. + * @param[in] resetStateFlag flag to reset the state. 0 = no change in state 1 = reset the state. + */ + void arm_pid_init_f32( + arm_pid_instance_f32 * S, + int32_t resetStateFlag); + + + /** + * @brief Reset function for the floating-point PID Control. + * @param[in,out] S is an instance of the floating-point PID Control structure + */ + void arm_pid_reset_f32( + arm_pid_instance_f32 * S); + + + /** + * @brief Initialization function for the Q31 PID Control. + * @param[in,out] S points to an instance of the Q15 PID structure. + * @param[in] resetStateFlag flag to reset the state. 0 = no change in state 1 = reset the state. + */ + void arm_pid_init_q31( + arm_pid_instance_q31 * S, + int32_t resetStateFlag); + + + /** + * @brief Reset function for the Q31 PID Control. + * @param[in,out] S points to an instance of the Q31 PID Control structure + */ + + void arm_pid_reset_q31( + arm_pid_instance_q31 * S); + + + /** + * @brief Initialization function for the Q15 PID Control. + * @param[in,out] S points to an instance of the Q15 PID structure. + * @param[in] resetStateFlag flag to reset the state. 0 = no change in state 1 = reset the state. + */ + void arm_pid_init_q15( + arm_pid_instance_q15 * S, + int32_t resetStateFlag); + + + /** + * @brief Reset function for the Q15 PID Control. + * @param[in,out] S points to an instance of the q15 PID Control structure + */ + void arm_pid_reset_q15( + arm_pid_instance_q15 * S); + + + /** + * @brief Instance structure for the floating-point Linear Interpolate function. + */ + typedef struct + { + uint32_t nValues; /**< nValues */ + float32_t x1; /**< x1 */ + float32_t xSpacing; /**< xSpacing */ + float32_t *pYData; /**< pointer to the table of Y values */ + } arm_linear_interp_instance_f32; + + /** + * @brief Instance structure for the floating-point bilinear interpolation function. + */ + typedef struct + { + uint16_t numRows; /**< number of rows in the data table. */ + uint16_t numCols; /**< number of columns in the data table. */ + float32_t *pData; /**< points to the data table. */ + } arm_bilinear_interp_instance_f32; + + /** + * @brief Instance structure for the Q31 bilinear interpolation function. + */ + typedef struct + { + uint16_t numRows; /**< number of rows in the data table. */ + uint16_t numCols; /**< number of columns in the data table. */ + q31_t *pData; /**< points to the data table. */ + } arm_bilinear_interp_instance_q31; + + /** + * @brief Instance structure for the Q15 bilinear interpolation function. + */ + typedef struct + { + uint16_t numRows; /**< number of rows in the data table. */ + uint16_t numCols; /**< number of columns in the data table. */ + q15_t *pData; /**< points to the data table. */ + } arm_bilinear_interp_instance_q15; + + /** + * @brief Instance structure for the Q15 bilinear interpolation function. + */ + typedef struct + { + uint16_t numRows; /**< number of rows in the data table. */ + uint16_t numCols; /**< number of columns in the data table. */ + q7_t *pData; /**< points to the data table. */ + } arm_bilinear_interp_instance_q7; + + + /** + * @brief Q7 vector multiplication. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_mult_q7( + q7_t * pSrcA, + q7_t * pSrcB, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q15 vector multiplication. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_mult_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q31 vector multiplication. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_mult_q31( + q31_t * pSrcA, + q31_t * pSrcB, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Floating-point vector multiplication. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_mult_f32( + float32_t * pSrcA, + float32_t * pSrcB, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q15 CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + q15_t *pTwiddle; /**< points to the Sin twiddle factor table. */ + uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + } arm_cfft_radix2_instance_q15; + +/* Deprecated */ + arm_status arm_cfft_radix2_init_q15( + arm_cfft_radix2_instance_q15 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + +/* Deprecated */ + void arm_cfft_radix2_q15( + const arm_cfft_radix2_instance_q15 * S, + q15_t * pSrc); + + + /** + * @brief Instance structure for the Q15 CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + q15_t *pTwiddle; /**< points to the twiddle factor table. */ + uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + } arm_cfft_radix4_instance_q15; + +/* Deprecated */ + arm_status arm_cfft_radix4_init_q15( + arm_cfft_radix4_instance_q15 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + +/* Deprecated */ + void arm_cfft_radix4_q15( + const arm_cfft_radix4_instance_q15 * S, + q15_t * pSrc); + + /** + * @brief Instance structure for the Radix-2 Q31 CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + q31_t *pTwiddle; /**< points to the Twiddle factor table. */ + uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + } arm_cfft_radix2_instance_q31; + +/* Deprecated */ + arm_status arm_cfft_radix2_init_q31( + arm_cfft_radix2_instance_q31 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + +/* Deprecated */ + void arm_cfft_radix2_q31( + const arm_cfft_radix2_instance_q31 * S, + q31_t * pSrc); + + /** + * @brief Instance structure for the Q31 CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + q31_t *pTwiddle; /**< points to the twiddle factor table. */ + uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + } arm_cfft_radix4_instance_q31; + +/* Deprecated */ + void arm_cfft_radix4_q31( + const arm_cfft_radix4_instance_q31 * S, + q31_t * pSrc); + +/* Deprecated */ + arm_status arm_cfft_radix4_init_q31( + arm_cfft_radix4_instance_q31 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + + /** + * @brief Instance structure for the floating-point CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + float32_t *pTwiddle; /**< points to the Twiddle factor table. */ + uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + float32_t onebyfftLen; /**< value of 1/fftLen. */ + } arm_cfft_radix2_instance_f32; + +/* Deprecated */ + arm_status arm_cfft_radix2_init_f32( + arm_cfft_radix2_instance_f32 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + +/* Deprecated */ + void arm_cfft_radix2_f32( + const arm_cfft_radix2_instance_f32 * S, + float32_t * pSrc); + + /** + * @brief Instance structure for the floating-point CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + float32_t *pTwiddle; /**< points to the Twiddle factor table. */ + uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + float32_t onebyfftLen; /**< value of 1/fftLen. */ + } arm_cfft_radix4_instance_f32; + +/* Deprecated */ + arm_status arm_cfft_radix4_init_f32( + arm_cfft_radix4_instance_f32 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + +/* Deprecated */ + void arm_cfft_radix4_f32( + const arm_cfft_radix4_instance_f32 * S, + float32_t * pSrc); + + /** + * @brief Instance structure for the fixed-point CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + const q15_t *pTwiddle; /**< points to the Twiddle factor table. */ + const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t bitRevLength; /**< bit reversal table length. */ + } arm_cfft_instance_q15; + +void arm_cfft_q15( + const arm_cfft_instance_q15 * S, + q15_t * p1, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + + /** + * @brief Instance structure for the fixed-point CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + const q31_t *pTwiddle; /**< points to the Twiddle factor table. */ + const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t bitRevLength; /**< bit reversal table length. */ + } arm_cfft_instance_q31; + +void arm_cfft_q31( + const arm_cfft_instance_q31 * S, + q31_t * p1, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + + /** + * @brief Instance structure for the floating-point CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + const float32_t *pTwiddle; /**< points to the Twiddle factor table. */ + const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t bitRevLength; /**< bit reversal table length. */ + } arm_cfft_instance_f32; + + void arm_cfft_f32( + const arm_cfft_instance_f32 * S, + float32_t * p1, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + + /** + * @brief Instance structure for the Q15 RFFT/RIFFT function. + */ + typedef struct + { + uint32_t fftLenReal; /**< length of the real FFT. */ + uint8_t ifftFlagR; /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */ + uint8_t bitReverseFlagR; /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */ + uint32_t twidCoefRModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + q15_t *pTwiddleAReal; /**< points to the real twiddle factor table. */ + q15_t *pTwiddleBReal; /**< points to the imag twiddle factor table. */ + const arm_cfft_instance_q15 *pCfft; /**< points to the complex FFT instance. */ + } arm_rfft_instance_q15; + + arm_status arm_rfft_init_q15( + arm_rfft_instance_q15 * S, + uint32_t fftLenReal, + uint32_t ifftFlagR, + uint32_t bitReverseFlag); + + void arm_rfft_q15( + const arm_rfft_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst); + + /** + * @brief Instance structure for the Q31 RFFT/RIFFT function. + */ + typedef struct + { + uint32_t fftLenReal; /**< length of the real FFT. */ + uint8_t ifftFlagR; /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */ + uint8_t bitReverseFlagR; /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */ + uint32_t twidCoefRModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + q31_t *pTwiddleAReal; /**< points to the real twiddle factor table. */ + q31_t *pTwiddleBReal; /**< points to the imag twiddle factor table. */ + const arm_cfft_instance_q31 *pCfft; /**< points to the complex FFT instance. */ + } arm_rfft_instance_q31; + + arm_status arm_rfft_init_q31( + arm_rfft_instance_q31 * S, + uint32_t fftLenReal, + uint32_t ifftFlagR, + uint32_t bitReverseFlag); + + void arm_rfft_q31( + const arm_rfft_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst); + + /** + * @brief Instance structure for the floating-point RFFT/RIFFT function. + */ + typedef struct + { + uint32_t fftLenReal; /**< length of the real FFT. */ + uint16_t fftLenBy2; /**< length of the complex FFT. */ + uint8_t ifftFlagR; /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */ + uint8_t bitReverseFlagR; /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */ + uint32_t twidCoefRModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + float32_t *pTwiddleAReal; /**< points to the real twiddle factor table. */ + float32_t *pTwiddleBReal; /**< points to the imag twiddle factor table. */ + arm_cfft_radix4_instance_f32 *pCfft; /**< points to the complex FFT instance. */ + } arm_rfft_instance_f32; + + arm_status arm_rfft_init_f32( + arm_rfft_instance_f32 * S, + arm_cfft_radix4_instance_f32 * S_CFFT, + uint32_t fftLenReal, + uint32_t ifftFlagR, + uint32_t bitReverseFlag); + + void arm_rfft_f32( + const arm_rfft_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst); + + /** + * @brief Instance structure for the floating-point RFFT/RIFFT function. + */ +typedef struct + { + arm_cfft_instance_f32 Sint; /**< Internal CFFT structure. */ + uint16_t fftLenRFFT; /**< length of the real sequence */ + float32_t * pTwiddleRFFT; /**< Twiddle factors real stage */ + } arm_rfft_fast_instance_f32 ; + +arm_status arm_rfft_fast_init_f32 ( + arm_rfft_fast_instance_f32 * S, + uint16_t fftLen); + +void arm_rfft_fast_f32( + arm_rfft_fast_instance_f32 * S, + float32_t * p, float32_t * pOut, + uint8_t ifftFlag); + + /** + * @brief Instance structure for the floating-point DCT4/IDCT4 function. + */ + typedef struct + { + uint16_t N; /**< length of the DCT4. */ + uint16_t Nby2; /**< half of the length of the DCT4. */ + float32_t normalize; /**< normalizing factor. */ + float32_t *pTwiddle; /**< points to the twiddle factor table. */ + float32_t *pCosFactor; /**< points to the cosFactor table. */ + arm_rfft_instance_f32 *pRfft; /**< points to the real FFT instance. */ + arm_cfft_radix4_instance_f32 *pCfft; /**< points to the complex FFT instance. */ + } arm_dct4_instance_f32; + + + /** + * @brief Initialization function for the floating-point DCT4/IDCT4. + * @param[in,out] S points to an instance of floating-point DCT4/IDCT4 structure. + * @param[in] S_RFFT points to an instance of floating-point RFFT/RIFFT structure. + * @param[in] S_CFFT points to an instance of floating-point CFFT/CIFFT structure. + * @param[in] N length of the DCT4. + * @param[in] Nby2 half of the length of the DCT4. + * @param[in] normalize normalizing factor. + * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported transform length. + */ + arm_status arm_dct4_init_f32( + arm_dct4_instance_f32 * S, + arm_rfft_instance_f32 * S_RFFT, + arm_cfft_radix4_instance_f32 * S_CFFT, + uint16_t N, + uint16_t Nby2, + float32_t normalize); + + + /** + * @brief Processing function for the floating-point DCT4/IDCT4. + * @param[in] S points to an instance of the floating-point DCT4/IDCT4 structure. + * @param[in] pState points to state buffer. + * @param[in,out] pInlineBuffer points to the in-place input and output buffer. + */ + void arm_dct4_f32( + const arm_dct4_instance_f32 * S, + float32_t * pState, + float32_t * pInlineBuffer); + + + /** + * @brief Instance structure for the Q31 DCT4/IDCT4 function. + */ + typedef struct + { + uint16_t N; /**< length of the DCT4. */ + uint16_t Nby2; /**< half of the length of the DCT4. */ + q31_t normalize; /**< normalizing factor. */ + q31_t *pTwiddle; /**< points to the twiddle factor table. */ + q31_t *pCosFactor; /**< points to the cosFactor table. */ + arm_rfft_instance_q31 *pRfft; /**< points to the real FFT instance. */ + arm_cfft_radix4_instance_q31 *pCfft; /**< points to the complex FFT instance. */ + } arm_dct4_instance_q31; + + + /** + * @brief Initialization function for the Q31 DCT4/IDCT4. + * @param[in,out] S points to an instance of Q31 DCT4/IDCT4 structure. + * @param[in] S_RFFT points to an instance of Q31 RFFT/RIFFT structure + * @param[in] S_CFFT points to an instance of Q31 CFFT/CIFFT structure + * @param[in] N length of the DCT4. + * @param[in] Nby2 half of the length of the DCT4. + * @param[in] normalize normalizing factor. + * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if N is not a supported transform length. + */ + arm_status arm_dct4_init_q31( + arm_dct4_instance_q31 * S, + arm_rfft_instance_q31 * S_RFFT, + arm_cfft_radix4_instance_q31 * S_CFFT, + uint16_t N, + uint16_t Nby2, + q31_t normalize); + + + /** + * @brief Processing function for the Q31 DCT4/IDCT4. + * @param[in] S points to an instance of the Q31 DCT4 structure. + * @param[in] pState points to state buffer. + * @param[in,out] pInlineBuffer points to the in-place input and output buffer. + */ + void arm_dct4_q31( + const arm_dct4_instance_q31 * S, + q31_t * pState, + q31_t * pInlineBuffer); + + + /** + * @brief Instance structure for the Q15 DCT4/IDCT4 function. + */ + typedef struct + { + uint16_t N; /**< length of the DCT4. */ + uint16_t Nby2; /**< half of the length of the DCT4. */ + q15_t normalize; /**< normalizing factor. */ + q15_t *pTwiddle; /**< points to the twiddle factor table. */ + q15_t *pCosFactor; /**< points to the cosFactor table. */ + arm_rfft_instance_q15 *pRfft; /**< points to the real FFT instance. */ + arm_cfft_radix4_instance_q15 *pCfft; /**< points to the complex FFT instance. */ + } arm_dct4_instance_q15; + + + /** + * @brief Initialization function for the Q15 DCT4/IDCT4. + * @param[in,out] S points to an instance of Q15 DCT4/IDCT4 structure. + * @param[in] S_RFFT points to an instance of Q15 RFFT/RIFFT structure. + * @param[in] S_CFFT points to an instance of Q15 CFFT/CIFFT structure. + * @param[in] N length of the DCT4. + * @param[in] Nby2 half of the length of the DCT4. + * @param[in] normalize normalizing factor. + * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if N is not a supported transform length. + */ + arm_status arm_dct4_init_q15( + arm_dct4_instance_q15 * S, + arm_rfft_instance_q15 * S_RFFT, + arm_cfft_radix4_instance_q15 * S_CFFT, + uint16_t N, + uint16_t Nby2, + q15_t normalize); + + + /** + * @brief Processing function for the Q15 DCT4/IDCT4. + * @param[in] S points to an instance of the Q15 DCT4 structure. + * @param[in] pState points to state buffer. + * @param[in,out] pInlineBuffer points to the in-place input and output buffer. + */ + void arm_dct4_q15( + const arm_dct4_instance_q15 * S, + q15_t * pState, + q15_t * pInlineBuffer); + + + /** + * @brief Floating-point vector addition. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_add_f32( + float32_t * pSrcA, + float32_t * pSrcB, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q7 vector addition. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_add_q7( + q7_t * pSrcA, + q7_t * pSrcB, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q15 vector addition. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_add_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q31 vector addition. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_add_q31( + q31_t * pSrcA, + q31_t * pSrcB, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Floating-point vector subtraction. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_sub_f32( + float32_t * pSrcA, + float32_t * pSrcB, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q7 vector subtraction. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_sub_q7( + q7_t * pSrcA, + q7_t * pSrcB, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q15 vector subtraction. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_sub_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q31 vector subtraction. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_sub_q31( + q31_t * pSrcA, + q31_t * pSrcB, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Multiplies a floating-point vector by a scalar. + * @param[in] pSrc points to the input vector + * @param[in] scale scale factor to be applied + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_scale_f32( + float32_t * pSrc, + float32_t scale, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Multiplies a Q7 vector by a scalar. + * @param[in] pSrc points to the input vector + * @param[in] scaleFract fractional portion of the scale value + * @param[in] shift number of bits to shift the result by + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_scale_q7( + q7_t * pSrc, + q7_t scaleFract, + int8_t shift, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Multiplies a Q15 vector by a scalar. + * @param[in] pSrc points to the input vector + * @param[in] scaleFract fractional portion of the scale value + * @param[in] shift number of bits to shift the result by + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_scale_q15( + q15_t * pSrc, + q15_t scaleFract, + int8_t shift, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Multiplies a Q31 vector by a scalar. + * @param[in] pSrc points to the input vector + * @param[in] scaleFract fractional portion of the scale value + * @param[in] shift number of bits to shift the result by + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_scale_q31( + q31_t * pSrc, + q31_t scaleFract, + int8_t shift, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q7 vector absolute value. + * @param[in] pSrc points to the input buffer + * @param[out] pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + */ + void arm_abs_q7( + q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Floating-point vector absolute value. + * @param[in] pSrc points to the input buffer + * @param[out] pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + */ + void arm_abs_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q15 vector absolute value. + * @param[in] pSrc points to the input buffer + * @param[out] pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + */ + void arm_abs_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q31 vector absolute value. + * @param[in] pSrc points to the input buffer + * @param[out] pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + */ + void arm_abs_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Dot product of floating-point vectors. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] result output result returned here + */ + void arm_dot_prod_f32( + float32_t * pSrcA, + float32_t * pSrcB, + uint32_t blockSize, + float32_t * result); + + + /** + * @brief Dot product of Q7 vectors. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] result output result returned here + */ + void arm_dot_prod_q7( + q7_t * pSrcA, + q7_t * pSrcB, + uint32_t blockSize, + q31_t * result); + + + /** + * @brief Dot product of Q15 vectors. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] result output result returned here + */ + void arm_dot_prod_q15( + q15_t * pSrcA, + q15_t * pSrcB, + uint32_t blockSize, + q63_t * result); + + + /** + * @brief Dot product of Q31 vectors. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] result output result returned here + */ + void arm_dot_prod_q31( + q31_t * pSrcA, + q31_t * pSrcB, + uint32_t blockSize, + q63_t * result); + + + /** + * @brief Shifts the elements of a Q7 vector a specified number of bits. + * @param[in] pSrc points to the input vector + * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_shift_q7( + q7_t * pSrc, + int8_t shiftBits, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Shifts the elements of a Q15 vector a specified number of bits. + * @param[in] pSrc points to the input vector + * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_shift_q15( + q15_t * pSrc, + int8_t shiftBits, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Shifts the elements of a Q31 vector a specified number of bits. + * @param[in] pSrc points to the input vector + * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_shift_q31( + q31_t * pSrc, + int8_t shiftBits, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Adds a constant offset to a floating-point vector. + * @param[in] pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_offset_f32( + float32_t * pSrc, + float32_t offset, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Adds a constant offset to a Q7 vector. + * @param[in] pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_offset_q7( + q7_t * pSrc, + q7_t offset, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Adds a constant offset to a Q15 vector. + * @param[in] pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_offset_q15( + q15_t * pSrc, + q15_t offset, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Adds a constant offset to a Q31 vector. + * @param[in] pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_offset_q31( + q31_t * pSrc, + q31_t offset, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Negates the elements of a floating-point vector. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_negate_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Negates the elements of a Q7 vector. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_negate_q7( + q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Negates the elements of a Q15 vector. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_negate_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Negates the elements of a Q31 vector. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_negate_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Copies the elements of a floating-point vector. + * @param[in] pSrc input pointer + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_copy_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Copies the elements of a Q7 vector. + * @param[in] pSrc input pointer + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_copy_q7( + q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Copies the elements of a Q15 vector. + * @param[in] pSrc input pointer + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_copy_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Copies the elements of a Q31 vector. + * @param[in] pSrc input pointer + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_copy_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Fills a constant value into a floating-point vector. + * @param[in] value input value to be filled + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_fill_f32( + float32_t value, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Fills a constant value into a Q7 vector. + * @param[in] value input value to be filled + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_fill_q7( + q7_t value, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Fills a constant value into a Q15 vector. + * @param[in] value input value to be filled + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_fill_q15( + q15_t value, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Fills a constant value into a Q31 vector. + * @param[in] value input value to be filled + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_fill_q31( + q31_t value, + q31_t * pDst, + uint32_t blockSize); + + +/** + * @brief Convolution of floating-point sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the location where the output result is written. Length srcALen+srcBLen-1. + */ + void arm_conv_f32( + float32_t * pSrcA, + uint32_t srcALen, + float32_t * pSrcB, + uint32_t srcBLen, + float32_t * pDst); + + + /** + * @brief Convolution of Q15 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + * @param[in] pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer of size min(srcALen, srcBLen). + */ + void arm_conv_opt_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + q15_t * pScratch1, + q15_t * pScratch2); + + +/** + * @brief Convolution of Q15 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the location where the output result is written. Length srcALen+srcBLen-1. + */ + void arm_conv_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst); + + + /** + * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + */ + void arm_conv_fast_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst); + + + /** + * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + * @param[in] pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer of size min(srcALen, srcBLen). + */ + void arm_conv_fast_opt_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + q15_t * pScratch1, + q15_t * pScratch2); + + + /** + * @brief Convolution of Q31 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + */ + void arm_conv_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst); + + + /** + * @brief Convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + */ + void arm_conv_fast_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst); + + + /** + * @brief Convolution of Q7 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + * @param[in] pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen). + */ + void arm_conv_opt_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst, + q15_t * pScratch1, + q15_t * pScratch2); + + + /** + * @brief Convolution of Q7 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + */ + void arm_conv_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst); + + + /** + * @brief Partial convolution of floating-point sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_f32( + float32_t * pSrcA, + uint32_t srcALen, + float32_t * pSrcB, + uint32_t srcBLen, + float32_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Partial convolution of Q15 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @param[in] pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer of size min(srcALen, srcBLen). + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_opt_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints, + q15_t * pScratch1, + q15_t * pScratch2); + + + /** + * @brief Partial convolution of Q15 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_fast_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @param[in] pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer of size min(srcALen, srcBLen). + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_fast_opt_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints, + q15_t * pScratch1, + q15_t * pScratch2); + + + /** + * @brief Partial convolution of Q31 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Partial convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_fast_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Partial convolution of Q7 sequences + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @param[in] pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen). + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_opt_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst, + uint32_t firstIndex, + uint32_t numPoints, + q15_t * pScratch1, + q15_t * pScratch2); + + +/** + * @brief Partial convolution of Q7 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Instance structure for the Q15 FIR decimator. + */ + typedef struct + { + uint8_t M; /**< decimation factor. */ + uint16_t numTaps; /**< number of coefficients in the filter. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + } arm_fir_decimate_instance_q15; + + /** + * @brief Instance structure for the Q31 FIR decimator. + */ + typedef struct + { + uint8_t M; /**< decimation factor. */ + uint16_t numTaps; /**< number of coefficients in the filter. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + } arm_fir_decimate_instance_q31; + + /** + * @brief Instance structure for the floating-point FIR decimator. + */ + typedef struct + { + uint8_t M; /**< decimation factor. */ + uint16_t numTaps; /**< number of coefficients in the filter. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + } arm_fir_decimate_instance_f32; + + + /** + * @brief Processing function for the floating-point FIR decimator. + * @param[in] S points to an instance of the floating-point FIR decimator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_decimate_f32( + const arm_fir_decimate_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the floating-point FIR decimator. + * @param[in,out] S points to an instance of the floating-point FIR decimator structure. + * @param[in] numTaps number of coefficients in the filter. + * @param[in] M decimation factor. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * blockSize is not a multiple of M. + */ + arm_status arm_fir_decimate_init_f32( + arm_fir_decimate_instance_f32 * S, + uint16_t numTaps, + uint8_t M, + float32_t * pCoeffs, + float32_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q15 FIR decimator. + * @param[in] S points to an instance of the Q15 FIR decimator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_decimate_q15( + const arm_fir_decimate_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q15 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4. + * @param[in] S points to an instance of the Q15 FIR decimator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_decimate_fast_q15( + const arm_fir_decimate_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q15 FIR decimator. + * @param[in,out] S points to an instance of the Q15 FIR decimator structure. + * @param[in] numTaps number of coefficients in the filter. + * @param[in] M decimation factor. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * blockSize is not a multiple of M. + */ + arm_status arm_fir_decimate_init_q15( + arm_fir_decimate_instance_q15 * S, + uint16_t numTaps, + uint8_t M, + q15_t * pCoeffs, + q15_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q31 FIR decimator. + * @param[in] S points to an instance of the Q31 FIR decimator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_decimate_q31( + const arm_fir_decimate_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Processing function for the Q31 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4. + * @param[in] S points to an instance of the Q31 FIR decimator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_decimate_fast_q31( + arm_fir_decimate_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 FIR decimator. + * @param[in,out] S points to an instance of the Q31 FIR decimator structure. + * @param[in] numTaps number of coefficients in the filter. + * @param[in] M decimation factor. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * blockSize is not a multiple of M. + */ + arm_status arm_fir_decimate_init_q31( + arm_fir_decimate_instance_q31 * S, + uint16_t numTaps, + uint8_t M, + q31_t * pCoeffs, + q31_t * pState, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q15 FIR interpolator. + */ + typedef struct + { + uint8_t L; /**< upsample factor. */ + uint16_t phaseLength; /**< length of each polyphase filter component. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */ + q15_t *pState; /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */ + } arm_fir_interpolate_instance_q15; + + /** + * @brief Instance structure for the Q31 FIR interpolator. + */ + typedef struct + { + uint8_t L; /**< upsample factor. */ + uint16_t phaseLength; /**< length of each polyphase filter component. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */ + q31_t *pState; /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */ + } arm_fir_interpolate_instance_q31; + + /** + * @brief Instance structure for the floating-point FIR interpolator. + */ + typedef struct + { + uint8_t L; /**< upsample factor. */ + uint16_t phaseLength; /**< length of each polyphase filter component. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */ + float32_t *pState; /**< points to the state variable array. The array is of length phaseLength+numTaps-1. */ + } arm_fir_interpolate_instance_f32; + + + /** + * @brief Processing function for the Q15 FIR interpolator. + * @param[in] S points to an instance of the Q15 FIR interpolator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_interpolate_q15( + const arm_fir_interpolate_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q15 FIR interpolator. + * @param[in,out] S points to an instance of the Q15 FIR interpolator structure. + * @param[in] L upsample factor. + * @param[in] numTaps number of filter coefficients in the filter. + * @param[in] pCoeffs points to the filter coefficient buffer. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * the filter length numTaps is not a multiple of the interpolation factor L. + */ + arm_status arm_fir_interpolate_init_q15( + arm_fir_interpolate_instance_q15 * S, + uint8_t L, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q31 FIR interpolator. + * @param[in] S points to an instance of the Q15 FIR interpolator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_interpolate_q31( + const arm_fir_interpolate_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 FIR interpolator. + * @param[in,out] S points to an instance of the Q31 FIR interpolator structure. + * @param[in] L upsample factor. + * @param[in] numTaps number of filter coefficients in the filter. + * @param[in] pCoeffs points to the filter coefficient buffer. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * the filter length numTaps is not a multiple of the interpolation factor L. + */ + arm_status arm_fir_interpolate_init_q31( + arm_fir_interpolate_instance_q31 * S, + uint8_t L, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the floating-point FIR interpolator. + * @param[in] S points to an instance of the floating-point FIR interpolator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_interpolate_f32( + const arm_fir_interpolate_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the floating-point FIR interpolator. + * @param[in,out] S points to an instance of the floating-point FIR interpolator structure. + * @param[in] L upsample factor. + * @param[in] numTaps number of filter coefficients in the filter. + * @param[in] pCoeffs points to the filter coefficient buffer. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * the filter length numTaps is not a multiple of the interpolation factor L. + */ + arm_status arm_fir_interpolate_init_f32( + arm_fir_interpolate_instance_f32 * S, + uint8_t L, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + uint32_t blockSize); + + + /** + * @brief Instance structure for the high precision Q31 Biquad cascade filter. + */ + typedef struct + { + uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + q63_t *pState; /**< points to the array of state coefficients. The array is of length 4*numStages. */ + q31_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */ + uint8_t postShift; /**< additional shift, in bits, applied to each output sample. */ + } arm_biquad_cas_df1_32x64_ins_q31; + + + /** + * @param[in] S points to an instance of the high precision Q31 Biquad cascade filter structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cas_df1_32x64_q31( + const arm_biquad_cas_df1_32x64_ins_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @param[in,out] S points to an instance of the high precision Q31 Biquad cascade filter structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] postShift shift to be applied to the output. Varies according to the coefficients format + */ + void arm_biquad_cas_df1_32x64_init_q31( + arm_biquad_cas_df1_32x64_ins_q31 * S, + uint8_t numStages, + q31_t * pCoeffs, + q63_t * pState, + uint8_t postShift); + + + /** + * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter. + */ + typedef struct + { + uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + float32_t *pState; /**< points to the array of state coefficients. The array is of length 2*numStages. */ + float32_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */ + } arm_biquad_cascade_df2T_instance_f32; + + /** + * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter. + */ + typedef struct + { + uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + float32_t *pState; /**< points to the array of state coefficients. The array is of length 4*numStages. */ + float32_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */ + } arm_biquad_cascade_stereo_df2T_instance_f32; + + /** + * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter. + */ + typedef struct + { + uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + float64_t *pState; /**< points to the array of state coefficients. The array is of length 2*numStages. */ + float64_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */ + } arm_biquad_cascade_df2T_instance_f64; + + + /** + * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in] S points to an instance of the filter data structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df2T_f32( + const arm_biquad_cascade_df2T_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. 2 channels + * @param[in] S points to an instance of the filter data structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_stereo_df2T_f32( + const arm_biquad_cascade_stereo_df2T_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in] S points to an instance of the filter data structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df2T_f64( + const arm_biquad_cascade_df2T_instance_f64 * S, + float64_t * pSrc, + float64_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in,out] S points to an instance of the filter data structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + */ + void arm_biquad_cascade_df2T_init_f32( + arm_biquad_cascade_df2T_instance_f32 * S, + uint8_t numStages, + float32_t * pCoeffs, + float32_t * pState); + + + /** + * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in,out] S points to an instance of the filter data structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + */ + void arm_biquad_cascade_stereo_df2T_init_f32( + arm_biquad_cascade_stereo_df2T_instance_f32 * S, + uint8_t numStages, + float32_t * pCoeffs, + float32_t * pState); + + + /** + * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in,out] S points to an instance of the filter data structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + */ + void arm_biquad_cascade_df2T_init_f64( + arm_biquad_cascade_df2T_instance_f64 * S, + uint8_t numStages, + float64_t * pCoeffs, + float64_t * pState); + + + /** + * @brief Instance structure for the Q15 FIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of filter stages. */ + q15_t *pState; /**< points to the state variable array. The array is of length numStages. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */ + } arm_fir_lattice_instance_q15; + + /** + * @brief Instance structure for the Q31 FIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of filter stages. */ + q31_t *pState; /**< points to the state variable array. The array is of length numStages. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */ + } arm_fir_lattice_instance_q31; + + /** + * @brief Instance structure for the floating-point FIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of filter stages. */ + float32_t *pState; /**< points to the state variable array. The array is of length numStages. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */ + } arm_fir_lattice_instance_f32; + + + /** + * @brief Initialization function for the Q15 FIR lattice filter. + * @param[in] S points to an instance of the Q15 FIR lattice structure. + * @param[in] numStages number of filter stages. + * @param[in] pCoeffs points to the coefficient buffer. The array is of length numStages. + * @param[in] pState points to the state buffer. The array is of length numStages. + */ + void arm_fir_lattice_init_q15( + arm_fir_lattice_instance_q15 * S, + uint16_t numStages, + q15_t * pCoeffs, + q15_t * pState); + + + /** + * @brief Processing function for the Q15 FIR lattice filter. + * @param[in] S points to an instance of the Q15 FIR lattice structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_lattice_q15( + const arm_fir_lattice_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 FIR lattice filter. + * @param[in] S points to an instance of the Q31 FIR lattice structure. + * @param[in] numStages number of filter stages. + * @param[in] pCoeffs points to the coefficient buffer. The array is of length numStages. + * @param[in] pState points to the state buffer. The array is of length numStages. + */ + void arm_fir_lattice_init_q31( + arm_fir_lattice_instance_q31 * S, + uint16_t numStages, + q31_t * pCoeffs, + q31_t * pState); + + + /** + * @brief Processing function for the Q31 FIR lattice filter. + * @param[in] S points to an instance of the Q31 FIR lattice structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of samples to process. + */ + void arm_fir_lattice_q31( + const arm_fir_lattice_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + +/** + * @brief Initialization function for the floating-point FIR lattice filter. + * @param[in] S points to an instance of the floating-point FIR lattice structure. + * @param[in] numStages number of filter stages. + * @param[in] pCoeffs points to the coefficient buffer. The array is of length numStages. + * @param[in] pState points to the state buffer. The array is of length numStages. + */ + void arm_fir_lattice_init_f32( + arm_fir_lattice_instance_f32 * S, + uint16_t numStages, + float32_t * pCoeffs, + float32_t * pState); + + + /** + * @brief Processing function for the floating-point FIR lattice filter. + * @param[in] S points to an instance of the floating-point FIR lattice structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of samples to process. + */ + void arm_fir_lattice_f32( + const arm_fir_lattice_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q15 IIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of stages in the filter. */ + q15_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */ + q15_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */ + q15_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */ + } arm_iir_lattice_instance_q15; + + /** + * @brief Instance structure for the Q31 IIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of stages in the filter. */ + q31_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */ + q31_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */ + q31_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */ + } arm_iir_lattice_instance_q31; + + /** + * @brief Instance structure for the floating-point IIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of stages in the filter. */ + float32_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */ + float32_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */ + float32_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */ + } arm_iir_lattice_instance_f32; + + + /** + * @brief Processing function for the floating-point IIR lattice filter. + * @param[in] S points to an instance of the floating-point IIR lattice structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_iir_lattice_f32( + const arm_iir_lattice_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the floating-point IIR lattice filter. + * @param[in] S points to an instance of the floating-point IIR lattice structure. + * @param[in] numStages number of stages in the filter. + * @param[in] pkCoeffs points to the reflection coefficient buffer. The array is of length numStages. + * @param[in] pvCoeffs points to the ladder coefficient buffer. The array is of length numStages+1. + * @param[in] pState points to the state buffer. The array is of length numStages+blockSize-1. + * @param[in] blockSize number of samples to process. + */ + void arm_iir_lattice_init_f32( + arm_iir_lattice_instance_f32 * S, + uint16_t numStages, + float32_t * pkCoeffs, + float32_t * pvCoeffs, + float32_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q31 IIR lattice filter. + * @param[in] S points to an instance of the Q31 IIR lattice structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_iir_lattice_q31( + const arm_iir_lattice_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 IIR lattice filter. + * @param[in] S points to an instance of the Q31 IIR lattice structure. + * @param[in] numStages number of stages in the filter. + * @param[in] pkCoeffs points to the reflection coefficient buffer. The array is of length numStages. + * @param[in] pvCoeffs points to the ladder coefficient buffer. The array is of length numStages+1. + * @param[in] pState points to the state buffer. The array is of length numStages+blockSize. + * @param[in] blockSize number of samples to process. + */ + void arm_iir_lattice_init_q31( + arm_iir_lattice_instance_q31 * S, + uint16_t numStages, + q31_t * pkCoeffs, + q31_t * pvCoeffs, + q31_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q15 IIR lattice filter. + * @param[in] S points to an instance of the Q15 IIR lattice structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_iir_lattice_q15( + const arm_iir_lattice_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + +/** + * @brief Initialization function for the Q15 IIR lattice filter. + * @param[in] S points to an instance of the fixed-point Q15 IIR lattice structure. + * @param[in] numStages number of stages in the filter. + * @param[in] pkCoeffs points to reflection coefficient buffer. The array is of length numStages. + * @param[in] pvCoeffs points to ladder coefficient buffer. The array is of length numStages+1. + * @param[in] pState points to state buffer. The array is of length numStages+blockSize. + * @param[in] blockSize number of samples to process per call. + */ + void arm_iir_lattice_init_q15( + arm_iir_lattice_instance_q15 * S, + uint16_t numStages, + q15_t * pkCoeffs, + q15_t * pvCoeffs, + q15_t * pState, + uint32_t blockSize); + + + /** + * @brief Instance structure for the floating-point LMS filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + float32_t mu; /**< step size that controls filter coefficient updates. */ + } arm_lms_instance_f32; + + + /** + * @brief Processing function for floating-point LMS filter. + * @param[in] S points to an instance of the floating-point LMS filter structure. + * @param[in] pSrc points to the block of input data. + * @param[in] pRef points to the block of reference data. + * @param[out] pOut points to the block of output data. + * @param[out] pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_f32( + const arm_lms_instance_f32 * S, + float32_t * pSrc, + float32_t * pRef, + float32_t * pOut, + float32_t * pErr, + uint32_t blockSize); + + + /** + * @brief Initialization function for floating-point LMS filter. + * @param[in] S points to an instance of the floating-point LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] pCoeffs points to the coefficient buffer. + * @param[in] pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_init_f32( + arm_lms_instance_f32 * S, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + float32_t mu, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q15 LMS filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + q15_t mu; /**< step size that controls filter coefficient updates. */ + uint32_t postShift; /**< bit shift applied to coefficients. */ + } arm_lms_instance_q15; + + + /** + * @brief Initialization function for the Q15 LMS filter. + * @param[in] S points to an instance of the Q15 LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] pCoeffs points to the coefficient buffer. + * @param[in] pState points to the state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + */ + void arm_lms_init_q15( + arm_lms_instance_q15 * S, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + q15_t mu, + uint32_t blockSize, + uint32_t postShift); + + + /** + * @brief Processing function for Q15 LMS filter. + * @param[in] S points to an instance of the Q15 LMS filter structure. + * @param[in] pSrc points to the block of input data. + * @param[in] pRef points to the block of reference data. + * @param[out] pOut points to the block of output data. + * @param[out] pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_q15( + const arm_lms_instance_q15 * S, + q15_t * pSrc, + q15_t * pRef, + q15_t * pOut, + q15_t * pErr, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q31 LMS filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + q31_t mu; /**< step size that controls filter coefficient updates. */ + uint32_t postShift; /**< bit shift applied to coefficients. */ + } arm_lms_instance_q31; + + + /** + * @brief Processing function for Q31 LMS filter. + * @param[in] S points to an instance of the Q15 LMS filter structure. + * @param[in] pSrc points to the block of input data. + * @param[in] pRef points to the block of reference data. + * @param[out] pOut points to the block of output data. + * @param[out] pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_q31( + const arm_lms_instance_q31 * S, + q31_t * pSrc, + q31_t * pRef, + q31_t * pOut, + q31_t * pErr, + uint32_t blockSize); + + + /** + * @brief Initialization function for Q31 LMS filter. + * @param[in] S points to an instance of the Q31 LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] pCoeffs points to coefficient buffer. + * @param[in] pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + */ + void arm_lms_init_q31( + arm_lms_instance_q31 * S, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + q31_t mu, + uint32_t blockSize, + uint32_t postShift); + + + /** + * @brief Instance structure for the floating-point normalized LMS filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + float32_t mu; /**< step size that control filter coefficient updates. */ + float32_t energy; /**< saves previous frame energy. */ + float32_t x0; /**< saves previous input sample. */ + } arm_lms_norm_instance_f32; + + + /** + * @brief Processing function for floating-point normalized LMS filter. + * @param[in] S points to an instance of the floating-point normalized LMS filter structure. + * @param[in] pSrc points to the block of input data. + * @param[in] pRef points to the block of reference data. + * @param[out] pOut points to the block of output data. + * @param[out] pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_norm_f32( + arm_lms_norm_instance_f32 * S, + float32_t * pSrc, + float32_t * pRef, + float32_t * pOut, + float32_t * pErr, + uint32_t blockSize); + + + /** + * @brief Initialization function for floating-point normalized LMS filter. + * @param[in] S points to an instance of the floating-point LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] pCoeffs points to coefficient buffer. + * @param[in] pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_norm_init_f32( + arm_lms_norm_instance_f32 * S, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + float32_t mu, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q31 normalized LMS filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + q31_t mu; /**< step size that controls filter coefficient updates. */ + uint8_t postShift; /**< bit shift applied to coefficients. */ + q31_t *recipTable; /**< points to the reciprocal initial value table. */ + q31_t energy; /**< saves previous frame energy. */ + q31_t x0; /**< saves previous input sample. */ + } arm_lms_norm_instance_q31; + + + /** + * @brief Processing function for Q31 normalized LMS filter. + * @param[in] S points to an instance of the Q31 normalized LMS filter structure. + * @param[in] pSrc points to the block of input data. + * @param[in] pRef points to the block of reference data. + * @param[out] pOut points to the block of output data. + * @param[out] pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_norm_q31( + arm_lms_norm_instance_q31 * S, + q31_t * pSrc, + q31_t * pRef, + q31_t * pOut, + q31_t * pErr, + uint32_t blockSize); + + + /** + * @brief Initialization function for Q31 normalized LMS filter. + * @param[in] S points to an instance of the Q31 normalized LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] pCoeffs points to coefficient buffer. + * @param[in] pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + */ + void arm_lms_norm_init_q31( + arm_lms_norm_instance_q31 * S, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + q31_t mu, + uint32_t blockSize, + uint8_t postShift); + + + /** + * @brief Instance structure for the Q15 normalized LMS filter. + */ + typedef struct + { + uint16_t numTaps; /**< Number of coefficients in the filter. */ + q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + q15_t mu; /**< step size that controls filter coefficient updates. */ + uint8_t postShift; /**< bit shift applied to coefficients. */ + q15_t *recipTable; /**< Points to the reciprocal initial value table. */ + q15_t energy; /**< saves previous frame energy. */ + q15_t x0; /**< saves previous input sample. */ + } arm_lms_norm_instance_q15; + + + /** + * @brief Processing function for Q15 normalized LMS filter. + * @param[in] S points to an instance of the Q15 normalized LMS filter structure. + * @param[in] pSrc points to the block of input data. + * @param[in] pRef points to the block of reference data. + * @param[out] pOut points to the block of output data. + * @param[out] pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_norm_q15( + arm_lms_norm_instance_q15 * S, + q15_t * pSrc, + q15_t * pRef, + q15_t * pOut, + q15_t * pErr, + uint32_t blockSize); + + + /** + * @brief Initialization function for Q15 normalized LMS filter. + * @param[in] S points to an instance of the Q15 normalized LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] pCoeffs points to coefficient buffer. + * @param[in] pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + */ + void arm_lms_norm_init_q15( + arm_lms_norm_instance_q15 * S, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + q15_t mu, + uint32_t blockSize, + uint8_t postShift); + + + /** + * @brief Correlation of floating-point sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + */ + void arm_correlate_f32( + float32_t * pSrcA, + uint32_t srcALen, + float32_t * pSrcB, + uint32_t srcBLen, + float32_t * pDst); + + + /** + * @brief Correlation of Q15 sequences + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + * @param[in] pScratch points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + */ + void arm_correlate_opt_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + q15_t * pScratch); + + + /** + * @brief Correlation of Q15 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + */ + + void arm_correlate_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst); + + + /** + * @brief Correlation of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + */ + + void arm_correlate_fast_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst); + + + /** + * @brief Correlation of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + * @param[in] pScratch points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + */ + void arm_correlate_fast_opt_q15( + q15_t * pSrcA, + uint32_t srcALen, + q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + q15_t * pScratch); + + + /** + * @brief Correlation of Q31 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + */ + void arm_correlate_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst); + + + /** + * @brief Correlation of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + */ + void arm_correlate_fast_q31( + q31_t * pSrcA, + uint32_t srcALen, + q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst); + + + /** + * @brief Correlation of Q7 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + * @param[in] pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen). + */ + void arm_correlate_opt_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst, + q15_t * pScratch1, + q15_t * pScratch2); + + + /** + * @brief Correlation of Q7 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + */ + void arm_correlate_q7( + q7_t * pSrcA, + uint32_t srcALen, + q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst); + + + /** + * @brief Instance structure for the floating-point sparse FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ + float32_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ + int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ + } arm_fir_sparse_instance_f32; + + /** + * @brief Instance structure for the Q31 sparse FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ + q31_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ + int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ + } arm_fir_sparse_instance_q31; + + /** + * @brief Instance structure for the Q15 sparse FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ + q15_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ + int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ + } arm_fir_sparse_instance_q15; + + /** + * @brief Instance structure for the Q7 sparse FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ + q7_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ + q7_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ + int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ + } arm_fir_sparse_instance_q7; + + + /** + * @brief Processing function for the floating-point sparse FIR filter. + * @param[in] S points to an instance of the floating-point sparse FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] pScratchIn points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_sparse_f32( + arm_fir_sparse_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + float32_t * pScratchIn, + uint32_t blockSize); + + + /** + * @brief Initialization function for the floating-point sparse FIR filter. + * @param[in,out] S points to an instance of the floating-point sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] pCoeffs points to the array of filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + */ + void arm_fir_sparse_init_f32( + arm_fir_sparse_instance_f32 * S, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q31 sparse FIR filter. + * @param[in] S points to an instance of the Q31 sparse FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] pScratchIn points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_sparse_q31( + arm_fir_sparse_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst, + q31_t * pScratchIn, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 sparse FIR filter. + * @param[in,out] S points to an instance of the Q31 sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] pCoeffs points to the array of filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + */ + void arm_fir_sparse_init_q31( + arm_fir_sparse_instance_q31 * S, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q15 sparse FIR filter. + * @param[in] S points to an instance of the Q15 sparse FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] pScratchIn points to a temporary buffer of size blockSize. + * @param[in] pScratchOut points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_sparse_q15( + arm_fir_sparse_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst, + q15_t * pScratchIn, + q31_t * pScratchOut, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q15 sparse FIR filter. + * @param[in,out] S points to an instance of the Q15 sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] pCoeffs points to the array of filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + */ + void arm_fir_sparse_init_q15( + arm_fir_sparse_instance_q15 * S, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q7 sparse FIR filter. + * @param[in] S points to an instance of the Q7 sparse FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] pScratchIn points to a temporary buffer of size blockSize. + * @param[in] pScratchOut points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_sparse_q7( + arm_fir_sparse_instance_q7 * S, + q7_t * pSrc, + q7_t * pDst, + q7_t * pScratchIn, + q31_t * pScratchOut, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q7 sparse FIR filter. + * @param[in,out] S points to an instance of the Q7 sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] pCoeffs points to the array of filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + */ + void arm_fir_sparse_init_q7( + arm_fir_sparse_instance_q7 * S, + uint16_t numTaps, + q7_t * pCoeffs, + q7_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize); + + + /** + * @brief Floating-point sin_cos function. + * @param[in] theta input value in degrees + * @param[out] pSinVal points to the processed sine output. + * @param[out] pCosVal points to the processed cos output. + */ + void arm_sin_cos_f32( + float32_t theta, + float32_t * pSinVal, + float32_t * pCosVal); + + + /** + * @brief Q31 sin_cos function. + * @param[in] theta scaled input value in degrees + * @param[out] pSinVal points to the processed sine output. + * @param[out] pCosVal points to the processed cosine output. + */ + void arm_sin_cos_q31( + q31_t theta, + q31_t * pSinVal, + q31_t * pCosVal); + + + /** + * @brief Floating-point complex conjugate. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + */ + void arm_cmplx_conj_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t numSamples); + + /** + * @brief Q31 complex conjugate. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + */ + void arm_cmplx_conj_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q15 complex conjugate. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + */ + void arm_cmplx_conj_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t numSamples); + + + /** + * @brief Floating-point complex magnitude squared + * @param[in] pSrc points to the complex input vector + * @param[out] pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + */ + void arm_cmplx_mag_squared_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q31 complex magnitude squared + * @param[in] pSrc points to the complex input vector + * @param[out] pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + */ + void arm_cmplx_mag_squared_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q15 complex magnitude squared + * @param[in] pSrc points to the complex input vector + * @param[out] pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + */ + void arm_cmplx_mag_squared_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t numSamples); + + + /** + * @ingroup groupController + */ + + /** + * @defgroup PID PID Motor Control + * + * A Proportional Integral Derivative (PID) controller is a generic feedback control + * loop mechanism widely used in industrial control systems. + * A PID controller is the most commonly used type of feedback controller. + * + * This set of functions implements (PID) controllers + * for Q15, Q31, and floating-point data types. The functions operate on a single sample + * of data and each call to the function returns a single processed value. + * S points to an instance of the PID control data structure. in + * is the input sample value. The functions return the output value. + * + * \par Algorithm: + *
+   *    y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2]
+   *    A0 = Kp + Ki + Kd
+   *    A1 = (-Kp ) - (2 * Kd )
+   *    A2 = Kd  
+ * + * \par + * where \c Kp is proportional constant, \c Ki is Integral constant and \c Kd is Derivative constant + * + * \par + * \image html PID.gif "Proportional Integral Derivative Controller" + * + * \par + * The PID controller calculates an "error" value as the difference between + * the measured output and the reference input. + * The controller attempts to minimize the error by adjusting the process control inputs. + * The proportional value determines the reaction to the current error, + * the integral value determines the reaction based on the sum of recent errors, + * and the derivative value determines the reaction based on the rate at which the error has been changing. + * + * \par Instance Structure + * The Gains A0, A1, A2 and state variables for a PID controller are stored together in an instance data structure. + * A separate instance structure must be defined for each PID Controller. + * There are separate instance structure declarations for each of the 3 supported data types. + * + * \par Reset Functions + * There is also an associated reset function for each data type which clears the state array. + * + * \par Initialization Functions + * There is also an associated initialization function for each data type. + * The initialization function performs the following operations: + * - Initializes the Gains A0, A1, A2 from Kp,Ki, Kd gains. + * - Zeros out the values in the state buffer. + * + * \par + * Instance structure cannot be placed into a const data section and it is recommended to use the initialization function. + * + * \par Fixed-Point Behavior + * Care must be taken when using the fixed-point versions of the PID Controller functions. + * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup PID + * @{ + */ + + /** + * @brief Process function for the floating-point PID Control. + * @param[in,out] S is an instance of the floating-point PID Control structure + * @param[in] in input sample to process + * @return out processed output sample. + */ + static __INLINE float32_t arm_pid_f32( + arm_pid_instance_f32 * S, + float32_t in) + { + float32_t out; + + /* y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2] */ + out = (S->A0 * in) + + (S->A1 * S->state[0]) + (S->A2 * S->state[1]) + (S->state[2]); + + /* Update state */ + S->state[1] = S->state[0]; + S->state[0] = in; + S->state[2] = out; + + /* return to application */ + return (out); + + } + + /** + * @brief Process function for the Q31 PID Control. + * @param[in,out] S points to an instance of the Q31 PID Control structure + * @param[in] in input sample to process + * @return out processed output sample. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 64-bit accumulator. + * The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. + * Thus, if the accumulator result overflows it wraps around rather than clip. + * In order to avoid overflows completely the input signal must be scaled down by 2 bits as there are four additions. + * After all multiply-accumulates are performed, the 2.62 accumulator is truncated to 1.32 format and then saturated to 1.31 format. + */ + static __INLINE q31_t arm_pid_q31( + arm_pid_instance_q31 * S, + q31_t in) + { + q63_t acc; + q31_t out; + + /* acc = A0 * x[n] */ + acc = (q63_t) S->A0 * in; + + /* acc += A1 * x[n-1] */ + acc += (q63_t) S->A1 * S->state[0]; + + /* acc += A2 * x[n-2] */ + acc += (q63_t) S->A2 * S->state[1]; + + /* convert output to 1.31 format to add y[n-1] */ + out = (q31_t) (acc >> 31u); + + /* out += y[n-1] */ + out += S->state[2]; + + /* Update state */ + S->state[1] = S->state[0]; + S->state[0] = in; + S->state[2] = out; + + /* return to application */ + return (out); + } + + + /** + * @brief Process function for the Q15 PID Control. + * @param[in,out] S points to an instance of the Q15 PID Control structure + * @param[in] in input sample to process + * @return out processed output sample. + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using a 64-bit internal accumulator. + * Both Gains and state variables are represented in 1.15 format and multiplications yield a 2.30 result. + * The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. + * There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. + * After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits. + * Lastly, the accumulator is saturated to yield a result in 1.15 format. + */ + static __INLINE q15_t arm_pid_q15( + arm_pid_instance_q15 * S, + q15_t in) + { + q63_t acc; + q15_t out; + +#ifndef ARM_MATH_CM0_FAMILY + __SIMD32_TYPE *vstate; + + /* Implementation of PID controller */ + + /* acc = A0 * x[n] */ + acc = (q31_t) __SMUAD((uint32_t)S->A0, (uint32_t)in); + + /* acc += A1 * x[n-1] + A2 * x[n-2] */ + vstate = __SIMD32_CONST(S->state); + acc = (q63_t)__SMLALD((uint32_t)S->A1, (uint32_t)*vstate, (uint64_t)acc); +#else + /* acc = A0 * x[n] */ + acc = ((q31_t) S->A0) * in; + + /* acc += A1 * x[n-1] + A2 * x[n-2] */ + acc += (q31_t) S->A1 * S->state[0]; + acc += (q31_t) S->A2 * S->state[1]; +#endif + + /* acc += y[n-1] */ + acc += (q31_t) S->state[2] << 15; + + /* saturate the output */ + out = (q15_t) (__SSAT((acc >> 15), 16)); + + /* Update state */ + S->state[1] = S->state[0]; + S->state[0] = in; + S->state[2] = out; + + /* return to application */ + return (out); + } + + /** + * @} end of PID group + */ + + + /** + * @brief Floating-point matrix inverse. + * @param[in] src points to the instance of the input floating-point matrix structure. + * @param[out] dst points to the instance of the output floating-point matrix structure. + * @return The function returns ARM_MATH_SIZE_MISMATCH, if the dimensions do not match. + * If the input matrix is singular (does not have an inverse), then the algorithm terminates and returns error status ARM_MATH_SINGULAR. + */ + arm_status arm_mat_inverse_f32( + const arm_matrix_instance_f32 * src, + arm_matrix_instance_f32 * dst); + + + /** + * @brief Floating-point matrix inverse. + * @param[in] src points to the instance of the input floating-point matrix structure. + * @param[out] dst points to the instance of the output floating-point matrix structure. + * @return The function returns ARM_MATH_SIZE_MISMATCH, if the dimensions do not match. + * If the input matrix is singular (does not have an inverse), then the algorithm terminates and returns error status ARM_MATH_SINGULAR. + */ + arm_status arm_mat_inverse_f64( + const arm_matrix_instance_f64 * src, + arm_matrix_instance_f64 * dst); + + + + /** + * @ingroup groupController + */ + + /** + * @defgroup clarke Vector Clarke Transform + * Forward Clarke transform converts the instantaneous stator phases into a two-coordinate time invariant vector. + * Generally the Clarke transform uses three-phase currents Ia, Ib and Ic to calculate currents + * in the two-phase orthogonal stator axis Ialpha and Ibeta. + * When Ialpha is superposed with Ia as shown in the figure below + * \image html clarke.gif Stator current space vector and its components in (a,b). + * and Ia + Ib + Ic = 0, in this condition Ialpha and Ibeta + * can be calculated using only Ia and Ib. + * + * The function operates on a single sample of data and each call to the function returns the processed output. + * The library provides separate functions for Q31 and floating-point data types. + * \par Algorithm + * \image html clarkeFormula.gif + * where Ia and Ib are the instantaneous stator phases and + * pIalpha and pIbeta are the two coordinates of time invariant vector. + * \par Fixed-Point Behavior + * Care must be taken when using the Q31 version of the Clarke transform. + * In particular, the overflow and saturation behavior of the accumulator used must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup clarke + * @{ + */ + + /** + * + * @brief Floating-point Clarke transform + * @param[in] Ia input three-phase coordinate a + * @param[in] Ib input three-phase coordinate b + * @param[out] pIalpha points to output two-phase orthogonal vector axis alpha + * @param[out] pIbeta points to output two-phase orthogonal vector axis beta + */ + static __INLINE void arm_clarke_f32( + float32_t Ia, + float32_t Ib, + float32_t * pIalpha, + float32_t * pIbeta) + { + /* Calculate pIalpha using the equation, pIalpha = Ia */ + *pIalpha = Ia; + + /* Calculate pIbeta using the equation, pIbeta = (1/sqrt(3)) * Ia + (2/sqrt(3)) * Ib */ + *pIbeta = ((float32_t) 0.57735026919 * Ia + (float32_t) 1.15470053838 * Ib); + } + + + /** + * @brief Clarke transform for Q31 version + * @param[in] Ia input three-phase coordinate a + * @param[in] Ib input three-phase coordinate b + * @param[out] pIalpha points to output two-phase orthogonal vector axis alpha + * @param[out] pIbeta points to output two-phase orthogonal vector axis beta + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 32-bit accumulator. + * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. + * There is saturation on the addition, hence there is no risk of overflow. + */ + static __INLINE void arm_clarke_q31( + q31_t Ia, + q31_t Ib, + q31_t * pIalpha, + q31_t * pIbeta) + { + q31_t product1, product2; /* Temporary variables used to store intermediate results */ + + /* Calculating pIalpha from Ia by equation pIalpha = Ia */ + *pIalpha = Ia; + + /* Intermediate product is calculated by (1/(sqrt(3)) * Ia) */ + product1 = (q31_t) (((q63_t) Ia * 0x24F34E8B) >> 30); + + /* Intermediate product is calculated by (2/sqrt(3) * Ib) */ + product2 = (q31_t) (((q63_t) Ib * 0x49E69D16) >> 30); + + /* pIbeta is calculated by adding the intermediate products */ + *pIbeta = __QADD(product1, product2); + } + + /** + * @} end of clarke group + */ + + /** + * @brief Converts the elements of the Q7 vector to Q31 vector. + * @param[in] pSrc input pointer + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_q7_to_q31( + q7_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + + /** + * @ingroup groupController + */ + + /** + * @defgroup inv_clarke Vector Inverse Clarke Transform + * Inverse Clarke transform converts the two-coordinate time invariant vector into instantaneous stator phases. + * + * The function operates on a single sample of data and each call to the function returns the processed output. + * The library provides separate functions for Q31 and floating-point data types. + * \par Algorithm + * \image html clarkeInvFormula.gif + * where pIa and pIb are the instantaneous stator phases and + * Ialpha and Ibeta are the two coordinates of time invariant vector. + * \par Fixed-Point Behavior + * Care must be taken when using the Q31 version of the Clarke transform. + * In particular, the overflow and saturation behavior of the accumulator used must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup inv_clarke + * @{ + */ + + /** + * @brief Floating-point Inverse Clarke transform + * @param[in] Ialpha input two-phase orthogonal vector axis alpha + * @param[in] Ibeta input two-phase orthogonal vector axis beta + * @param[out] pIa points to output three-phase coordinate a + * @param[out] pIb points to output three-phase coordinate b + */ + static __INLINE void arm_inv_clarke_f32( + float32_t Ialpha, + float32_t Ibeta, + float32_t * pIa, + float32_t * pIb) + { + /* Calculating pIa from Ialpha by equation pIa = Ialpha */ + *pIa = Ialpha; + + /* Calculating pIb from Ialpha and Ibeta by equation pIb = -(1/2) * Ialpha + (sqrt(3)/2) * Ibeta */ + *pIb = -0.5f * Ialpha + 0.8660254039f * Ibeta; + } + + + /** + * @brief Inverse Clarke transform for Q31 version + * @param[in] Ialpha input two-phase orthogonal vector axis alpha + * @param[in] Ibeta input two-phase orthogonal vector axis beta + * @param[out] pIa points to output three-phase coordinate a + * @param[out] pIb points to output three-phase coordinate b + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 32-bit accumulator. + * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. + * There is saturation on the subtraction, hence there is no risk of overflow. + */ + static __INLINE void arm_inv_clarke_q31( + q31_t Ialpha, + q31_t Ibeta, + q31_t * pIa, + q31_t * pIb) + { + q31_t product1, product2; /* Temporary variables used to store intermediate results */ + + /* Calculating pIa from Ialpha by equation pIa = Ialpha */ + *pIa = Ialpha; + + /* Intermediate product is calculated by (1/(2*sqrt(3)) * Ia) */ + product1 = (q31_t) (((q63_t) (Ialpha) * (0x40000000)) >> 31); + + /* Intermediate product is calculated by (1/sqrt(3) * pIb) */ + product2 = (q31_t) (((q63_t) (Ibeta) * (0x6ED9EBA1)) >> 31); + + /* pIb is calculated by subtracting the products */ + *pIb = __QSUB(product2, product1); + } + + /** + * @} end of inv_clarke group + */ + + /** + * @brief Converts the elements of the Q7 vector to Q15 vector. + * @param[in] pSrc input pointer + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_q7_to_q15( + q7_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + + /** + * @ingroup groupController + */ + + /** + * @defgroup park Vector Park Transform + * + * Forward Park transform converts the input two-coordinate vector to flux and torque components. + * The Park transform can be used to realize the transformation of the Ialpha and the Ibeta currents + * from the stationary to the moving reference frame and control the spatial relationship between + * the stator vector current and rotor flux vector. + * If we consider the d axis aligned with the rotor flux, the diagram below shows the + * current vector and the relationship from the two reference frames: + * \image html park.gif "Stator current space vector and its component in (a,b) and in the d,q rotating reference frame" + * + * The function operates on a single sample of data and each call to the function returns the processed output. + * The library provides separate functions for Q31 and floating-point data types. + * \par Algorithm + * \image html parkFormula.gif + * where Ialpha and Ibeta are the stator vector components, + * pId and pIq are rotor vector components and cosVal and sinVal are the + * cosine and sine values of theta (rotor flux position). + * \par Fixed-Point Behavior + * Care must be taken when using the Q31 version of the Park transform. + * In particular, the overflow and saturation behavior of the accumulator used must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup park + * @{ + */ + + /** + * @brief Floating-point Park transform + * @param[in] Ialpha input two-phase vector coordinate alpha + * @param[in] Ibeta input two-phase vector coordinate beta + * @param[out] pId points to output rotor reference frame d + * @param[out] pIq points to output rotor reference frame q + * @param[in] sinVal sine value of rotation angle theta + * @param[in] cosVal cosine value of rotation angle theta + * + * The function implements the forward Park transform. + * + */ + static __INLINE void arm_park_f32( + float32_t Ialpha, + float32_t Ibeta, + float32_t * pId, + float32_t * pIq, + float32_t sinVal, + float32_t cosVal) + { + /* Calculate pId using the equation, pId = Ialpha * cosVal + Ibeta * sinVal */ + *pId = Ialpha * cosVal + Ibeta * sinVal; + + /* Calculate pIq using the equation, pIq = - Ialpha * sinVal + Ibeta * cosVal */ + *pIq = -Ialpha * sinVal + Ibeta * cosVal; + } + + + /** + * @brief Park transform for Q31 version + * @param[in] Ialpha input two-phase vector coordinate alpha + * @param[in] Ibeta input two-phase vector coordinate beta + * @param[out] pId points to output rotor reference frame d + * @param[out] pIq points to output rotor reference frame q + * @param[in] sinVal sine value of rotation angle theta + * @param[in] cosVal cosine value of rotation angle theta + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 32-bit accumulator. + * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. + * There is saturation on the addition and subtraction, hence there is no risk of overflow. + */ + static __INLINE void arm_park_q31( + q31_t Ialpha, + q31_t Ibeta, + q31_t * pId, + q31_t * pIq, + q31_t sinVal, + q31_t cosVal) + { + q31_t product1, product2; /* Temporary variables used to store intermediate results */ + q31_t product3, product4; /* Temporary variables used to store intermediate results */ + + /* Intermediate product is calculated by (Ialpha * cosVal) */ + product1 = (q31_t) (((q63_t) (Ialpha) * (cosVal)) >> 31); + + /* Intermediate product is calculated by (Ibeta * sinVal) */ + product2 = (q31_t) (((q63_t) (Ibeta) * (sinVal)) >> 31); + + + /* Intermediate product is calculated by (Ialpha * sinVal) */ + product3 = (q31_t) (((q63_t) (Ialpha) * (sinVal)) >> 31); + + /* Intermediate product is calculated by (Ibeta * cosVal) */ + product4 = (q31_t) (((q63_t) (Ibeta) * (cosVal)) >> 31); + + /* Calculate pId by adding the two intermediate products 1 and 2 */ + *pId = __QADD(product1, product2); + + /* Calculate pIq by subtracting the two intermediate products 3 from 4 */ + *pIq = __QSUB(product4, product3); + } + + /** + * @} end of park group + */ + + /** + * @brief Converts the elements of the Q7 vector to floating-point vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q7_to_float( + q7_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @ingroup groupController + */ + + /** + * @defgroup inv_park Vector Inverse Park transform + * Inverse Park transform converts the input flux and torque components to two-coordinate vector. + * + * The function operates on a single sample of data and each call to the function returns the processed output. + * The library provides separate functions for Q31 and floating-point data types. + * \par Algorithm + * \image html parkInvFormula.gif + * where pIalpha and pIbeta are the stator vector components, + * Id and Iq are rotor vector components and cosVal and sinVal are the + * cosine and sine values of theta (rotor flux position). + * \par Fixed-Point Behavior + * Care must be taken when using the Q31 version of the Park transform. + * In particular, the overflow and saturation behavior of the accumulator used must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup inv_park + * @{ + */ + + /** + * @brief Floating-point Inverse Park transform + * @param[in] Id input coordinate of rotor reference frame d + * @param[in] Iq input coordinate of rotor reference frame q + * @param[out] pIalpha points to output two-phase orthogonal vector axis alpha + * @param[out] pIbeta points to output two-phase orthogonal vector axis beta + * @param[in] sinVal sine value of rotation angle theta + * @param[in] cosVal cosine value of rotation angle theta + */ + static __INLINE void arm_inv_park_f32( + float32_t Id, + float32_t Iq, + float32_t * pIalpha, + float32_t * pIbeta, + float32_t sinVal, + float32_t cosVal) + { + /* Calculate pIalpha using the equation, pIalpha = Id * cosVal - Iq * sinVal */ + *pIalpha = Id * cosVal - Iq * sinVal; + + /* Calculate pIbeta using the equation, pIbeta = Id * sinVal + Iq * cosVal */ + *pIbeta = Id * sinVal + Iq * cosVal; + } + + + /** + * @brief Inverse Park transform for Q31 version + * @param[in] Id input coordinate of rotor reference frame d + * @param[in] Iq input coordinate of rotor reference frame q + * @param[out] pIalpha points to output two-phase orthogonal vector axis alpha + * @param[out] pIbeta points to output two-phase orthogonal vector axis beta + * @param[in] sinVal sine value of rotation angle theta + * @param[in] cosVal cosine value of rotation angle theta + * + * Scaling and Overflow Behavior: + * \par + * The function is implemented using an internal 32-bit accumulator. + * The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. + * There is saturation on the addition, hence there is no risk of overflow. + */ + static __INLINE void arm_inv_park_q31( + q31_t Id, + q31_t Iq, + q31_t * pIalpha, + q31_t * pIbeta, + q31_t sinVal, + q31_t cosVal) + { + q31_t product1, product2; /* Temporary variables used to store intermediate results */ + q31_t product3, product4; /* Temporary variables used to store intermediate results */ + + /* Intermediate product is calculated by (Id * cosVal) */ + product1 = (q31_t) (((q63_t) (Id) * (cosVal)) >> 31); + + /* Intermediate product is calculated by (Iq * sinVal) */ + product2 = (q31_t) (((q63_t) (Iq) * (sinVal)) >> 31); + + + /* Intermediate product is calculated by (Id * sinVal) */ + product3 = (q31_t) (((q63_t) (Id) * (sinVal)) >> 31); + + /* Intermediate product is calculated by (Iq * cosVal) */ + product4 = (q31_t) (((q63_t) (Iq) * (cosVal)) >> 31); + + /* Calculate pIalpha by using the two intermediate products 1 and 2 */ + *pIalpha = __QSUB(product1, product2); + + /* Calculate pIbeta by using the two intermediate products 3 and 4 */ + *pIbeta = __QADD(product4, product3); + } + + /** + * @} end of Inverse park group + */ + + + /** + * @brief Converts the elements of the Q31 vector to floating-point vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q31_to_float( + q31_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + /** + * @ingroup groupInterpolation + */ + + /** + * @defgroup LinearInterpolate Linear Interpolation + * + * Linear interpolation is a method of curve fitting using linear polynomials. + * Linear interpolation works by effectively drawing a straight line between two neighboring samples and returning the appropriate point along that line + * + * \par + * \image html LinearInterp.gif "Linear interpolation" + * + * \par + * A Linear Interpolate function calculates an output value(y), for the input(x) + * using linear interpolation of the input values x0, x1( nearest input values) and the output values y0 and y1(nearest output values) + * + * \par Algorithm: + *
+   *       y = y0 + (x - x0) * ((y1 - y0)/(x1-x0))
+   *       where x0, x1 are nearest values of input x
+   *             y0, y1 are nearest values to output y
+   * 
+ * + * \par + * This set of functions implements Linear interpolation process + * for Q7, Q15, Q31, and floating-point data types. The functions operate on a single + * sample of data and each call to the function returns a single processed value. + * S points to an instance of the Linear Interpolate function data structure. + * x is the input sample value. The functions returns the output value. + * + * \par + * if x is outside of the table boundary, Linear interpolation returns first value of the table + * if x is below input range and returns last value of table if x is above range. + */ + + /** + * @addtogroup LinearInterpolate + * @{ + */ + + /** + * @brief Process function for the floating-point Linear Interpolation Function. + * @param[in,out] S is an instance of the floating-point Linear Interpolation structure + * @param[in] x input sample to process + * @return y processed output sample. + * + */ + static __INLINE float32_t arm_linear_interp_f32( + arm_linear_interp_instance_f32 * S, + float32_t x) + { + float32_t y; + float32_t x0, x1; /* Nearest input values */ + float32_t y0, y1; /* Nearest output values */ + float32_t xSpacing = S->xSpacing; /* spacing between input values */ + int32_t i; /* Index variable */ + float32_t *pYData = S->pYData; /* pointer to output table */ + + /* Calculation of index */ + i = (int32_t) ((x - S->x1) / xSpacing); + + if(i < 0) + { + /* Iniatilize output for below specified range as least output value of table */ + y = pYData[0]; + } + else if((uint32_t)i >= S->nValues) + { + /* Iniatilize output for above specified range as last output value of table */ + y = pYData[S->nValues - 1]; + } + else + { + /* Calculation of nearest input values */ + x0 = S->x1 + i * xSpacing; + x1 = S->x1 + (i + 1) * xSpacing; + + /* Read of nearest output values */ + y0 = pYData[i]; + y1 = pYData[i + 1]; + + /* Calculation of output */ + y = y0 + (x - x0) * ((y1 - y0) / (x1 - x0)); + + } + + /* returns output value */ + return (y); + } + + + /** + * + * @brief Process function for the Q31 Linear Interpolation Function. + * @param[in] pYData pointer to Q31 Linear Interpolation table + * @param[in] x input sample to process + * @param[in] nValues number of table values + * @return y processed output sample. + * + * \par + * Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. + * This function can support maximum of table size 2^12. + * + */ + static __INLINE q31_t arm_linear_interp_q31( + q31_t * pYData, + q31_t x, + uint32_t nValues) + { + q31_t y; /* output */ + q31_t y0, y1; /* Nearest output values */ + q31_t fract; /* fractional part */ + int32_t index; /* Index to read nearest output values */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + index = ((x & (q31_t)0xFFF00000) >> 20); + + if(index >= (int32_t)(nValues - 1)) + { + return (pYData[nValues - 1]); + } + else if(index < 0) + { + return (pYData[0]); + } + else + { + /* 20 bits for the fractional part */ + /* shift left by 11 to keep fract in 1.31 format */ + fract = (x & 0x000FFFFF) << 11; + + /* Read two nearest output values from the index in 1.31(q31) format */ + y0 = pYData[index]; + y1 = pYData[index + 1]; + + /* Calculation of y0 * (1-fract) and y is in 2.30 format */ + y = ((q31_t) ((q63_t) y0 * (0x7FFFFFFF - fract) >> 32)); + + /* Calculation of y0 * (1-fract) + y1 *fract and y is in 2.30 format */ + y += ((q31_t) (((q63_t) y1 * fract) >> 32)); + + /* Convert y to 1.31 format */ + return (y << 1u); + } + } + + + /** + * + * @brief Process function for the Q15 Linear Interpolation Function. + * @param[in] pYData pointer to Q15 Linear Interpolation table + * @param[in] x input sample to process + * @param[in] nValues number of table values + * @return y processed output sample. + * + * \par + * Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. + * This function can support maximum of table size 2^12. + * + */ + static __INLINE q15_t arm_linear_interp_q15( + q15_t * pYData, + q31_t x, + uint32_t nValues) + { + q63_t y; /* output */ + q15_t y0, y1; /* Nearest output values */ + q31_t fract; /* fractional part */ + int32_t index; /* Index to read nearest output values */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + index = ((x & (int32_t)0xFFF00000) >> 20); + + if(index >= (int32_t)(nValues - 1)) + { + return (pYData[nValues - 1]); + } + else if(index < 0) + { + return (pYData[0]); + } + else + { + /* 20 bits for the fractional part */ + /* fract is in 12.20 format */ + fract = (x & 0x000FFFFF); + + /* Read two nearest output values from the index */ + y0 = pYData[index]; + y1 = pYData[index + 1]; + + /* Calculation of y0 * (1-fract) and y is in 13.35 format */ + y = ((q63_t) y0 * (0xFFFFF - fract)); + + /* Calculation of (y0 * (1-fract) + y1 * fract) and y is in 13.35 format */ + y += ((q63_t) y1 * (fract)); + + /* convert y to 1.15 format */ + return (q15_t) (y >> 20); + } + } + + + /** + * + * @brief Process function for the Q7 Linear Interpolation Function. + * @param[in] pYData pointer to Q7 Linear Interpolation table + * @param[in] x input sample to process + * @param[in] nValues number of table values + * @return y processed output sample. + * + * \par + * Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. + * This function can support maximum of table size 2^12. + */ + static __INLINE q7_t arm_linear_interp_q7( + q7_t * pYData, + q31_t x, + uint32_t nValues) + { + q31_t y; /* output */ + q7_t y0, y1; /* Nearest output values */ + q31_t fract; /* fractional part */ + uint32_t index; /* Index to read nearest output values */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + if (x < 0) + { + return (pYData[0]); + } + index = (x >> 20) & 0xfff; + + if(index >= (nValues - 1)) + { + return (pYData[nValues - 1]); + } + else + { + /* 20 bits for the fractional part */ + /* fract is in 12.20 format */ + fract = (x & 0x000FFFFF); + + /* Read two nearest output values from the index and are in 1.7(q7) format */ + y0 = pYData[index]; + y1 = pYData[index + 1]; + + /* Calculation of y0 * (1-fract ) and y is in 13.27(q27) format */ + y = ((y0 * (0xFFFFF - fract))); + + /* Calculation of y1 * fract + y0 * (1-fract) and y is in 13.27(q27) format */ + y += (y1 * fract); + + /* convert y to 1.7(q7) format */ + return (q7_t) (y >> 20); + } + } + + /** + * @} end of LinearInterpolate group + */ + + /** + * @brief Fast approximation to the trigonometric sine function for floating-point data. + * @param[in] x input value in radians. + * @return sin(x). + */ + float32_t arm_sin_f32( + float32_t x); + + + /** + * @brief Fast approximation to the trigonometric sine function for Q31 data. + * @param[in] x Scaled input value in radians. + * @return sin(x). + */ + q31_t arm_sin_q31( + q31_t x); + + + /** + * @brief Fast approximation to the trigonometric sine function for Q15 data. + * @param[in] x Scaled input value in radians. + * @return sin(x). + */ + q15_t arm_sin_q15( + q15_t x); + + + /** + * @brief Fast approximation to the trigonometric cosine function for floating-point data. + * @param[in] x input value in radians. + * @return cos(x). + */ + float32_t arm_cos_f32( + float32_t x); + + + /** + * @brief Fast approximation to the trigonometric cosine function for Q31 data. + * @param[in] x Scaled input value in radians. + * @return cos(x). + */ + q31_t arm_cos_q31( + q31_t x); + + + /** + * @brief Fast approximation to the trigonometric cosine function for Q15 data. + * @param[in] x Scaled input value in radians. + * @return cos(x). + */ + q15_t arm_cos_q15( + q15_t x); + + + /** + * @ingroup groupFastMath + */ + + + /** + * @defgroup SQRT Square Root + * + * Computes the square root of a number. + * There are separate functions for Q15, Q31, and floating-point data types. + * The square root function is computed using the Newton-Raphson algorithm. + * This is an iterative algorithm of the form: + *
+   *      x1 = x0 - f(x0)/f'(x0)
+   * 
+ * where x1 is the current estimate, + * x0 is the previous estimate, and + * f'(x0) is the derivative of f() evaluated at x0. + * For the square root function, the algorithm reduces to: + *
+   *     x0 = in/2                         [initial guess]
+   *     x1 = 1/2 * ( x0 + in / x0)        [each iteration]
+   * 
+ */ + + + /** + * @addtogroup SQRT + * @{ + */ + + /** + * @brief Floating-point square root function. + * @param[in] in input value. + * @param[out] pOut square root of input value. + * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if + * in is negative value and returns zero output for negative values. + */ + static __INLINE arm_status arm_sqrt_f32( + float32_t in, + float32_t * pOut) + { + if(in >= 0.0f) + { + +#if (__FPU_USED == 1) && defined ( __CC_ARM ) + *pOut = __sqrtf(in); +#elif (__FPU_USED == 1) && (defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)) + *pOut = __builtin_sqrtf(in); +#elif (__FPU_USED == 1) && defined(__GNUC__) + *pOut = __builtin_sqrtf(in); +#elif (__FPU_USED == 1) && defined ( __ICCARM__ ) && (__VER__ >= 6040000) + __ASM("VSQRT.F32 %0,%1" : "=t"(*pOut) : "t"(in)); +#else + *pOut = sqrtf(in); +#endif + + return (ARM_MATH_SUCCESS); + } + else + { + *pOut = 0.0f; + return (ARM_MATH_ARGUMENT_ERROR); + } + } + + + /** + * @brief Q31 square root function. + * @param[in] in input value. The range of the input value is [0 +1) or 0x00000000 to 0x7FFFFFFF. + * @param[out] pOut square root of input value. + * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if + * in is negative value and returns zero output for negative values. + */ + arm_status arm_sqrt_q31( + q31_t in, + q31_t * pOut); + + + /** + * @brief Q15 square root function. + * @param[in] in input value. The range of the input value is [0 +1) or 0x0000 to 0x7FFF. + * @param[out] pOut square root of input value. + * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if + * in is negative value and returns zero output for negative values. + */ + arm_status arm_sqrt_q15( + q15_t in, + q15_t * pOut); + + /** + * @} end of SQRT group + */ + + + /** + * @brief floating-point Circular write function. + */ + static __INLINE void arm_circularWrite_f32( + int32_t * circBuffer, + int32_t L, + uint16_t * writeOffset, + int32_t bufferInc, + const int32_t * src, + int32_t srcInc, + uint32_t blockSize) + { + uint32_t i = 0u; + int32_t wOffset; + + /* Copy the value of Index pointer that points + * to the current location where the input samples to be copied */ + wOffset = *writeOffset; + + /* Loop over the blockSize */ + i = blockSize; + + while(i > 0u) + { + /* copy the input sample to the circular buffer */ + circBuffer[wOffset] = *src; + + /* Update the input pointer */ + src += srcInc; + + /* Circularly update wOffset. Watch out for positive and negative value */ + wOffset += bufferInc; + if(wOffset >= L) + wOffset -= L; + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *writeOffset = (uint16_t)wOffset; + } + + + + /** + * @brief floating-point Circular Read function. + */ + static __INLINE void arm_circularRead_f32( + int32_t * circBuffer, + int32_t L, + int32_t * readOffset, + int32_t bufferInc, + int32_t * dst, + int32_t * dst_base, + int32_t dst_length, + int32_t dstInc, + uint32_t blockSize) + { + uint32_t i = 0u; + int32_t rOffset, dst_end; + + /* Copy the value of Index pointer that points + * to the current location from where the input samples to be read */ + rOffset = *readOffset; + dst_end = (int32_t) (dst_base + dst_length); + + /* Loop over the blockSize */ + i = blockSize; + + while(i > 0u) + { + /* copy the sample from the circular buffer to the destination buffer */ + *dst = circBuffer[rOffset]; + + /* Update the input pointer */ + dst += dstInc; + + if(dst == (int32_t *) dst_end) + { + dst = dst_base; + } + + /* Circularly update rOffset. Watch out for positive and negative value */ + rOffset += bufferInc; + + if(rOffset >= L) + { + rOffset -= L; + } + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *readOffset = rOffset; + } + + + /** + * @brief Q15 Circular write function. + */ + static __INLINE void arm_circularWrite_q15( + q15_t * circBuffer, + int32_t L, + uint16_t * writeOffset, + int32_t bufferInc, + const q15_t * src, + int32_t srcInc, + uint32_t blockSize) + { + uint32_t i = 0u; + int32_t wOffset; + + /* Copy the value of Index pointer that points + * to the current location where the input samples to be copied */ + wOffset = *writeOffset; + + /* Loop over the blockSize */ + i = blockSize; + + while(i > 0u) + { + /* copy the input sample to the circular buffer */ + circBuffer[wOffset] = *src; + + /* Update the input pointer */ + src += srcInc; + + /* Circularly update wOffset. Watch out for positive and negative value */ + wOffset += bufferInc; + if(wOffset >= L) + wOffset -= L; + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *writeOffset = (uint16_t)wOffset; + } + + + /** + * @brief Q15 Circular Read function. + */ + static __INLINE void arm_circularRead_q15( + q15_t * circBuffer, + int32_t L, + int32_t * readOffset, + int32_t bufferInc, + q15_t * dst, + q15_t * dst_base, + int32_t dst_length, + int32_t dstInc, + uint32_t blockSize) + { + uint32_t i = 0; + int32_t rOffset, dst_end; + + /* Copy the value of Index pointer that points + * to the current location from where the input samples to be read */ + rOffset = *readOffset; + + dst_end = (int32_t) (dst_base + dst_length); + + /* Loop over the blockSize */ + i = blockSize; + + while(i > 0u) + { + /* copy the sample from the circular buffer to the destination buffer */ + *dst = circBuffer[rOffset]; + + /* Update the input pointer */ + dst += dstInc; + + if(dst == (q15_t *) dst_end) + { + dst = dst_base; + } + + /* Circularly update wOffset. Watch out for positive and negative value */ + rOffset += bufferInc; + + if(rOffset >= L) + { + rOffset -= L; + } + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *readOffset = rOffset; + } + + + /** + * @brief Q7 Circular write function. + */ + static __INLINE void arm_circularWrite_q7( + q7_t * circBuffer, + int32_t L, + uint16_t * writeOffset, + int32_t bufferInc, + const q7_t * src, + int32_t srcInc, + uint32_t blockSize) + { + uint32_t i = 0u; + int32_t wOffset; + + /* Copy the value of Index pointer that points + * to the current location where the input samples to be copied */ + wOffset = *writeOffset; + + /* Loop over the blockSize */ + i = blockSize; + + while(i > 0u) + { + /* copy the input sample to the circular buffer */ + circBuffer[wOffset] = *src; + + /* Update the input pointer */ + src += srcInc; + + /* Circularly update wOffset. Watch out for positive and negative value */ + wOffset += bufferInc; + if(wOffset >= L) + wOffset -= L; + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *writeOffset = (uint16_t)wOffset; + } + + + /** + * @brief Q7 Circular Read function. + */ + static __INLINE void arm_circularRead_q7( + q7_t * circBuffer, + int32_t L, + int32_t * readOffset, + int32_t bufferInc, + q7_t * dst, + q7_t * dst_base, + int32_t dst_length, + int32_t dstInc, + uint32_t blockSize) + { + uint32_t i = 0; + int32_t rOffset, dst_end; + + /* Copy the value of Index pointer that points + * to the current location from where the input samples to be read */ + rOffset = *readOffset; + + dst_end = (int32_t) (dst_base + dst_length); + + /* Loop over the blockSize */ + i = blockSize; + + while(i > 0u) + { + /* copy the sample from the circular buffer to the destination buffer */ + *dst = circBuffer[rOffset]; + + /* Update the input pointer */ + dst += dstInc; + + if(dst == (q7_t *) dst_end) + { + dst = dst_base; + } + + /* Circularly update rOffset. Watch out for positive and negative value */ + rOffset += bufferInc; + + if(rOffset >= L) + { + rOffset -= L; + } + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *readOffset = rOffset; + } + + + /** + * @brief Sum of the squares of the elements of a Q31 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_power_q31( + q31_t * pSrc, + uint32_t blockSize, + q63_t * pResult); + + + /** + * @brief Sum of the squares of the elements of a floating-point vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_power_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + + /** + * @brief Sum of the squares of the elements of a Q15 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_power_q15( + q15_t * pSrc, + uint32_t blockSize, + q63_t * pResult); + + + /** + * @brief Sum of the squares of the elements of a Q7 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_power_q7( + q7_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + + /** + * @brief Mean value of a Q7 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_mean_q7( + q7_t * pSrc, + uint32_t blockSize, + q7_t * pResult); + + + /** + * @brief Mean value of a Q15 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_mean_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult); + + + /** + * @brief Mean value of a Q31 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_mean_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + + /** + * @brief Mean value of a floating-point vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_mean_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + + /** + * @brief Variance of the elements of a floating-point vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_var_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + + /** + * @brief Variance of the elements of a Q31 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_var_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + + /** + * @brief Variance of the elements of a Q15 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_var_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult); + + + /** + * @brief Root Mean Square of the elements of a floating-point vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_rms_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + + /** + * @brief Root Mean Square of the elements of a Q31 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_rms_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + + /** + * @brief Root Mean Square of the elements of a Q15 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_rms_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult); + + + /** + * @brief Standard deviation of the elements of a floating-point vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_std_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + + /** + * @brief Standard deviation of the elements of a Q31 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_std_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + + /** + * @brief Standard deviation of the elements of a Q15 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_std_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult); + + + /** + * @brief Floating-point complex magnitude + * @param[in] pSrc points to the complex input vector + * @param[out] pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + */ + void arm_cmplx_mag_f32( + float32_t * pSrc, + float32_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q31 complex magnitude + * @param[in] pSrc points to the complex input vector + * @param[out] pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + */ + void arm_cmplx_mag_q31( + q31_t * pSrc, + q31_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q15 complex magnitude + * @param[in] pSrc points to the complex input vector + * @param[out] pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + */ + void arm_cmplx_mag_q15( + q15_t * pSrc, + q15_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q15 complex dot product + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] numSamples number of complex samples in each vector + * @param[out] realResult real part of the result returned here + * @param[out] imagResult imaginary part of the result returned here + */ + void arm_cmplx_dot_prod_q15( + q15_t * pSrcA, + q15_t * pSrcB, + uint32_t numSamples, + q31_t * realResult, + q31_t * imagResult); + + + /** + * @brief Q31 complex dot product + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] numSamples number of complex samples in each vector + * @param[out] realResult real part of the result returned here + * @param[out] imagResult imaginary part of the result returned here + */ + void arm_cmplx_dot_prod_q31( + q31_t * pSrcA, + q31_t * pSrcB, + uint32_t numSamples, + q63_t * realResult, + q63_t * imagResult); + + + /** + * @brief Floating-point complex dot product + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] numSamples number of complex samples in each vector + * @param[out] realResult real part of the result returned here + * @param[out] imagResult imaginary part of the result returned here + */ + void arm_cmplx_dot_prod_f32( + float32_t * pSrcA, + float32_t * pSrcB, + uint32_t numSamples, + float32_t * realResult, + float32_t * imagResult); + + + /** + * @brief Q15 complex-by-real multiplication + * @param[in] pSrcCmplx points to the complex input vector + * @param[in] pSrcReal points to the real input vector + * @param[out] pCmplxDst points to the complex output vector + * @param[in] numSamples number of samples in each vector + */ + void arm_cmplx_mult_real_q15( + q15_t * pSrcCmplx, + q15_t * pSrcReal, + q15_t * pCmplxDst, + uint32_t numSamples); + + + /** + * @brief Q31 complex-by-real multiplication + * @param[in] pSrcCmplx points to the complex input vector + * @param[in] pSrcReal points to the real input vector + * @param[out] pCmplxDst points to the complex output vector + * @param[in] numSamples number of samples in each vector + */ + void arm_cmplx_mult_real_q31( + q31_t * pSrcCmplx, + q31_t * pSrcReal, + q31_t * pCmplxDst, + uint32_t numSamples); + + + /** + * @brief Floating-point complex-by-real multiplication + * @param[in] pSrcCmplx points to the complex input vector + * @param[in] pSrcReal points to the real input vector + * @param[out] pCmplxDst points to the complex output vector + * @param[in] numSamples number of samples in each vector + */ + void arm_cmplx_mult_real_f32( + float32_t * pSrcCmplx, + float32_t * pSrcReal, + float32_t * pCmplxDst, + uint32_t numSamples); + + + /** + * @brief Minimum value of a Q7 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] result is output pointer + * @param[in] index is the array index of the minimum value in the input buffer. + */ + void arm_min_q7( + q7_t * pSrc, + uint32_t blockSize, + q7_t * result, + uint32_t * index); + + + /** + * @brief Minimum value of a Q15 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output pointer + * @param[in] pIndex is the array index of the minimum value in the input buffer. + */ + void arm_min_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult, + uint32_t * pIndex); + + + /** + * @brief Minimum value of a Q31 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output pointer + * @param[out] pIndex is the array index of the minimum value in the input buffer. + */ + void arm_min_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult, + uint32_t * pIndex); + + + /** + * @brief Minimum value of a floating-point vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output pointer + * @param[out] pIndex is the array index of the minimum value in the input buffer. + */ + void arm_min_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult, + uint32_t * pIndex); + + +/** + * @brief Maximum value of a Q7 vector. + * @param[in] pSrc points to the input buffer + * @param[in] blockSize length of the input vector + * @param[out] pResult maximum value returned here + * @param[out] pIndex index of maximum value returned here + */ + void arm_max_q7( + q7_t * pSrc, + uint32_t blockSize, + q7_t * pResult, + uint32_t * pIndex); + + +/** + * @brief Maximum value of a Q15 vector. + * @param[in] pSrc points to the input buffer + * @param[in] blockSize length of the input vector + * @param[out] pResult maximum value returned here + * @param[out] pIndex index of maximum value returned here + */ + void arm_max_q15( + q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult, + uint32_t * pIndex); + + +/** + * @brief Maximum value of a Q31 vector. + * @param[in] pSrc points to the input buffer + * @param[in] blockSize length of the input vector + * @param[out] pResult maximum value returned here + * @param[out] pIndex index of maximum value returned here + */ + void arm_max_q31( + q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult, + uint32_t * pIndex); + + +/** + * @brief Maximum value of a floating-point vector. + * @param[in] pSrc points to the input buffer + * @param[in] blockSize length of the input vector + * @param[out] pResult maximum value returned here + * @param[out] pIndex index of maximum value returned here + */ + void arm_max_f32( + float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult, + uint32_t * pIndex); + + + /** + * @brief Q15 complex-by-complex multiplication + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + */ + void arm_cmplx_mult_cmplx_q15( + q15_t * pSrcA, + q15_t * pSrcB, + q15_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q31 complex-by-complex multiplication + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + */ + void arm_cmplx_mult_cmplx_q31( + q31_t * pSrcA, + q31_t * pSrcB, + q31_t * pDst, + uint32_t numSamples); + + + /** + * @brief Floating-point complex-by-complex multiplication + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + */ + void arm_cmplx_mult_cmplx_f32( + float32_t * pSrcA, + float32_t * pSrcB, + float32_t * pDst, + uint32_t numSamples); + + + /** + * @brief Converts the elements of the floating-point vector to Q31 vector. + * @param[in] pSrc points to the floating-point input vector + * @param[out] pDst points to the Q31 output vector + * @param[in] blockSize length of the input vector + */ + void arm_float_to_q31( + float32_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the floating-point vector to Q15 vector. + * @param[in] pSrc points to the floating-point input vector + * @param[out] pDst points to the Q15 output vector + * @param[in] blockSize length of the input vector + */ + void arm_float_to_q15( + float32_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the floating-point vector to Q7 vector. + * @param[in] pSrc points to the floating-point input vector + * @param[out] pDst points to the Q7 output vector + * @param[in] blockSize length of the input vector + */ + void arm_float_to_q7( + float32_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q31 vector to Q15 vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q31_to_q15( + q31_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q31 vector to Q7 vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q31_to_q7( + q31_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q15 vector to floating-point vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q15_to_float( + q15_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q15 vector to Q31 vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q15_to_q31( + q15_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q15 vector to Q7 vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q15_to_q7( + q15_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @ingroup groupInterpolation + */ + + /** + * @defgroup BilinearInterpolate Bilinear Interpolation + * + * Bilinear interpolation is an extension of linear interpolation applied to a two dimensional grid. + * The underlying function f(x, y) is sampled on a regular grid and the interpolation process + * determines values between the grid points. + * Bilinear interpolation is equivalent to two step linear interpolation, first in the x-dimension and then in the y-dimension. + * Bilinear interpolation is often used in image processing to rescale images. + * The CMSIS DSP library provides bilinear interpolation functions for Q7, Q15, Q31, and floating-point data types. + * + * Algorithm + * \par + * The instance structure used by the bilinear interpolation functions describes a two dimensional data table. + * For floating-point, the instance structure is defined as: + *
+   *   typedef struct
+   *   {
+   *     uint16_t numRows;
+   *     uint16_t numCols;
+   *     float32_t *pData;
+   * } arm_bilinear_interp_instance_f32;
+   * 
+ * + * \par + * where numRows specifies the number of rows in the table; + * numCols specifies the number of columns in the table; + * and pData points to an array of size numRows*numCols values. + * The data table pTable is organized in row order and the supplied data values fall on integer indexes. + * That is, table element (x,y) is located at pTable[x + y*numCols] where x and y are integers. + * + * \par + * Let (x, y) specify the desired interpolation point. Then define: + *
+   *     XF = floor(x)
+   *     YF = floor(y)
+   * 
+ * \par + * The interpolated output point is computed as: + *
+   *  f(x, y) = f(XF, YF) * (1-(x-XF)) * (1-(y-YF))
+   *           + f(XF+1, YF) * (x-XF)*(1-(y-YF))
+   *           + f(XF, YF+1) * (1-(x-XF))*(y-YF)
+   *           + f(XF+1, YF+1) * (x-XF)*(y-YF)
+   * 
+ * Note that the coordinates (x, y) contain integer and fractional components. + * The integer components specify which portion of the table to use while the + * fractional components control the interpolation processor. + * + * \par + * if (x,y) are outside of the table boundary, Bilinear interpolation returns zero output. + */ + + /** + * @addtogroup BilinearInterpolate + * @{ + */ + + + /** + * + * @brief Floating-point bilinear interpolation. + * @param[in,out] S points to an instance of the interpolation structure. + * @param[in] X interpolation coordinate. + * @param[in] Y interpolation coordinate. + * @return out interpolated value. + */ + static __INLINE float32_t arm_bilinear_interp_f32( + const arm_bilinear_interp_instance_f32 * S, + float32_t X, + float32_t Y) + { + float32_t out; + float32_t f00, f01, f10, f11; + float32_t *pData = S->pData; + int32_t xIndex, yIndex, index; + float32_t xdiff, ydiff; + float32_t b1, b2, b3, b4; + + xIndex = (int32_t) X; + yIndex = (int32_t) Y; + + /* Care taken for table outside boundary */ + /* Returns zero output when values are outside table boundary */ + if(xIndex < 0 || xIndex > (S->numRows - 1) || yIndex < 0 || yIndex > (S->numCols - 1)) + { + return (0); + } + + /* Calculation of index for two nearest points in X-direction */ + index = (xIndex - 1) + (yIndex - 1) * S->numCols; + + + /* Read two nearest points in X-direction */ + f00 = pData[index]; + f01 = pData[index + 1]; + + /* Calculation of index for two nearest points in Y-direction */ + index = (xIndex - 1) + (yIndex) * S->numCols; + + + /* Read two nearest points in Y-direction */ + f10 = pData[index]; + f11 = pData[index + 1]; + + /* Calculation of intermediate values */ + b1 = f00; + b2 = f01 - f00; + b3 = f10 - f00; + b4 = f00 - f01 - f10 + f11; + + /* Calculation of fractional part in X */ + xdiff = X - xIndex; + + /* Calculation of fractional part in Y */ + ydiff = Y - yIndex; + + /* Calculation of bi-linear interpolated output */ + out = b1 + b2 * xdiff + b3 * ydiff + b4 * xdiff * ydiff; + + /* return to application */ + return (out); + } + + + /** + * + * @brief Q31 bilinear interpolation. + * @param[in,out] S points to an instance of the interpolation structure. + * @param[in] X interpolation coordinate in 12.20 format. + * @param[in] Y interpolation coordinate in 12.20 format. + * @return out interpolated value. + */ + static __INLINE q31_t arm_bilinear_interp_q31( + arm_bilinear_interp_instance_q31 * S, + q31_t X, + q31_t Y) + { + q31_t out; /* Temporary output */ + q31_t acc = 0; /* output */ + q31_t xfract, yfract; /* X, Y fractional parts */ + q31_t x1, x2, y1, y2; /* Nearest output values */ + int32_t rI, cI; /* Row and column indices */ + q31_t *pYData = S->pData; /* pointer to output table values */ + uint32_t nCols = S->numCols; /* num of rows */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + rI = ((X & (q31_t)0xFFF00000) >> 20); + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + cI = ((Y & (q31_t)0xFFF00000) >> 20); + + /* Care taken for table outside boundary */ + /* Returns zero output when values are outside table boundary */ + if(rI < 0 || rI > (S->numRows - 1) || cI < 0 || cI > (S->numCols - 1)) + { + return (0); + } + + /* 20 bits for the fractional part */ + /* shift left xfract by 11 to keep 1.31 format */ + xfract = (X & 0x000FFFFF) << 11u; + + /* Read two nearest output values from the index */ + x1 = pYData[(rI) + (int32_t)nCols * (cI) ]; + x2 = pYData[(rI) + (int32_t)nCols * (cI) + 1]; + + /* 20 bits for the fractional part */ + /* shift left yfract by 11 to keep 1.31 format */ + yfract = (Y & 0x000FFFFF) << 11u; + + /* Read two nearest output values from the index */ + y1 = pYData[(rI) + (int32_t)nCols * (cI + 1) ]; + y2 = pYData[(rI) + (int32_t)nCols * (cI + 1) + 1]; + + /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 3.29(q29) format */ + out = ((q31_t) (((q63_t) x1 * (0x7FFFFFFF - xfract)) >> 32)); + acc = ((q31_t) (((q63_t) out * (0x7FFFFFFF - yfract)) >> 32)); + + /* x2 * (xfract) * (1-yfract) in 3.29(q29) and adding to acc */ + out = ((q31_t) ((q63_t) x2 * (0x7FFFFFFF - yfract) >> 32)); + acc += ((q31_t) ((q63_t) out * (xfract) >> 32)); + + /* y1 * (1 - xfract) * (yfract) in 3.29(q29) and adding to acc */ + out = ((q31_t) ((q63_t) y1 * (0x7FFFFFFF - xfract) >> 32)); + acc += ((q31_t) ((q63_t) out * (yfract) >> 32)); + + /* y2 * (xfract) * (yfract) in 3.29(q29) and adding to acc */ + out = ((q31_t) ((q63_t) y2 * (xfract) >> 32)); + acc += ((q31_t) ((q63_t) out * (yfract) >> 32)); + + /* Convert acc to 1.31(q31) format */ + return ((q31_t)(acc << 2)); + } + + + /** + * @brief Q15 bilinear interpolation. + * @param[in,out] S points to an instance of the interpolation structure. + * @param[in] X interpolation coordinate in 12.20 format. + * @param[in] Y interpolation coordinate in 12.20 format. + * @return out interpolated value. + */ + static __INLINE q15_t arm_bilinear_interp_q15( + arm_bilinear_interp_instance_q15 * S, + q31_t X, + q31_t Y) + { + q63_t acc = 0; /* output */ + q31_t out; /* Temporary output */ + q15_t x1, x2, y1, y2; /* Nearest output values */ + q31_t xfract, yfract; /* X, Y fractional parts */ + int32_t rI, cI; /* Row and column indices */ + q15_t *pYData = S->pData; /* pointer to output table values */ + uint32_t nCols = S->numCols; /* num of rows */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + rI = ((X & (q31_t)0xFFF00000) >> 20); + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + cI = ((Y & (q31_t)0xFFF00000) >> 20); + + /* Care taken for table outside boundary */ + /* Returns zero output when values are outside table boundary */ + if(rI < 0 || rI > (S->numRows - 1) || cI < 0 || cI > (S->numCols - 1)) + { + return (0); + } + + /* 20 bits for the fractional part */ + /* xfract should be in 12.20 format */ + xfract = (X & 0x000FFFFF); + + /* Read two nearest output values from the index */ + x1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) ]; + x2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) + 1]; + + /* 20 bits for the fractional part */ + /* yfract should be in 12.20 format */ + yfract = (Y & 0x000FFFFF); + + /* Read two nearest output values from the index */ + y1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) ]; + y2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) + 1]; + + /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 13.51 format */ + + /* x1 is in 1.15(q15), xfract in 12.20 format and out is in 13.35 format */ + /* convert 13.35 to 13.31 by right shifting and out is in 1.31 */ + out = (q31_t) (((q63_t) x1 * (0xFFFFF - xfract)) >> 4u); + acc = ((q63_t) out * (0xFFFFF - yfract)); + + /* x2 * (xfract) * (1-yfract) in 1.51 and adding to acc */ + out = (q31_t) (((q63_t) x2 * (0xFFFFF - yfract)) >> 4u); + acc += ((q63_t) out * (xfract)); + + /* y1 * (1 - xfract) * (yfract) in 1.51 and adding to acc */ + out = (q31_t) (((q63_t) y1 * (0xFFFFF - xfract)) >> 4u); + acc += ((q63_t) out * (yfract)); + + /* y2 * (xfract) * (yfract) in 1.51 and adding to acc */ + out = (q31_t) (((q63_t) y2 * (xfract)) >> 4u); + acc += ((q63_t) out * (yfract)); + + /* acc is in 13.51 format and down shift acc by 36 times */ + /* Convert out to 1.15 format */ + return ((q15_t)(acc >> 36)); + } + + + /** + * @brief Q7 bilinear interpolation. + * @param[in,out] S points to an instance of the interpolation structure. + * @param[in] X interpolation coordinate in 12.20 format. + * @param[in] Y interpolation coordinate in 12.20 format. + * @return out interpolated value. + */ + static __INLINE q7_t arm_bilinear_interp_q7( + arm_bilinear_interp_instance_q7 * S, + q31_t X, + q31_t Y) + { + q63_t acc = 0; /* output */ + q31_t out; /* Temporary output */ + q31_t xfract, yfract; /* X, Y fractional parts */ + q7_t x1, x2, y1, y2; /* Nearest output values */ + int32_t rI, cI; /* Row and column indices */ + q7_t *pYData = S->pData; /* pointer to output table values */ + uint32_t nCols = S->numCols; /* num of rows */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + rI = ((X & (q31_t)0xFFF00000) >> 20); + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + cI = ((Y & (q31_t)0xFFF00000) >> 20); + + /* Care taken for table outside boundary */ + /* Returns zero output when values are outside table boundary */ + if(rI < 0 || rI > (S->numRows - 1) || cI < 0 || cI > (S->numCols - 1)) + { + return (0); + } + + /* 20 bits for the fractional part */ + /* xfract should be in 12.20 format */ + xfract = (X & (q31_t)0x000FFFFF); + + /* Read two nearest output values from the index */ + x1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) ]; + x2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) + 1]; + + /* 20 bits for the fractional part */ + /* yfract should be in 12.20 format */ + yfract = (Y & (q31_t)0x000FFFFF); + + /* Read two nearest output values from the index */ + y1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) ]; + y2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) + 1]; + + /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 16.47 format */ + out = ((x1 * (0xFFFFF - xfract))); + acc = (((q63_t) out * (0xFFFFF - yfract))); + + /* x2 * (xfract) * (1-yfract) in 2.22 and adding to acc */ + out = ((x2 * (0xFFFFF - yfract))); + acc += (((q63_t) out * (xfract))); + + /* y1 * (1 - xfract) * (yfract) in 2.22 and adding to acc */ + out = ((y1 * (0xFFFFF - xfract))); + acc += (((q63_t) out * (yfract))); + + /* y2 * (xfract) * (yfract) in 2.22 and adding to acc */ + out = ((y2 * (yfract))); + acc += (((q63_t) out * (xfract))); + + /* acc in 16.47 format and down shift by 40 to convert to 1.7 format */ + return ((q7_t)(acc >> 40)); + } + + /** + * @} end of BilinearInterpolate group + */ + + +/* SMMLAR */ +#define multAcc_32x32_keep32_R(a, x, y) \ + a = (q31_t) (((((q63_t) a) << 32) + ((q63_t) x * y) + 0x80000000LL ) >> 32) + +/* SMMLSR */ +#define multSub_32x32_keep32_R(a, x, y) \ + a = (q31_t) (((((q63_t) a) << 32) - ((q63_t) x * y) + 0x80000000LL ) >> 32) + +/* SMMULR */ +#define mult_32x32_keep32_R(a, x, y) \ + a = (q31_t) (((q63_t) x * y + 0x80000000LL ) >> 32) + +/* SMMLA */ +#define multAcc_32x32_keep32(a, x, y) \ + a += (q31_t) (((q63_t) x * y) >> 32) + +/* SMMLS */ +#define multSub_32x32_keep32(a, x, y) \ + a -= (q31_t) (((q63_t) x * y) >> 32) + +/* SMMUL */ +#define mult_32x32_keep32(a, x, y) \ + a = (q31_t) (((q63_t) x * y ) >> 32) + + +#if defined ( __CC_ARM ) + /* Enter low optimization region - place directly above function definition */ + #if defined( ARM_MATH_CM4 ) || defined( ARM_MATH_CM7) + #define LOW_OPTIMIZATION_ENTER \ + _Pragma ("push") \ + _Pragma ("O1") + #else + #define LOW_OPTIMIZATION_ENTER + #endif + + /* Exit low optimization region - place directly after end of function definition */ + #if defined( ARM_MATH_CM4 ) || defined( ARM_MATH_CM7) + #define LOW_OPTIMIZATION_EXIT \ + _Pragma ("pop") + #else + #define LOW_OPTIMIZATION_EXIT + #endif + + /* Enter low optimization region - place directly above function definition */ + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + + /* Exit low optimization region - place directly after end of function definition */ + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #define LOW_OPTIMIZATION_ENTER + #define LOW_OPTIMIZATION_EXIT + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#elif defined(__GNUC__) + #define LOW_OPTIMIZATION_ENTER __attribute__(( optimize("-O1") )) + #define LOW_OPTIMIZATION_EXIT + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#elif defined(__ICCARM__) + /* Enter low optimization region - place directly above function definition */ + #if defined( ARM_MATH_CM4 ) || defined( ARM_MATH_CM7) + #define LOW_OPTIMIZATION_ENTER \ + _Pragma ("optimize=low") + #else + #define LOW_OPTIMIZATION_ENTER + #endif + + /* Exit low optimization region - place directly after end of function definition */ + #define LOW_OPTIMIZATION_EXIT + + /* Enter low optimization region - place directly above function definition */ + #if defined( ARM_MATH_CM4 ) || defined( ARM_MATH_CM7) + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER \ + _Pragma ("optimize=low") + #else + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + #endif + + /* Exit low optimization region - place directly after end of function definition */ + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#elif defined(__CSMC__) + #define LOW_OPTIMIZATION_ENTER + #define LOW_OPTIMIZATION_EXIT + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#elif defined(__TASKING__) + #define LOW_OPTIMIZATION_ENTER + #define LOW_OPTIMIZATION_EXIT + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#endif + + +#ifdef __cplusplus +} +#endif + + +#if defined ( __GNUC__ ) +#pragma GCC diagnostic pop +#endif + +#endif /* _ARM_MATH_H */ + +/** + * + * End of file. + */ diff --git a/Core/Inc/button_processing.h b/Core/Inc/button_processing.h new file mode 100644 index 00000000..6a4deca0 --- /dev/null +++ b/Core/Inc/button_processing.h @@ -0,0 +1,49 @@ +/* + * m365 + * + * Copyright (c) 2021 Francois Deslandes + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ +#include +#include "main.h" +#ifndef BUTTON_PROCESSING_H_ +#define BUTTON_PROCESSING_H_ + + +#define DEV_PWR_ON 0x66 +#define DEV_PWR_OFF 0xDD +#define DEV_PWR_RESTART 0xBA + + +typedef enum { + NO_PRESS, + SINGLE_PRESS, + LONG_PRESS, + DOUBLE_PRESS, + VERY_LONG_PRESS +} eButtonEvent ; + +void checkButton(M365State_t *M365State); +void PWR_init(); +void poweroff(void); +int8_t check_power_button_pressed_state(); +void power_control(uint8_t pwr); +void set_mode(M365State_t *M365State); + +#endif /* TASK_PWR_H_ */ diff --git a/Core/Inc/config.h b/Core/Inc/config.h new file mode 100644 index 00000000..07794c1a --- /dev/null +++ b/Core/Inc/config.h @@ -0,0 +1,55 @@ +/* + * config.h + * + * Automatically created by Lishui Parameter Configurator + * Author: stancecoke + */ + +#ifndef CONFIG_H_ +#define CONFIG_H_ +#include "stdint.h" +#define DISPLAY_TYPE_DEBUG (1<<0) // For ASCII-Output in Debug mode); + +#define TRIGGER_OFFSET_ADC 50 +#define TRIGGER_DEFAULT 2020 +#define _T 2028 +#define CAL_BAT_V 14 +#define CAL_V 25 +#define CAL_I 38LL<<8 +#define INDUCTANCE 6LL +#define RESISTANCE 40LL +#define FLUX_LINKAGE 1200LL +#define GAMMA 9LL +#define BATTERY_LEVEL_1 323000 +#define BATTERY_LEVEL_2 329000 +#define BATTERY_LEVEL_3 344000 +#define BATTERY_LEVEL_4 368000 +#define BATTERY_LEVEL_5 380000 +//#define ADCTHROTTLE +#define THROTTLEOFFSET 45 +#define THROTTLEMAX 175 +#define BRAKEOFFSET 40 +#define BRAKEMAX 190 +#define WHEEL_CIRCUMFERENCE 550 //690 for original M365 motor +#define GEAR_RATIO 11 //15 for original M365 motor + + +#define FW_CURRENT_MAX 0 //max id +#define KV 10 //kph*10 per volt + +#define BATTERYCURRENT_MAX 9000 +#define SPEC_ANGLE -167026406L //BionX IGH3 -143165476 + +#define REVERSE -1 + +#define VOLTAGE_MIN 300 +#define REGEN_CURRENT 1000 + + +#define REGEN_CURRENT_MAX 10000 + +#define SPEED_PLL +#define P_FACTOR_PLL 9 //7 for original M365 motor +#define I_FACTOR_PLL 10 //7 for original M365 motor + +#endif /* CONFIG_H_ */ diff --git a/Core/Inc/decr_and_flash.h b/Core/Inc/decr_and_flash.h new file mode 100644 index 00000000..46d5ed9a --- /dev/null +++ b/Core/Inc/decr_and_flash.h @@ -0,0 +1,14 @@ +/* + * decr_and_flash.h + * + * Created on: 21.12.2021 + * Author: Stancecoke + */ + +#ifndef INC_DECR_AND_FLASH_H_ +#define INC_DECR_AND_FLASH_H_ + +int decr_and_flash(uint8_t enc[], uint32_t flash_address, uint16_t update_size, uint8_t packetsize); + + +#endif /* INC_DECR_AND_FLASH_H_ */ diff --git a/Core/Inc/eeprom.h b/Core/Inc/eeprom.h new file mode 100644 index 00000000..0bdbf036 --- /dev/null +++ b/Core/Inc/eeprom.h @@ -0,0 +1,208 @@ +/** + ****************************************************************************** + * @file EEPROM_Emulation/inc/eeprom.h + * @author MCD Application Team + * @brief This file contains all the functions prototypes for the EEPROM + * emulation firmware library. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __EEPROM_H +#define __EEPROM_H + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_hal.h" + +/* Exported constants --------------------------------------------------------*/ +/* Base address of the Flash sectors */ +#define ADDR_FLASH_PAGE_0 ((uint32_t)0x08000000) /* Base @ of Page 0, 1 Kbytes */ +#define ADDR_FLASH_PAGE_1 ((uint32_t)0x08000400) /* Base @ of Page 1, 1 Kbytes */ +#define ADDR_FLASH_PAGE_2 ((uint32_t)0x08000800) /* Base @ of Page 2, 1 Kbytes */ +#define ADDR_FLASH_PAGE_3 ((uint32_t)0x08000C00) /* Base @ of Page 3, 1 Kbytes */ +#define ADDR_FLASH_PAGE_4 ((uint32_t)0x08001000) /* Base @ of Page 4, 1 Kbytes */ +#define ADDR_FLASH_PAGE_5 ((uint32_t)0x08001400) /* Base @ of Page 5, 1 Kbytes */ +#define ADDR_FLASH_PAGE_6 ((uint32_t)0x08001800) /* Base @ of Page 6, 1 Kbytes */ +#define ADDR_FLASH_PAGE_7 ((uint32_t)0x08001C00) /* Base @ of Page 7, 1 Kbytes */ +#define ADDR_FLASH_PAGE_8 ((uint32_t)0x08002000) /* Base @ of Page 8, 1 Kbytes */ +#define ADDR_FLASH_PAGE_9 ((uint32_t)0x08002400) /* Base @ of Page 9, 1 Kbytes */ +#define ADDR_FLASH_PAGE_10 ((uint32_t)0x08002800) /* Base @ of Page 10, 1 Kbytes */ +#define ADDR_FLASH_PAGE_11 ((uint32_t)0x08002C00) /* Base @ of Page 11, 1 Kbytes */ +#define ADDR_FLASH_PAGE_12 ((uint32_t)0x08003000) /* Base @ of Page 12, 1 Kbytes */ +#define ADDR_FLASH_PAGE_13 ((uint32_t)0x08003400) /* Base @ of Page 13, 1 Kbytes */ +#define ADDR_FLASH_PAGE_14 ((uint32_t)0x08003800) /* Base @ of Page 14, 1 Kbytes */ +#define ADDR_FLASH_PAGE_15 ((uint32_t)0x08003C00) /* Base @ of Page 15, 1 Kbytes */ +#define ADDR_FLASH_PAGE_16 ((uint32_t)0x08004000) /* Base @ of Page 16, 1 Kbytes */ +#define ADDR_FLASH_PAGE_17 ((uint32_t)0x08004400) /* Base @ of Page 17, 1 Kbytes */ +#define ADDR_FLASH_PAGE_18 ((uint32_t)0x08004800) /* Base @ of Page 18, 1 Kbytes */ +#define ADDR_FLASH_PAGE_19 ((uint32_t)0x08004C00) /* Base @ of Page 19, 1 Kbytes */ +#define ADDR_FLASH_PAGE_20 ((uint32_t)0x08005000) /* Base @ of Page 20, 1 Kbytes */ +#define ADDR_FLASH_PAGE_21 ((uint32_t)0x08005400) /* Base @ of Page 21, 1 Kbytes */ +#define ADDR_FLASH_PAGE_22 ((uint32_t)0x08005800) /* Base @ of Page 22, 1 Kbytes */ +#define ADDR_FLASH_PAGE_23 ((uint32_t)0x08005C00) /* Base @ of Page 23, 1 Kbytes */ +#define ADDR_FLASH_PAGE_24 ((uint32_t)0x08006000) /* Base @ of Page 24, 1 Kbytes */ +#define ADDR_FLASH_PAGE_25 ((uint32_t)0x08006400) /* Base @ of Page 25, 1 Kbytes */ +#define ADDR_FLASH_PAGE_26 ((uint32_t)0x08006800) /* Base @ of Page 26, 1 Kbytes */ +#define ADDR_FLASH_PAGE_27 ((uint32_t)0x08006C00) /* Base @ of Page 27, 1 Kbytes */ +#define ADDR_FLASH_PAGE_28 ((uint32_t)0x08007000) /* Base @ of Page 28, 1 Kbytes */ +#define ADDR_FLASH_PAGE_29 ((uint32_t)0x08007400) /* Base @ of Page 29, 1 Kbytes */ +#define ADDR_FLASH_PAGE_30 ((uint32_t)0x08007800) /* Base @ of Page 30, 1 Kbytes */ +#define ADDR_FLASH_PAGE_31 ((uint32_t)0x08007C00) /* Base @ of Page 31, 1 Kbytes */ +#define ADDR_FLASH_PAGE_32 ((uint32_t)0x08008000) /* Base @ of Page 32, 1 Kbytes */ +#define ADDR_FLASH_PAGE_33 ((uint32_t)0x08008400) /* Base @ of Page 33, 1 Kbytes */ +#define ADDR_FLASH_PAGE_34 ((uint32_t)0x08008800) /* Base @ of Page 34, 1 Kbytes */ +#define ADDR_FLASH_PAGE_35 ((uint32_t)0x08008C00) /* Base @ of Page 35, 1 Kbytes */ +#define ADDR_FLASH_PAGE_36 ((uint32_t)0x08009000) /* Base @ of Page 36, 1 Kbytes */ +#define ADDR_FLASH_PAGE_37 ((uint32_t)0x08009400) /* Base @ of Page 37, 1 Kbytes */ +#define ADDR_FLASH_PAGE_38 ((uint32_t)0x08009800) /* Base @ of Page 38, 1 Kbytes */ +#define ADDR_FLASH_PAGE_39 ((uint32_t)0x08009C00) /* Base @ of Page 39, 1 Kbytes */ +#define ADDR_FLASH_PAGE_40 ((uint32_t)0x0800A000) /* Base @ of Page 40, 1 Kbytes */ +#define ADDR_FLASH_PAGE_41 ((uint32_t)0x0800A400) /* Base @ of Page 41, 1 Kbytes */ +#define ADDR_FLASH_PAGE_42 ((uint32_t)0x0800A800) /* Base @ of Page 42, 1 Kbytes */ +#define ADDR_FLASH_PAGE_43 ((uint32_t)0x0800AC00) /* Base @ of Page 43, 1 Kbytes */ +#define ADDR_FLASH_PAGE_44 ((uint32_t)0x0800B000) /* Base @ of Page 44, 1 Kbytes */ +#define ADDR_FLASH_PAGE_45 ((uint32_t)0x0800B400) /* Base @ of Page 45, 1 Kbytes */ +#define ADDR_FLASH_PAGE_46 ((uint32_t)0x0800B800) /* Base @ of Page 46, 1 Kbytes */ +#define ADDR_FLASH_PAGE_47 ((uint32_t)0x0800BC00) /* Base @ of Page 47, 1 Kbytes */ +#define ADDR_FLASH_PAGE_48 ((uint32_t)0x0800C000) /* Base @ of Page 48, 1 Kbytes */ +#define ADDR_FLASH_PAGE_49 ((uint32_t)0x0800C400) /* Base @ of Page 49, 1 Kbytes */ +#define ADDR_FLASH_PAGE_50 ((uint32_t)0x0800C800) /* Base @ of Page 50, 1 Kbytes */ +#define ADDR_FLASH_PAGE_51 ((uint32_t)0x0800CC00) /* Base @ of Page 51, 1 Kbytes */ +#define ADDR_FLASH_PAGE_52 ((uint32_t)0x0800D000) /* Base @ of Page 52, 1 Kbytes */ +#define ADDR_FLASH_PAGE_53 ((uint32_t)0x0800D400) /* Base @ of Page 53, 1 Kbytes */ +#define ADDR_FLASH_PAGE_54 ((uint32_t)0x0800D800) /* Base @ of Page 54, 1 Kbytes */ +#define ADDR_FLASH_PAGE_55 ((uint32_t)0x0800DC00) /* Base @ of Page 55, 1 Kbytes */ +#define ADDR_FLASH_PAGE_56 ((uint32_t)0x0800E000) /* Base @ of Page 56, 1 Kbytes */ +#define ADDR_FLASH_PAGE_57 ((uint32_t)0x0800E400) /* Base @ of Page 57, 1 Kbytes */ +#define ADDR_FLASH_PAGE_58 ((uint32_t)0x0800E800) /* Base @ of Page 58, 1 Kbytes */ +#define ADDR_FLASH_PAGE_59 ((uint32_t)0x0800EC00) /* Base @ of Page 59, 1 Kbytes */ +#define ADDR_FLASH_PAGE_60 ((uint32_t)0x0800F000) /* Base @ of Page 60, 1 Kbytes */ +#define ADDR_FLASH_PAGE_61 ((uint32_t)0x0800F400) /* Base @ of Page 61, 1 Kbytes */ +#define ADDR_FLASH_PAGE_62 ((uint32_t)0x0800F800) /* Base @ of Page 62, 1 Kbytes */ +#define ADDR_FLASH_PAGE_63 ((uint32_t)0x0800FC00) /* Base @ of Page 63, 1 Kbytes */ +#define ADDR_FLASH_PAGE_64 ((uint32_t)0x08010000) /* Base @ of Page 64, 1 Kbytes */ +#define ADDR_FLASH_PAGE_65 ((uint32_t)0x08010400) /* Base @ of Page 65, 1 Kbytes */ +#define ADDR_FLASH_PAGE_66 ((uint32_t)0x08010800) /* Base @ of Page 66, 1 Kbytes */ +#define ADDR_FLASH_PAGE_67 ((uint32_t)0x08010C00) /* Base @ of Page 67, 1 Kbytes */ +#define ADDR_FLASH_PAGE_68 ((uint32_t)0x08011000) /* Base @ of Page 68, 1 Kbytes */ +#define ADDR_FLASH_PAGE_69 ((uint32_t)0x08011400) /* Base @ of Page 69, 1 Kbytes */ +#define ADDR_FLASH_PAGE_70 ((uint32_t)0x08011800) /* Base @ of Page 70, 1 Kbytes */ +#define ADDR_FLASH_PAGE_71 ((uint32_t)0x08011C00) /* Base @ of Page 71, 1 Kbytes */ +#define ADDR_FLASH_PAGE_72 ((uint32_t)0x08012000) /* Base @ of Page 72, 1 Kbytes */ +#define ADDR_FLASH_PAGE_73 ((uint32_t)0x08012400) /* Base @ of Page 73, 1 Kbytes */ +#define ADDR_FLASH_PAGE_74 ((uint32_t)0x08012800) /* Base @ of Page 74, 1 Kbytes */ +#define ADDR_FLASH_PAGE_75 ((uint32_t)0x08012C00) /* Base @ of Page 75, 1 Kbytes */ +#define ADDR_FLASH_PAGE_76 ((uint32_t)0x08013000) /* Base @ of Page 76, 1 Kbytes */ +#define ADDR_FLASH_PAGE_77 ((uint32_t)0x08013400) /* Base @ of Page 77, 1 Kbytes */ +#define ADDR_FLASH_PAGE_78 ((uint32_t)0x08013800) /* Base @ of Page 78, 1 Kbytes */ +#define ADDR_FLASH_PAGE_79 ((uint32_t)0x08013C00) /* Base @ of Page 79, 1 Kbytes */ +#define ADDR_FLASH_PAGE_80 ((uint32_t)0x08014000) /* Base @ of Page 80, 1 Kbytes */ +#define ADDR_FLASH_PAGE_81 ((uint32_t)0x08014400) /* Base @ of Page 81, 1 Kbytes */ +#define ADDR_FLASH_PAGE_82 ((uint32_t)0x08014800) /* Base @ of Page 82, 1 Kbytes */ +#define ADDR_FLASH_PAGE_83 ((uint32_t)0x08014C00) /* Base @ of Page 83, 1 Kbytes */ +#define ADDR_FLASH_PAGE_84 ((uint32_t)0x08015000) /* Base @ of Page 84, 1 Kbytes */ +#define ADDR_FLASH_PAGE_85 ((uint32_t)0x08015400) /* Base @ of Page 85, 1 Kbytes */ +#define ADDR_FLASH_PAGE_86 ((uint32_t)0x08015800) /* Base @ of Page 86, 1 Kbytes */ +#define ADDR_FLASH_PAGE_87 ((uint32_t)0x08015C00) /* Base @ of Page 87, 1 Kbytes */ +#define ADDR_FLASH_PAGE_88 ((uint32_t)0x08016000) /* Base @ of Page 88, 1 Kbytes */ +#define ADDR_FLASH_PAGE_89 ((uint32_t)0x08016400) /* Base @ of Page 89, 1 Kbytes */ +#define ADDR_FLASH_PAGE_90 ((uint32_t)0x08016800) /* Base @ of Page 90, 1 Kbytes */ +#define ADDR_FLASH_PAGE_91 ((uint32_t)0x08016C00) /* Base @ of Page 91, 1 Kbytes */ +#define ADDR_FLASH_PAGE_92 ((uint32_t)0x08017000) /* Base @ of Page 92, 1 Kbytes */ +#define ADDR_FLASH_PAGE_93 ((uint32_t)0x08017400) /* Base @ of Page 93, 1 Kbytes */ +#define ADDR_FLASH_PAGE_94 ((uint32_t)0x08017800) /* Base @ of Page 94, 1 Kbytes */ +#define ADDR_FLASH_PAGE_95 ((uint32_t)0x08017C00) /* Base @ of Page 95, 1 Kbytes */ +#define ADDR_FLASH_PAGE_96 ((uint32_t)0x08018000) /* Base @ of Page 96, 1 Kbytes */ +#define ADDR_FLASH_PAGE_97 ((uint32_t)0x08018400) /* Base @ of Page 97, 1 Kbytes */ +#define ADDR_FLASH_PAGE_98 ((uint32_t)0x08018800) /* Base @ of Page 98, 1 Kbytes */ +#define ADDR_FLASH_PAGE_99 ((uint32_t)0x08018C00) /* Base @ of Page 99, 1 Kbytes */ +#define ADDR_FLASH_PAGE_100 ((uint32_t)0x08019000) /* Base @ of Page 100, 1 Kbytes */ +#define ADDR_FLASH_PAGE_101 ((uint32_t)0x08019400) /* Base @ of Page 101, 1 Kbytes */ +#define ADDR_FLASH_PAGE_102 ((uint32_t)0x08019800) /* Base @ of Page 102, 1 Kbytes */ +#define ADDR_FLASH_PAGE_103 ((uint32_t)0x08019C00) /* Base @ of Page 103, 1 Kbytes */ +#define ADDR_FLASH_PAGE_104 ((uint32_t)0x0801A000) /* Base @ of Page 104, 1 Kbytes */ +#define ADDR_FLASH_PAGE_105 ((uint32_t)0x0801A400) /* Base @ of Page 105, 1 Kbytes */ +#define ADDR_FLASH_PAGE_106 ((uint32_t)0x0801A800) /* Base @ of Page 106, 1 Kbytes */ +#define ADDR_FLASH_PAGE_107 ((uint32_t)0x0801AC00) /* Base @ of Page 107, 1 Kbytes */ +#define ADDR_FLASH_PAGE_108 ((uint32_t)0x0801B000) /* Base @ of Page 108, 1 Kbytes */ +#define ADDR_FLASH_PAGE_109 ((uint32_t)0x0801B400) /* Base @ of Page 109, 1 Kbytes */ +#define ADDR_FLASH_PAGE_110 ((uint32_t)0x0801B800) /* Base @ of Page 110, 1 Kbytes */ +#define ADDR_FLASH_PAGE_111 ((uint32_t)0x0801BC00) /* Base @ of Page 111, 1 Kbytes */ +#define ADDR_FLASH_PAGE_112 ((uint32_t)0x0801C000) /* Base @ of Page 112, 1 Kbytes */ +#define ADDR_FLASH_PAGE_113 ((uint32_t)0x0801C400) /* Base @ of Page 113, 1 Kbytes */ +#define ADDR_FLASH_PAGE_114 ((uint32_t)0x0801C800) /* Base @ of Page 114, 1 Kbytes */ +#define ADDR_FLASH_PAGE_115 ((uint32_t)0x0801CC00) /* Base @ of Page 115, 1 Kbytes */ +#define ADDR_FLASH_PAGE_116 ((uint32_t)0x0801D000) /* Base @ of Page 116, 1 Kbytes */ +#define ADDR_FLASH_PAGE_117 ((uint32_t)0x0801D400) /* Base @ of Page 117, 1 Kbytes */ +#define ADDR_FLASH_PAGE_118 ((uint32_t)0x0801D800) /* Base @ of Page 118, 1 Kbytes */ +#define ADDR_FLASH_PAGE_119 ((uint32_t)0x0801DC00) /* Base @ of Page 119, 1 Kbytes */ +#define ADDR_FLASH_PAGE_120 ((uint32_t)0x0801E000) /* Base @ of Page 120, 1 Kbytes */ +#define ADDR_FLASH_PAGE_121 ((uint32_t)0x0801E400) /* Base @ of Page 121, 1 Kbytes */ +#define ADDR_FLASH_PAGE_122 ((uint32_t)0x0801E800) /* Base @ of Page 122, 1 Kbytes */ +#define ADDR_FLASH_PAGE_123 ((uint32_t)0x0801EC00) /* Base @ of Page 123, 1 Kbytes */ +#define ADDR_FLASH_PAGE_124 ((uint32_t)0x0801F000) /* Base @ of Page 124, 1 Kbytes */ +#define ADDR_FLASH_PAGE_125 ((uint32_t)0x0801F400) /* Base @ of Page 125, 1 Kbytes */ +#define ADDR_FLASH_PAGE_126 ((uint32_t)0x0801F800) /* Base @ of Page 126, 1 Kbytes */ +#define ADDR_FLASH_PAGE_127 ((uint32_t)0x0801FC00) /* Base @ of Page 127, 1 Kbytes */ + +/* Define the size of the sectors to be used */ +#define PAGE_SIZE (uint32_t)FLASH_PAGE_SIZE /* Page size */ + +/* EEPROM start address in Flash */ +#define EEPROM_START_ADDRESS ((uint32_t)ADDR_FLASH_PAGE_79) /* EEPROM emulation start address */ + +/* Pages 0 and 1 base and end addresses */ +#define PAGE0_BASE_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + 0x0000)) +#define PAGE0_END_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + (PAGE_SIZE - 1))) +#define PAGE0_ID ADDR_FLASH_PAGE_62 + +#define PAGE1_BASE_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + PAGE_SIZE)) +#define PAGE1_END_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS + PAGE_SIZE + PAGE_SIZE - 1)) +#define PAGE1_ID ADDR_FLASH_PAGE_63 + +/* Used Flash pages for EEPROM emulation */ +#define PAGE0 ((uint16_t)0x0000) +#define PAGE1 ((uint16_t)0x0001) + +/* No valid page define */ +#define NO_VALID_PAGE ((uint16_t)0x00AB) + +/* Page status definitions */ +#define ERASED ((uint16_t)0xFFFF) /* Page is empty */ +#define RECEIVE_DATA ((uint16_t)0xEEEE) /* Page is marked to receive data */ +#define VALID_PAGE ((uint16_t)0x0000) /* Page containing valid data */ + +/* Valid pages in read and write defines */ +#define READ_FROM_VALID_PAGE ((uint8_t)0x00) +#define WRITE_IN_VALID_PAGE ((uint8_t)0x01) + +/* Page full define */ +#define PAGE_FULL ((uint8_t)0x80) + +/* Variables' number */ +#define NB_OF_VAR ((uint8_t)0x03) + +#define EEPROM_POS_SPEC_ANGLE ((uint16_t)0x00) +#define EEPROM_POS_HALL_ORDER ((uint16_t)0x01) + +/* Exported types ------------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ +uint16_t EE_Init(void); +uint16_t EE_ReadVariable(uint16_t VirtAddress, int16_t* Data); +uint16_t EE_WriteVariable(uint16_t VirtAddress, int16_t Data); + +#endif /* __EEPROM_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/Inc/main.h b/Core/Inc/main.h similarity index 53% rename from Inc/main.h rename to Core/Inc/main.h index bd4fa7c6..16df1ad8 100644 --- a/Inc/main.h +++ b/Core/Inc/main.h @@ -1,153 +1,152 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file : main.h - * @brief : Header for main.c file. - * This file contains the common defines of the application. - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2020 STMicroelectronics. - * All rights reserved.

- * - * This software component is licensed by ST under BSD 3-Clause license, - * the "License"; You may not use this file except in compliance with the - * License. You may obtain a copy of the License at: - * opensource.org/licenses/BSD-3-Clause - * - ****************************************************************************** - */ -/* USER CODE END Header */ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __MAIN_H -#define __MAIN_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* Includes ------------------------------------------------------------------*/ -#include "stm32f1xx_hal.h" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -#include -/* USER CODE END Includes */ - -/* Exported types ------------------------------------------------------------*/ -/* USER CODE BEGIN ET */ - -/* USER CODE END ET */ - -/* Exported constants --------------------------------------------------------*/ -/* USER CODE BEGIN EC */ - -/* USER CODE END EC */ - -/* Exported macro ------------------------------------------------------------*/ -/* USER CODE BEGIN EM */ - -/* USER CODE END EM */ - -void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); - -/* Exported functions prototypes ---------------------------------------------*/ -void Error_Handler(void); - -/* USER CODE BEGIN EFP */ - -/* USER CODE END EFP */ - -/* Private defines -----------------------------------------------------------*/ -#define LED_Pin GPIO_PIN_1 -#define LED_GPIO_Port GPIOD -#define Temp_Pin GPIO_PIN_0 -#define Temp_GPIO_Port GPIOA -#define Throttle_Pin GPIO_PIN_1 -#define Throttle_GPIO_Port GPIOA -#define Batt_Voltage_Pin GPIO_PIN_2 -#define Batt_Voltage_GPIO_Port GPIOA -#define Phase_Current_1_Pin GPIO_PIN_3 -#define Phase_Current_1_GPIO_Port GPIOA -#define Phase_Current_2_Pin GPIO_PIN_4 -#define Phase_Current_2_GPIO_Port GPIOA -#define Phase_Current_3_Pin GPIO_PIN_5 -#define Phase_Current_3_GPIO_Port GPIOA -#define Phase_Voltage_1_Pin GPIO_PIN_6 -#define Phase_Voltage_1_GPIO_Port GPIOA -#define Phase_Voltage_2_Pin GPIO_PIN_7 -#define Phase_Voltage_2_GPIO_Port GPIOA -#define Phase_Voltage_3_Pin GPIO_PIN_1 -#define Phase_Voltage_3_GPIO_Port GPIOB -#define HALL_3_Pin GPIO_PIN_0 -#define HALL_3_GPIO_Port GPIOB -#define HALL_1_Pin GPIO_PIN_4 -#define HALL_1_GPIO_Port GPIOB -#define HALL_2_Pin GPIO_PIN_5 -#define HALL_2_GPIO_Port GPIOB -/* USER CODE BEGIN Private defines */ - -#define PUSHASSIST_CURRENT 30 - -int32_t map (int32_t x, int32_t in_min, int32_t in_max, int32_t out_min, int32_t out_max); - -extern q31_t switchtime[3]; -extern uint32_t ui32_tim1_counter; -extern uint32_t uint32_PAS_counter; - -typedef struct -{ - - q31_t Voltage; - uint32_t Speed; - q31_t i_d; - q31_t i_q; - q31_t u_d; - q31_t u_q; - q31_t u_abs; - q31_t Battery_Current; - uint8_t hall_angle_detect_flag; - uint8_t char_dyn_adc_state; - uint8_t assist_level; - uint8_t regen_level; - int8_t Temperature; - int8_t system_state; - int8_t gear_state; - int8_t error_state; - -}MotorState_t; - -typedef struct -{ - - uint16_t wheel_cirumference; - uint16_t p_Iq; - uint16_t i_Iq; - uint16_t p_Id; - uint16_t i_Id; - uint16_t TS_coeff; - uint16_t PAS_timeout; - uint16_t ramp_end; - uint16_t throttle_offset; - uint16_t throttle_max; - uint16_t gear_ratio; - uint8_t speedLimit; - uint8_t pulses_per_revolution; - uint16_t phase_current_max; - uint16_t spec_angle; - - -}MotorParams_t; - -void _Error_Handler(char *, int); - -/* USER CODE END Private defines */ - -#ifdef __cplusplus -} -#endif - -#endif /* __MAIN_H */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.h + * @brief : Header for main.c file. + * This file contains the common defines of the application. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __MAIN_H +#define __MAIN_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_hal.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include +#include +#include +#include +/* USER CODE END Includes */ + +/* Exported types ------------------------------------------------------------*/ +/* USER CODE BEGIN ET */ + +/* USER CODE END ET */ + +/* Exported constants --------------------------------------------------------*/ +/* USER CODE BEGIN EC */ + +/* USER CODE END EC */ + +/* Exported macro ------------------------------------------------------------*/ +/* USER CODE BEGIN EM */ + +/* USER CODE END EM */ + +void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); + +/* Exported functions prototypes ---------------------------------------------*/ +void Error_Handler(void); + +/* USER CODE BEGIN EFP */ + +/* USER CODE END EFP */ + +/* Private defines -----------------------------------------------------------*/ +#define LED_Pin GPIO_PIN_1 +#define LED_GPIO_Port GPIOD +#define UART1_Tx_Pin GPIO_PIN_6 +#define UART1_Tx_GPIO_Port GPIOB +#define BrakeLight_Pin GPIO_PIN_15 +#define BrakeLight_GPIO_Port GPIOA +#define Temp_Pin GPIO_PIN_0 +#define Temp_GPIO_Port GPIOA +#define Throttle_Pin GPIO_PIN_1 +#define Throttle_GPIO_Port GPIOA +#define Batt_Voltage_Pin GPIO_PIN_2 +#define Batt_Voltage_GPIO_Port GPIOA +#define Phase_Current_1_Pin GPIO_PIN_3 +#define Phase_Current_1_GPIO_Port GPIOA +#define Phase_Current_2_Pin GPIO_PIN_4 +#define Phase_Current_2_GPIO_Port GPIOA +#define Phase_Current_3_Pin GPIO_PIN_5 +#define Phase_Current_3_GPIO_Port GPIOA +#define Phase_Voltage_1_Pin GPIO_PIN_6 +#define Phase_Voltage_1_GPIO_Port GPIOA +#define Phase_Voltage_2_Pin GPIO_PIN_7 +#define Phase_Voltage_2_GPIO_Port GPIOA +#define Phase_Voltage_3_Pin GPIO_PIN_1 +#define Phase_Voltage_3_GPIO_Port GPIOB +#define HALL_3_Pin GPIO_PIN_0 +#define HALL_3_GPIO_Port GPIOB +#define HALL_1_Pin GPIO_PIN_4 +#define HALL_1_GPIO_Port GPIOB +#define HALL_2_Pin GPIO_PIN_5 +#define HALL_2_GPIO_Port GPIOB + +#define PWR_BTN_Pin GPIO_PIN_14 +#define PWR_BTN_GPIO_Port GPIOC +#define TPS_ENA_Pin GPIO_PIN_15 +#define TPS_ENA_GPIO_Port GPIOC +/* USER CODE BEGIN Private defines */ + +#define PUSHASSIST_CURRENT 30 +#define SIXSTEPTHRESHOLD 9000 + +#define SPEEDLIMIT_ECO 20 +#define SPEEDLIMIT_NORMAL 25 +#define SPEEDLIMIT_SPORT 50 +#define PH_CURRENT_MAX_ECO 500 +#define PH_CURRENT_MAX_NORMAL 1000 +#define PH_CURRENT_MAX_SPORT 1500 + +typedef struct { + q31_t Voltage; + int16_t phase_current_limit; + q31_t Battery_Current; + uint8_t hall_angle_detect_flag; + uint8_t char_dyn_adc_state; + uint8_t assist_level; + uint8_t regen_level; + int8_t Temperature; + int8_t mode; + bool light; + bool beep; + uint8_t shutdown; + q31_t i_q_setpoint; + int32_t i_q_setpoint_target; + uint32_t speed; + int8_t speed_limit; +} M365State_t; + +int32_t map(int32_t x, int32_t in_min, int32_t in_max, int32_t out_min, + int32_t out_max); + +extern q31_t switchtime[3]; +extern uint32_t uint32_PAS_counter; + +void UserSysTickHandler(); + +void calculate_tic_limits(int8_t speed_limit); + +void _Error_Handler(char*, int); + +/* USER CODE END Private defines */ + +#ifdef __cplusplus +} +#endif + +#endif /* __MAIN_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/Core/Inc/motor.h b/Core/Inc/motor.h new file mode 100644 index 00000000..f87bbfd3 --- /dev/null +++ b/Core/Inc/motor.h @@ -0,0 +1,109 @@ +#pragma once + +#include +#include +#include "main.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define ADC_VOLTAGE 0 +#define ADC_THROTTLE 1 +#define ADC_TEMP 2 +#define ADC_CHANA 3 +#define ADC_CHANB 4 +#define ADC_CHANC 5 + +// motor hall sensor pins +#define HALL_3_Pin GPIO_PIN_0 +#define HALL_3_GPIO_Port GPIOB +#define HALL_1_Pin GPIO_PIN_4 +#define HALL_1_GPIO_Port GPIOB +#define HALL_2_Pin GPIO_PIN_5 +#define HALL_2_GPIO_Port GPIOB + +//#define FAST_LOOP_LOG +//#define DISABLE_DYNAMIC_ADC + +#define P_FACTOR_I_Q 100 +#define I_FACTOR_I_Q 2 +#define P_FACTOR_I_D 1 +#define I_FACTOR_I_D 1 +#define MAX_D_FACTOR 1 + +#define PUSHASSIST_CURRENT 30 +#define SIXSTEPTHRESHOLD 9000 + +typedef struct { + q31_t i_d; + q31_t i_q; + q31_t i_q_setpoint; + q31_t i_d_setpoint; + q31_t i_setpoint_abs; + int32_t i_q_setpoint_temp; + int32_t i_d_setpoint_temp; + q31_t u_d; + q31_t u_q; + q31_t u_abs; + q31_t Battery_Current; + uint8_t hall_angle_detect_flag; + uint8_t char_dyn_adc_state; + uint8_t assist_level; + uint8_t regen_level; + int8_t Temperature; + int8_t system_state; + int8_t error_state; + uint8_t shutdown; + int8_t speed_limit; + int16_t phase_current_limit; + int16_t spec_angle; +} MotorState_t; + +typedef struct { + q31_t i_d; + q31_t i_q; + q31_t i_q_setpoint; + q31_t i_d_setpoint; + q31_t u_d; + q31_t u_q; + q31_t u_abs; + q31_t Battery_Current; + uint8_t hall_angle_detect_flag; + uint8_t assist_level; + uint8_t regen_level; + int8_t Temperature; + int8_t system_state; + int8_t mode; + int8_t error_state; + bool light; + bool beep; + uint8_t shutdown; + int16_t phase_current_limit; + uint16_t adcData[6]; // buffer for ADC1 inputs + int8_t speed_limit; +} MotorStatePublic_t; + +enum { + Stop, + SixStep, + Interpolation, + PLL +}; + +enum modes { + eco = 2, + normal = 0, + sport = 4 +}; + +enum errors {hall=1,lowbattery=2,overcurrent=4}; + +void motor_init(volatile MotorStatePublic_t* p_MotorStatePublic); +void motor_autodetect(); +void runPIcontrol(); +void motor_slow_loop(volatile MotorStatePublic_t* p_MotorStatePublic, M365State_t* p_M365State); + +#ifdef __cplusplus +} +#endif diff --git a/Inc/print.h b/Core/Inc/print.h similarity index 90% rename from Inc/print.h rename to Core/Inc/print.h index d3ddf37f..46c3885b 100644 --- a/Inc/print.h +++ b/Core/Inc/print.h @@ -1,18 +1,14 @@ -/* - * print.h - * - * Created on: 26.01.2019 - * Author: Admin - */ - - -#ifndef _print -#define _print - -int printf_(const char *format, ...); -int sprintf_(char *buffer, const char *format, ...); - - - - -#endif /* PRINT_H_ */ +/* + * print.h + * + * Created on: 26.01.2019 + * Author: Admin + */ + +#ifndef _print +#define _print + +int printf_(const char *format, ...); +int sprintf_(char *buffer, const char *format, ...); + +#endif /* PRINT_H_ */ diff --git a/Inc/stm32f1xx_hal_conf.h b/Core/Inc/stm32f1xx_hal_conf.h similarity index 82% rename from Inc/stm32f1xx_hal_conf.h rename to Core/Inc/stm32f1xx_hal_conf.h index 525012bf..4dab6091 100644 --- a/Inc/stm32f1xx_hal_conf.h +++ b/Core/Inc/stm32f1xx_hal_conf.h @@ -1,391 +1,391 @@ -/** - ****************************************************************************** - * @file stm32f1xx_hal_conf.h - * @brief HAL configuration file. - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2017 STMicroelectronics. - * All rights reserved.

- * - * This software component is licensed by ST under BSD 3-Clause license, - * the "License"; You may not use this file except in compliance with the - * License. You may obtain a copy of the License at: - * opensource.org/licenses/BSD-3-Clause - * - ****************************************************************************** - */ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __STM32F1xx_HAL_CONF_H -#define __STM32F1xx_HAL_CONF_H - -#ifdef __cplusplus - extern "C" { -#endif - -/* Exported types ------------------------------------------------------------*/ -/* Exported constants --------------------------------------------------------*/ - -/* ########################## Module Selection ############################## */ -/** - * @brief This is the list of modules to be used in the HAL driver - */ - -#define HAL_MODULE_ENABLED - #define HAL_ADC_MODULE_ENABLED -/*#define HAL_CRYP_MODULE_ENABLED */ -/*#define HAL_CAN_MODULE_ENABLED */ -/*#define HAL_CAN_LEGACY_MODULE_ENABLED */ -/*#define HAL_CEC_MODULE_ENABLED */ -/*#define HAL_CORTEX_MODULE_ENABLED */ -/*#define HAL_CRC_MODULE_ENABLED */ -/*#define HAL_DAC_MODULE_ENABLED */ -#define HAL_DMA_MODULE_ENABLED -/*#define HAL_ETH_MODULE_ENABLED */ -/*#define HAL_FLASH_MODULE_ENABLED */ -#define HAL_GPIO_MODULE_ENABLED -/*#define HAL_I2C_MODULE_ENABLED */ -/*#define HAL_I2S_MODULE_ENABLED */ -/*#define HAL_IRDA_MODULE_ENABLED */ -/*#define HAL_IWDG_MODULE_ENABLED */ -/*#define HAL_NOR_MODULE_ENABLED */ -/*#define HAL_NAND_MODULE_ENABLED */ -/*#define HAL_PCCARD_MODULE_ENABLED */ -/*#define HAL_PCD_MODULE_ENABLED */ -/*#define HAL_HCD_MODULE_ENABLED */ -/*#define HAL_PWR_MODULE_ENABLED */ -/*#define HAL_RCC_MODULE_ENABLED */ -/*#define HAL_RTC_MODULE_ENABLED */ -/*#define HAL_SD_MODULE_ENABLED */ -/*#define HAL_MMC_MODULE_ENABLED */ -/*#define HAL_SDRAM_MODULE_ENABLED */ -/*#define HAL_SMARTCARD_MODULE_ENABLED */ -/*#define HAL_SPI_MODULE_ENABLED */ -/*#define HAL_SRAM_MODULE_ENABLED */ -#define HAL_TIM_MODULE_ENABLED -#define HAL_UART_MODULE_ENABLED -/*#define HAL_USART_MODULE_ENABLED */ -/*#define HAL_WWDG_MODULE_ENABLED */ - -#define HAL_CORTEX_MODULE_ENABLED -#define HAL_DMA_MODULE_ENABLED -#define HAL_FLASH_MODULE_ENABLED -#define HAL_EXTI_MODULE_ENABLED -#define HAL_GPIO_MODULE_ENABLED -#define HAL_PWR_MODULE_ENABLED -#define HAL_RCC_MODULE_ENABLED - -/* ########################## Oscillator Values adaptation ####################*/ -/** - * @brief Adjust the value of External High Speed oscillator (HSE) used in your application. - * This value is used by the RCC HAL module to compute the system frequency - * (when HSE is used as system clock source, directly or through the PLL). - */ -#if !defined (HSE_VALUE) - #define HSE_VALUE 8000000U /*!< Value of the External oscillator in Hz */ -#endif /* HSE_VALUE */ - -#if !defined (HSE_STARTUP_TIMEOUT) - #define HSE_STARTUP_TIMEOUT 100U /*!< Time out for HSE start up, in ms */ -#endif /* HSE_STARTUP_TIMEOUT */ - -/** - * @brief Internal High Speed oscillator (HSI) value. - * This value is used by the RCC HAL module to compute the system frequency - * (when HSI is used as system clock source, directly or through the PLL). - */ -#if !defined (HSI_VALUE) - #define HSI_VALUE 8000000U /*!< Value of the Internal oscillator in Hz*/ -#endif /* HSI_VALUE */ - -/** - * @brief Internal Low Speed oscillator (LSI) value. - */ -#if !defined (LSI_VALUE) - #define LSI_VALUE 40000U /*!< LSI Typical Value in Hz */ -#endif /* LSI_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz - The real value may vary depending on the variations - in voltage and temperature. */ - -/** - * @brief External Low Speed oscillator (LSE) value. - * This value is used by the UART, RTC HAL module to compute the system frequency - */ -#if !defined (LSE_VALUE) - #define LSE_VALUE 32768U /*!< Value of the External oscillator in Hz*/ -#endif /* LSE_VALUE */ - -#if !defined (LSE_STARTUP_TIMEOUT) - #define LSE_STARTUP_TIMEOUT 5000U /*!< Time out for LSE start up, in ms */ -#endif /* LSE_STARTUP_TIMEOUT */ - -/* Tip: To avoid modifying this file each time you need to use different HSE, - === you can define the HSE value in your toolchain compiler preprocessor. */ - -/* ########################### System Configuration ######################### */ -/** - * @brief This is the HAL system configuration section - */ -#define VDD_VALUE 3300U /*!< Value of VDD in mv */ -#define TICK_INT_PRIORITY 0U /*!< tick interrupt priority (lowest by default) */ -#define USE_RTOS 0U -#define PREFETCH_ENABLE 1U - -#define USE_HAL_ADC_REGISTER_CALLBACKS 0U /* ADC register callback disabled */ -#define USE_HAL_CAN_REGISTER_CALLBACKS 0U /* CAN register callback disabled */ -#define USE_HAL_CEC_REGISTER_CALLBACKS 0U /* CEC register callback disabled */ -#define USE_HAL_DAC_REGISTER_CALLBACKS 0U /* DAC register callback disabled */ -#define USE_HAL_ETH_REGISTER_CALLBACKS 0U /* ETH register callback disabled */ -#define USE_HAL_HCD_REGISTER_CALLBACKS 0U /* HCD register callback disabled */ -#define USE_HAL_I2C_REGISTER_CALLBACKS 0U /* I2C register callback disabled */ -#define USE_HAL_I2S_REGISTER_CALLBACKS 0U /* I2S register callback disabled */ -#define USE_HAL_MMC_REGISTER_CALLBACKS 0U /* MMC register callback disabled */ -#define USE_HAL_NAND_REGISTER_CALLBACKS 0U /* NAND register callback disabled */ -#define USE_HAL_NOR_REGISTER_CALLBACKS 0U /* NOR register callback disabled */ -#define USE_HAL_PCCARD_REGISTER_CALLBACKS 0U /* PCCARD register callback disabled */ -#define USE_HAL_PCD_REGISTER_CALLBACKS 0U /* PCD register callback disabled */ -#define USE_HAL_RTC_REGISTER_CALLBACKS 0U /* RTC register callback disabled */ -#define USE_HAL_SD_REGISTER_CALLBACKS 0U /* SD register callback disabled */ -#define USE_HAL_SMARTCARD_REGISTER_CALLBACKS 0U /* SMARTCARD register callback disabled */ -#define USE_HAL_IRDA_REGISTER_CALLBACKS 0U /* IRDA register callback disabled */ -#define USE_HAL_SRAM_REGISTER_CALLBACKS 0U /* SRAM register callback disabled */ -#define USE_HAL_SPI_REGISTER_CALLBACKS 0U /* SPI register callback disabled */ -#define USE_HAL_TIM_REGISTER_CALLBACKS 0U /* TIM register callback disabled */ -#define USE_HAL_UART_REGISTER_CALLBACKS 0U /* UART register callback disabled */ -#define USE_HAL_USART_REGISTER_CALLBACKS 0U /* USART register callback disabled */ -#define USE_HAL_WWDG_REGISTER_CALLBACKS 0U /* WWDG register callback disabled */ - -/* ########################## Assert Selection ############################## */ -/** - * @brief Uncomment the line below to expanse the "assert_param" macro in the - * HAL drivers code - */ -/* #define USE_FULL_ASSERT 1U */ - -/* ################## Ethernet peripheral configuration ##################### */ - -/* Section 1 : Ethernet peripheral configuration */ - -/* MAC ADDRESS: MAC_ADDR0:MAC_ADDR1:MAC_ADDR2:MAC_ADDR3:MAC_ADDR4:MAC_ADDR5 */ -#define MAC_ADDR0 2U -#define MAC_ADDR1 0U -#define MAC_ADDR2 0U -#define MAC_ADDR3 0U -#define MAC_ADDR4 0U -#define MAC_ADDR5 0U - -/* Definition of the Ethernet driver buffers size and count */ -#define ETH_RX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for receive */ -#define ETH_TX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for transmit */ -#define ETH_RXBUFNB 8U /* 4 Rx buffers of size ETH_RX_BUF_SIZE */ -#define ETH_TXBUFNB 4U /* 4 Tx buffers of size ETH_TX_BUF_SIZE */ - -/* Section 2: PHY configuration section */ - -/* DP83848_PHY_ADDRESS Address*/ -#define DP83848_PHY_ADDRESS 0x01U -/* PHY Reset delay these values are based on a 1 ms Systick interrupt*/ -#define PHY_RESET_DELAY 0x000000FFU -/* PHY Configuration delay */ -#define PHY_CONFIG_DELAY 0x00000FFFU - -#define PHY_READ_TO 0x0000FFFFU -#define PHY_WRITE_TO 0x0000FFFFU - -/* Section 3: Common PHY Registers */ - -#define PHY_BCR ((uint16_t)0x00) /*!< Transceiver Basic Control Register */ -#define PHY_BSR ((uint16_t)0x01) /*!< Transceiver Basic Status Register */ - -#define PHY_RESET ((uint16_t)0x8000) /*!< PHY Reset */ -#define PHY_LOOPBACK ((uint16_t)0x4000) /*!< Select loop-back mode */ -#define PHY_FULLDUPLEX_100M ((uint16_t)0x2100) /*!< Set the full-duplex mode at 100 Mb/s */ -#define PHY_HALFDUPLEX_100M ((uint16_t)0x2000) /*!< Set the half-duplex mode at 100 Mb/s */ -#define PHY_FULLDUPLEX_10M ((uint16_t)0x0100) /*!< Set the full-duplex mode at 10 Mb/s */ -#define PHY_HALFDUPLEX_10M ((uint16_t)0x0000) /*!< Set the half-duplex mode at 10 Mb/s */ -#define PHY_AUTONEGOTIATION ((uint16_t)0x1000) /*!< Enable auto-negotiation function */ -#define PHY_RESTART_AUTONEGOTIATION ((uint16_t)0x0200) /*!< Restart auto-negotiation function */ -#define PHY_POWERDOWN ((uint16_t)0x0800) /*!< Select the power down mode */ -#define PHY_ISOLATE ((uint16_t)0x0400) /*!< Isolate PHY from MII */ - -#define PHY_AUTONEGO_COMPLETE ((uint16_t)0x0020) /*!< Auto-Negotiation process completed */ -#define PHY_LINKED_STATUS ((uint16_t)0x0004) /*!< Valid link established */ -#define PHY_JABBER_DETECTION ((uint16_t)0x0002) /*!< Jabber condition detected */ - -/* Section 4: Extended PHY Registers */ -#define PHY_SR ((uint16_t)0x10U) /*!< PHY status register Offset */ - -#define PHY_SPEED_STATUS ((uint16_t)0x0002U) /*!< PHY Speed mask */ -#define PHY_DUPLEX_STATUS ((uint16_t)0x0004U) /*!< PHY Duplex mask */ - -/* ################## SPI peripheral configuration ########################## */ - -/* CRC FEATURE: Use to activate CRC feature inside HAL SPI Driver -* Activated: CRC code is present inside driver -* Deactivated: CRC code cleaned from driver -*/ - -#define USE_SPI_CRC 0U - -/* Includes ------------------------------------------------------------------*/ -/** - * @brief Include module's header file - */ - -#ifdef HAL_RCC_MODULE_ENABLED -#include "stm32f1xx_hal_rcc.h" -#endif /* HAL_RCC_MODULE_ENABLED */ - -#ifdef HAL_GPIO_MODULE_ENABLED -#include "stm32f1xx_hal_gpio.h" -#endif /* HAL_GPIO_MODULE_ENABLED */ - -#ifdef HAL_EXTI_MODULE_ENABLED -#include "stm32f1xx_hal_exti.h" -#endif /* HAL_EXTI_MODULE_ENABLED */ - -#ifdef HAL_DMA_MODULE_ENABLED -#include "stm32f1xx_hal_dma.h" -#endif /* HAL_DMA_MODULE_ENABLED */ - -#ifdef HAL_ETH_MODULE_ENABLED -#include "stm32f1xx_hal_eth.h" -#endif /* HAL_ETH_MODULE_ENABLED */ - -#ifdef HAL_CAN_MODULE_ENABLED -#include "stm32f1xx_hal_can.h" -#endif /* HAL_CAN_MODULE_ENABLED */ - -#ifdef HAL_CAN_LEGACY_MODULE_ENABLED - #include "Legacy/stm32f1xx_hal_can_legacy.h" -#endif /* HAL_CAN_LEGACY_MODULE_ENABLED */ - -#ifdef HAL_CEC_MODULE_ENABLED -#include "stm32f1xx_hal_cec.h" -#endif /* HAL_CEC_MODULE_ENABLED */ - -#ifdef HAL_CORTEX_MODULE_ENABLED -#include "stm32f1xx_hal_cortex.h" -#endif /* HAL_CORTEX_MODULE_ENABLED */ - -#ifdef HAL_ADC_MODULE_ENABLED -#include "stm32f1xx_hal_adc.h" -#endif /* HAL_ADC_MODULE_ENABLED */ - -#ifdef HAL_CRC_MODULE_ENABLED -#include "stm32f1xx_hal_crc.h" -#endif /* HAL_CRC_MODULE_ENABLED */ - -#ifdef HAL_DAC_MODULE_ENABLED -#include "stm32f1xx_hal_dac.h" -#endif /* HAL_DAC_MODULE_ENABLED */ - -#ifdef HAL_FLASH_MODULE_ENABLED -#include "stm32f1xx_hal_flash.h" -#endif /* HAL_FLASH_MODULE_ENABLED */ - -#ifdef HAL_SRAM_MODULE_ENABLED -#include "stm32f1xx_hal_sram.h" -#endif /* HAL_SRAM_MODULE_ENABLED */ - -#ifdef HAL_NOR_MODULE_ENABLED -#include "stm32f1xx_hal_nor.h" -#endif /* HAL_NOR_MODULE_ENABLED */ - -#ifdef HAL_I2C_MODULE_ENABLED -#include "stm32f1xx_hal_i2c.h" -#endif /* HAL_I2C_MODULE_ENABLED */ - -#ifdef HAL_I2S_MODULE_ENABLED -#include "stm32f1xx_hal_i2s.h" -#endif /* HAL_I2S_MODULE_ENABLED */ - -#ifdef HAL_IWDG_MODULE_ENABLED -#include "stm32f1xx_hal_iwdg.h" -#endif /* HAL_IWDG_MODULE_ENABLED */ - -#ifdef HAL_PWR_MODULE_ENABLED -#include "stm32f1xx_hal_pwr.h" -#endif /* HAL_PWR_MODULE_ENABLED */ - -#ifdef HAL_RTC_MODULE_ENABLED -#include "stm32f1xx_hal_rtc.h" -#endif /* HAL_RTC_MODULE_ENABLED */ - -#ifdef HAL_PCCARD_MODULE_ENABLED -#include "stm32f1xx_hal_pccard.h" -#endif /* HAL_PCCARD_MODULE_ENABLED */ - -#ifdef HAL_SD_MODULE_ENABLED -#include "stm32f1xx_hal_sd.h" -#endif /* HAL_SD_MODULE_ENABLED */ - -#ifdef HAL_NAND_MODULE_ENABLED -#include "stm32f1xx_hal_nand.h" -#endif /* HAL_NAND_MODULE_ENABLED */ - -#ifdef HAL_SPI_MODULE_ENABLED -#include "stm32f1xx_hal_spi.h" -#endif /* HAL_SPI_MODULE_ENABLED */ - -#ifdef HAL_TIM_MODULE_ENABLED -#include "stm32f1xx_hal_tim.h" -#endif /* HAL_TIM_MODULE_ENABLED */ - -#ifdef HAL_UART_MODULE_ENABLED -#include "stm32f1xx_hal_uart.h" -#endif /* HAL_UART_MODULE_ENABLED */ - -#ifdef HAL_USART_MODULE_ENABLED -#include "stm32f1xx_hal_usart.h" -#endif /* HAL_USART_MODULE_ENABLED */ - -#ifdef HAL_IRDA_MODULE_ENABLED -#include "stm32f1xx_hal_irda.h" -#endif /* HAL_IRDA_MODULE_ENABLED */ - -#ifdef HAL_SMARTCARD_MODULE_ENABLED -#include "stm32f1xx_hal_smartcard.h" -#endif /* HAL_SMARTCARD_MODULE_ENABLED */ - -#ifdef HAL_WWDG_MODULE_ENABLED -#include "stm32f1xx_hal_wwdg.h" -#endif /* HAL_WWDG_MODULE_ENABLED */ - -#ifdef HAL_PCD_MODULE_ENABLED -#include "stm32f1xx_hal_pcd.h" -#endif /* HAL_PCD_MODULE_ENABLED */ - -#ifdef HAL_HCD_MODULE_ENABLED -#include "stm32f1xx_hal_hcd.h" -#endif /* HAL_HCD_MODULE_ENABLED */ - -#ifdef HAL_MMC_MODULE_ENABLED -#include "stm32f1xx_hal_mmc.h" -#endif /* HAL_MMC_MODULE_ENABLED */ - -/* Exported macro ------------------------------------------------------------*/ -#ifdef USE_FULL_ASSERT -/** - * @brief The assert_param macro is used for function's parameters check. - * @param expr If expr is false, it calls assert_failed function - * which reports the name of the source file and the source - * line number of the call that failed. - * If expr is true, it returns no value. - * @retval None - */ -#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__)) -/* Exported functions ------------------------------------------------------- */ -void assert_failed(uint8_t* file, uint32_t line); -#else -#define assert_param(expr) ((void)0U) -#endif /* USE_FULL_ASSERT */ - -#ifdef __cplusplus -} -#endif - -#endif /* __STM32F1xx_HAL_CONF_H */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ +/** + ****************************************************************************** + * @file stm32f1xx_hal_conf.h + * @brief HAL configuration file. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F1xx_HAL_CONF_H +#define __STM32F1xx_HAL_CONF_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ + +/* ########################## Module Selection ############################## */ +/** + * @brief This is the list of modules to be used in the HAL driver + */ + +#define HAL_MODULE_ENABLED +#define HAL_ADC_MODULE_ENABLED +/*#define HAL_CRYP_MODULE_ENABLED */ +/*#define HAL_CAN_MODULE_ENABLED */ +/*#define HAL_CAN_LEGACY_MODULE_ENABLED */ +/*#define HAL_CEC_MODULE_ENABLED */ +/*#define HAL_CORTEX_MODULE_ENABLED */ +/*#define HAL_CRC_MODULE_ENABLED */ +/*#define HAL_DAC_MODULE_ENABLED */ +#define HAL_DMA_MODULE_ENABLED +/*#define HAL_ETH_MODULE_ENABLED */ +/*#define HAL_FLASH_MODULE_ENABLED */ +#define HAL_GPIO_MODULE_ENABLED +/*#define HAL_I2C_MODULE_ENABLED */ +/*#define HAL_I2S_MODULE_ENABLED */ +/*#define HAL_IRDA_MODULE_ENABLED */ +/*#define HAL_IWDG_MODULE_ENABLED */ +/*#define HAL_NOR_MODULE_ENABLED */ +/*#define HAL_NAND_MODULE_ENABLED */ +/*#define HAL_PCCARD_MODULE_ENABLED */ +/*#define HAL_PCD_MODULE_ENABLED */ +/*#define HAL_HCD_MODULE_ENABLED */ +/*#define HAL_PWR_MODULE_ENABLED */ +/*#define HAL_RCC_MODULE_ENABLED */ +/*#define HAL_RTC_MODULE_ENABLED */ +/*#define HAL_SD_MODULE_ENABLED */ +/*#define HAL_MMC_MODULE_ENABLED */ +/*#define HAL_SDRAM_MODULE_ENABLED */ +/*#define HAL_SMARTCARD_MODULE_ENABLED */ +/*#define HAL_SPI_MODULE_ENABLED */ +/*#define HAL_SRAM_MODULE_ENABLED */ +#define HAL_TIM_MODULE_ENABLED +#define HAL_UART_MODULE_ENABLED +/*#define HAL_USART_MODULE_ENABLED */ +/*#define HAL_WWDG_MODULE_ENABLED */ + +#define HAL_CORTEX_MODULE_ENABLED +#define HAL_DMA_MODULE_ENABLED +#define HAL_FLASH_MODULE_ENABLED +#define HAL_EXTI_MODULE_ENABLED +#define HAL_GPIO_MODULE_ENABLED +#define HAL_PWR_MODULE_ENABLED +#define HAL_RCC_MODULE_ENABLED + +/* ########################## Oscillator Values adaptation ####################*/ +/** + * @brief Adjust the value of External High Speed oscillator (HSE) used in your application. + * This value is used by the RCC HAL module to compute the system frequency + * (when HSE is used as system clock source, directly or through the PLL). + */ +#if !defined (HSE_VALUE) +#define HSE_VALUE 8000000U /*!< Value of the External oscillator in Hz */ +#endif /* HSE_VALUE */ + +#if !defined (HSE_STARTUP_TIMEOUT) +#define HSE_STARTUP_TIMEOUT 100U /*!< Time out for HSE start up, in ms */ +#endif /* HSE_STARTUP_TIMEOUT */ + +/** + * @brief Internal High Speed oscillator (HSI) value. + * This value is used by the RCC HAL module to compute the system frequency + * (when HSI is used as system clock source, directly or through the PLL). + */ +#if !defined (HSI_VALUE) +#define HSI_VALUE 8000000U /*!< Value of the Internal oscillator in Hz*/ +#endif /* HSI_VALUE */ + +/** + * @brief Internal Low Speed oscillator (LSI) value. + */ +#if !defined (LSI_VALUE) +#define LSI_VALUE 40000U /*!< LSI Typical Value in Hz */ +#endif /* LSI_VALUE */ /*!< Value of the Internal Low Speed oscillator in Hz + The real value may vary depending on the variations + in voltage and temperature. */ + +/** + * @brief External Low Speed oscillator (LSE) value. + * This value is used by the UART, RTC HAL module to compute the system frequency + */ +#if !defined (LSE_VALUE) +#define LSE_VALUE 32768U /*!< Value of the External oscillator in Hz*/ +#endif /* LSE_VALUE */ + +#if !defined (LSE_STARTUP_TIMEOUT) +#define LSE_STARTUP_TIMEOUT 5000U /*!< Time out for LSE start up, in ms */ +#endif /* LSE_STARTUP_TIMEOUT */ + +/* Tip: To avoid modifying this file each time you need to use different HSE, + === you can define the HSE value in your toolchain compiler preprocessor. */ + +/* ########################### System Configuration ######################### */ +/** + * @brief This is the HAL system configuration section + */ +#define VDD_VALUE 3300U /*!< Value of VDD in mv */ +#define TICK_INT_PRIORITY 0U /*!< tick interrupt priority (lowest by default) */ +#define USE_RTOS 0U +#define PREFETCH_ENABLE 1U + +#define USE_HAL_ADC_REGISTER_CALLBACKS 0U /* ADC register callback disabled */ +#define USE_HAL_CAN_REGISTER_CALLBACKS 0U /* CAN register callback disabled */ +#define USE_HAL_CEC_REGISTER_CALLBACKS 0U /* CEC register callback disabled */ +#define USE_HAL_DAC_REGISTER_CALLBACKS 0U /* DAC register callback disabled */ +#define USE_HAL_ETH_REGISTER_CALLBACKS 0U /* ETH register callback disabled */ +#define USE_HAL_HCD_REGISTER_CALLBACKS 0U /* HCD register callback disabled */ +#define USE_HAL_I2C_REGISTER_CALLBACKS 0U /* I2C register callback disabled */ +#define USE_HAL_I2S_REGISTER_CALLBACKS 0U /* I2S register callback disabled */ +#define USE_HAL_MMC_REGISTER_CALLBACKS 0U /* MMC register callback disabled */ +#define USE_HAL_NAND_REGISTER_CALLBACKS 0U /* NAND register callback disabled */ +#define USE_HAL_NOR_REGISTER_CALLBACKS 0U /* NOR register callback disabled */ +#define USE_HAL_PCCARD_REGISTER_CALLBACKS 0U /* PCCARD register callback disabled */ +#define USE_HAL_PCD_REGISTER_CALLBACKS 0U /* PCD register callback disabled */ +#define USE_HAL_RTC_REGISTER_CALLBACKS 0U /* RTC register callback disabled */ +#define USE_HAL_SD_REGISTER_CALLBACKS 0U /* SD register callback disabled */ +#define USE_HAL_SMARTCARD_REGISTER_CALLBACKS 0U /* SMARTCARD register callback disabled */ +#define USE_HAL_IRDA_REGISTER_CALLBACKS 0U /* IRDA register callback disabled */ +#define USE_HAL_SRAM_REGISTER_CALLBACKS 0U /* SRAM register callback disabled */ +#define USE_HAL_SPI_REGISTER_CALLBACKS 0U /* SPI register callback disabled */ +#define USE_HAL_TIM_REGISTER_CALLBACKS 0U /* TIM register callback disabled */ +#define USE_HAL_UART_REGISTER_CALLBACKS 0U /* UART register callback disabled */ +#define USE_HAL_USART_REGISTER_CALLBACKS 0U /* USART register callback disabled */ +#define USE_HAL_WWDG_REGISTER_CALLBACKS 0U /* WWDG register callback disabled */ + +/* ########################## Assert Selection ############################## */ +/** + * @brief Uncomment the line below to expanse the "assert_param" macro in the + * HAL drivers code + */ +/* #define USE_FULL_ASSERT 1U */ + +/* ################## Ethernet peripheral configuration ##################### */ + +/* Section 1 : Ethernet peripheral configuration */ + +/* MAC ADDRESS: MAC_ADDR0:MAC_ADDR1:MAC_ADDR2:MAC_ADDR3:MAC_ADDR4:MAC_ADDR5 */ +#define MAC_ADDR0 2U +#define MAC_ADDR1 0U +#define MAC_ADDR2 0U +#define MAC_ADDR3 0U +#define MAC_ADDR4 0U +#define MAC_ADDR5 0U + +/* Definition of the Ethernet driver buffers size and count */ +#define ETH_RX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for receive */ +#define ETH_TX_BUF_SIZE ETH_MAX_PACKET_SIZE /* buffer size for transmit */ +#define ETH_RXBUFNB 8U /* 4 Rx buffers of size ETH_RX_BUF_SIZE */ +#define ETH_TXBUFNB 4U /* 4 Tx buffers of size ETH_TX_BUF_SIZE */ + +/* Section 2: PHY configuration section */ + +/* DP83848_PHY_ADDRESS Address*/ +#define DP83848_PHY_ADDRESS 0x01U +/* PHY Reset delay these values are based on a 1 ms Systick interrupt*/ +#define PHY_RESET_DELAY 0x000000FFU +/* PHY Configuration delay */ +#define PHY_CONFIG_DELAY 0x00000FFFU + +#define PHY_READ_TO 0x0000FFFFU +#define PHY_WRITE_TO 0x0000FFFFU + +/* Section 3: Common PHY Registers */ + +#define PHY_BCR ((uint16_t)0x00) /*!< Transceiver Basic Control Register */ +#define PHY_BSR ((uint16_t)0x01) /*!< Transceiver Basic Status Register */ + +#define PHY_RESET ((uint16_t)0x8000) /*!< PHY Reset */ +#define PHY_LOOPBACK ((uint16_t)0x4000) /*!< Select loop-back mode */ +#define PHY_FULLDUPLEX_100M ((uint16_t)0x2100) /*!< Set the full-duplex mode at 100 Mb/s */ +#define PHY_HALFDUPLEX_100M ((uint16_t)0x2000) /*!< Set the half-duplex mode at 100 Mb/s */ +#define PHY_FULLDUPLEX_10M ((uint16_t)0x0100) /*!< Set the full-duplex mode at 10 Mb/s */ +#define PHY_HALFDUPLEX_10M ((uint16_t)0x0000) /*!< Set the half-duplex mode at 10 Mb/s */ +#define PHY_AUTONEGOTIATION ((uint16_t)0x1000) /*!< Enable auto-negotiation function */ +#define PHY_RESTART_AUTONEGOTIATION ((uint16_t)0x0200) /*!< Restart auto-negotiation function */ +#define PHY_POWERDOWN ((uint16_t)0x0800) /*!< Select the power down mode */ +#define PHY_ISOLATE ((uint16_t)0x0400) /*!< Isolate PHY from MII */ + +#define PHY_AUTONEGO_COMPLETE ((uint16_t)0x0020) /*!< Auto-Negotiation process completed */ +#define PHY_LINKED_STATUS ((uint16_t)0x0004) /*!< Valid link established */ +#define PHY_JABBER_DETECTION ((uint16_t)0x0002) /*!< Jabber condition detected */ + +/* Section 4: Extended PHY Registers */ +#define PHY_SR ((uint16_t)0x10U) /*!< PHY status register Offset */ + +#define PHY_SPEED_STATUS ((uint16_t)0x0002U) /*!< PHY Speed mask */ +#define PHY_DUPLEX_STATUS ((uint16_t)0x0004U) /*!< PHY Duplex mask */ + +/* ################## SPI peripheral configuration ########################## */ + +/* CRC FEATURE: Use to activate CRC feature inside HAL SPI Driver + * Activated: CRC code is present inside driver + * Deactivated: CRC code cleaned from driver + */ + +#define USE_SPI_CRC 0U + +/* Includes ------------------------------------------------------------------*/ +/** + * @brief Include module's header file + */ + +#ifdef HAL_RCC_MODULE_ENABLED +#include "stm32f1xx_hal_rcc.h" +#endif /* HAL_RCC_MODULE_ENABLED */ + +#ifdef HAL_GPIO_MODULE_ENABLED +#include "stm32f1xx_hal_gpio.h" +#endif /* HAL_GPIO_MODULE_ENABLED */ + +#ifdef HAL_EXTI_MODULE_ENABLED +#include "stm32f1xx_hal_exti.h" +#endif /* HAL_EXTI_MODULE_ENABLED */ + +#ifdef HAL_DMA_MODULE_ENABLED +#include "stm32f1xx_hal_dma.h" +#endif /* HAL_DMA_MODULE_ENABLED */ + +#ifdef HAL_ETH_MODULE_ENABLED +#include "stm32f1xx_hal_eth.h" +#endif /* HAL_ETH_MODULE_ENABLED */ + +#ifdef HAL_CAN_MODULE_ENABLED +#include "stm32f1xx_hal_can.h" +#endif /* HAL_CAN_MODULE_ENABLED */ + +#ifdef HAL_CAN_LEGACY_MODULE_ENABLED + #include "Legacy/stm32f1xx_hal_can_legacy.h" +#endif /* HAL_CAN_LEGACY_MODULE_ENABLED */ + +#ifdef HAL_CEC_MODULE_ENABLED +#include "stm32f1xx_hal_cec.h" +#endif /* HAL_CEC_MODULE_ENABLED */ + +#ifdef HAL_CORTEX_MODULE_ENABLED +#include "stm32f1xx_hal_cortex.h" +#endif /* HAL_CORTEX_MODULE_ENABLED */ + +#ifdef HAL_ADC_MODULE_ENABLED +#include "stm32f1xx_hal_adc.h" +#endif /* HAL_ADC_MODULE_ENABLED */ + +#ifdef HAL_CRC_MODULE_ENABLED +#include "stm32f1xx_hal_crc.h" +#endif /* HAL_CRC_MODULE_ENABLED */ + +#ifdef HAL_DAC_MODULE_ENABLED +#include "stm32f1xx_hal_dac.h" +#endif /* HAL_DAC_MODULE_ENABLED */ + +#ifdef HAL_FLASH_MODULE_ENABLED +#include "stm32f1xx_hal_flash.h" +#endif /* HAL_FLASH_MODULE_ENABLED */ + +#ifdef HAL_SRAM_MODULE_ENABLED +#include "stm32f1xx_hal_sram.h" +#endif /* HAL_SRAM_MODULE_ENABLED */ + +#ifdef HAL_NOR_MODULE_ENABLED +#include "stm32f1xx_hal_nor.h" +#endif /* HAL_NOR_MODULE_ENABLED */ + +#ifdef HAL_I2C_MODULE_ENABLED +#include "stm32f1xx_hal_i2c.h" +#endif /* HAL_I2C_MODULE_ENABLED */ + +#ifdef HAL_I2S_MODULE_ENABLED +#include "stm32f1xx_hal_i2s.h" +#endif /* HAL_I2S_MODULE_ENABLED */ + +#ifdef HAL_IWDG_MODULE_ENABLED +#include "stm32f1xx_hal_iwdg.h" +#endif /* HAL_IWDG_MODULE_ENABLED */ + +#ifdef HAL_PWR_MODULE_ENABLED +#include "stm32f1xx_hal_pwr.h" +#endif /* HAL_PWR_MODULE_ENABLED */ + +#ifdef HAL_RTC_MODULE_ENABLED +#include "stm32f1xx_hal_rtc.h" +#endif /* HAL_RTC_MODULE_ENABLED */ + +#ifdef HAL_PCCARD_MODULE_ENABLED +#include "stm32f1xx_hal_pccard.h" +#endif /* HAL_PCCARD_MODULE_ENABLED */ + +#ifdef HAL_SD_MODULE_ENABLED +#include "stm32f1xx_hal_sd.h" +#endif /* HAL_SD_MODULE_ENABLED */ + +#ifdef HAL_NAND_MODULE_ENABLED +#include "stm32f1xx_hal_nand.h" +#endif /* HAL_NAND_MODULE_ENABLED */ + +#ifdef HAL_SPI_MODULE_ENABLED +#include "stm32f1xx_hal_spi.h" +#endif /* HAL_SPI_MODULE_ENABLED */ + +#ifdef HAL_TIM_MODULE_ENABLED +#include "stm32f1xx_hal_tim.h" +#endif /* HAL_TIM_MODULE_ENABLED */ + +#ifdef HAL_UART_MODULE_ENABLED +#include "stm32f1xx_hal_uart.h" +#endif /* HAL_UART_MODULE_ENABLED */ + +#ifdef HAL_USART_MODULE_ENABLED +#include "stm32f1xx_hal_usart.h" +#endif /* HAL_USART_MODULE_ENABLED */ + +#ifdef HAL_IRDA_MODULE_ENABLED +#include "stm32f1xx_hal_irda.h" +#endif /* HAL_IRDA_MODULE_ENABLED */ + +#ifdef HAL_SMARTCARD_MODULE_ENABLED +#include "stm32f1xx_hal_smartcard.h" +#endif /* HAL_SMARTCARD_MODULE_ENABLED */ + +#ifdef HAL_WWDG_MODULE_ENABLED +#include "stm32f1xx_hal_wwdg.h" +#endif /* HAL_WWDG_MODULE_ENABLED */ + +#ifdef HAL_PCD_MODULE_ENABLED +#include "stm32f1xx_hal_pcd.h" +#endif /* HAL_PCD_MODULE_ENABLED */ + +#ifdef HAL_HCD_MODULE_ENABLED +#include "stm32f1xx_hal_hcd.h" +#endif /* HAL_HCD_MODULE_ENABLED */ + +#ifdef HAL_MMC_MODULE_ENABLED +#include "stm32f1xx_hal_mmc.h" +#endif /* HAL_MMC_MODULE_ENABLED */ + +/* Exported macro ------------------------------------------------------------*/ +#ifdef USE_FULL_ASSERT +/** + * @brief The assert_param macro is used for function's parameters check. + * @param expr If expr is false, it calls assert_failed function + * which reports the name of the source file and the source + * line number of the call that failed. + * If expr is true, it returns no value. + * @retval None + */ +#define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__)) +/* Exported functions ------------------------------------------------------- */ +void assert_failed(uint8_t* file, uint32_t line); +#else +#define assert_param(expr) ((void)0U) +#endif /* USE_FULL_ASSERT */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F1xx_HAL_CONF_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/Inc/stm32f1xx_it.h b/Core/Inc/stm32f1xx_it.h similarity index 68% rename from Inc/stm32f1xx_it.h rename to Core/Inc/stm32f1xx_it.h index 3fa33440..b67a1fc1 100644 --- a/Inc/stm32f1xx_it.h +++ b/Core/Inc/stm32f1xx_it.h @@ -1,75 +1,75 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file stm32f1xx_it.h - * @brief This file contains the headers of the interrupt handlers. - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2020 STMicroelectronics. - * All rights reserved.

- * - * This software component is licensed by ST under BSD 3-Clause license, - * the "License"; You may not use this file except in compliance with the - * License. You may obtain a copy of the License at: - * opensource.org/licenses/BSD-3-Clause - * - ****************************************************************************** - */ -/* USER CODE END Header */ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __STM32F1xx_IT_H -#define __STM32F1xx_IT_H - -#ifdef __cplusplus - extern "C" { -#endif - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ - -/* USER CODE END Includes */ - -/* Exported types ------------------------------------------------------------*/ -/* USER CODE BEGIN ET */ - -/* USER CODE END ET */ - -/* Exported constants --------------------------------------------------------*/ -/* USER CODE BEGIN EC */ - -/* USER CODE END EC */ - -/* Exported macro ------------------------------------------------------------*/ -/* USER CODE BEGIN EM */ - -/* USER CODE END EM */ - -/* Exported functions prototypes ---------------------------------------------*/ -void NMI_Handler(void); -void HardFault_Handler(void); -void MemManage_Handler(void); -void BusFault_Handler(void); -void UsageFault_Handler(void); -void SVC_Handler(void); -void DebugMon_Handler(void); -void PendSV_Handler(void); -void SysTick_Handler(void); -void DMA1_Channel1_IRQHandler(void); -void ADC1_2_IRQHandler(void); -void TIM1_UP_IRQHandler(void); -void TIM1_TRG_COM_IRQHandler(void); -void TIM1_CC_IRQHandler(void); -void TIM2_IRQHandler(void); -/* USER CODE BEGIN EFP */ - -/* USER CODE END EFP */ - -#ifdef __cplusplus -} -#endif - -#endif /* __STM32F1xx_IT_H */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32f1xx_it.h + * @brief This file contains the headers of the interrupt handlers. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F1xx_IT_H +#define __STM32F1xx_IT_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Exported types ------------------------------------------------------------*/ +/* USER CODE BEGIN ET */ + +/* USER CODE END ET */ + +/* Exported constants --------------------------------------------------------*/ +/* USER CODE BEGIN EC */ + +/* USER CODE END EC */ + +/* Exported macro ------------------------------------------------------------*/ +/* USER CODE BEGIN EM */ + +/* USER CODE END EM */ + +/* Exported functions prototypes ---------------------------------------------*/ +void NMI_Handler(void); +void HardFault_Handler(void); +void MemManage_Handler(void); +void BusFault_Handler(void); +void UsageFault_Handler(void); +void SVC_Handler(void); +void DebugMon_Handler(void); +void PendSV_Handler(void); +void SysTick_Handler(void); +void DMA1_Channel1_IRQHandler(void); +void ADC1_2_IRQHandler(void); +void TIM1_UP_IRQHandler(void); +void TIM1_TRG_COM_IRQHandler(void); +void TIM1_CC_IRQHandler(void); +void TIM2_IRQHandler(void); +/* USER CODE BEGIN EFP */ + +/* USER CODE END EFP */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F1xx_IT_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/Core/Src/FOC.c b/Core/Src/FOC.c new file mode 100644 index 00000000..b20c8bde --- /dev/null +++ b/Core/Src/FOC.c @@ -0,0 +1,235 @@ +/* + * FOC.c + * + * Created on: 25.01.2019 + * Author: Stancecoke + */ +#include "main.h" +#include "config.h" +#include "FOC.h" +#include "stm32f1xx_hal.h" +#include +#include + +//q31_t T_halfsample = 0.00003125; +//q31_t counterfrequency = 64000000; +//q31_t U_max = (1/_SQRT3)*_U_DC; +q31_t temp1; +q31_t temp2; +q31_t temp3; +q31_t temp4; +q31_t temp5; +q31_t temp6; + +q31_t q31_i_q_fil = 0; +q31_t q31_i_d_fil = 0; + +q31_t x1; +q31_t x2; +q31_t teta_obs; + +#ifdef FAST_LOOP_LOG +q31_t e_log[300][6]; +#endif + +q31_t z; +char Obs_flag = 1; +uint8_t ui8_debug_state = 0; + +char PI_flag = 0; + +//const q31_t _T = 2048; + +TIM_HandleTypeDef htim1; + +void FOC_calculation(int16_t int16_i_as, int16_t int16_i_bs, q31_t q31_teta, + MotorState_t *MS_FOC); +void svpwm(q31_t q31_u_alpha, q31_t q31_u_beta); + +void FOC_calculation(int16_t int16_i_as, int16_t int16_i_bs, q31_t q31_teta, + MotorState_t *MS_FOC) { + HAL_GPIO_WritePin(UART1_Tx_GPIO_Port, UART1_Tx_Pin, GPIO_PIN_SET); + q31_t q31_i_alpha = 0; + q31_t q31_i_beta = 0; + q31_t q31_u_alpha = 0; + q31_t q31_u_beta = 0; + q31_t q31_i_d = 0; + q31_t q31_i_q = 0; + + q31_t sinevalue = 0, cosinevalue = 0; + + // temp5=(q31_t)int16_i_as; + // temp6=(q31_t)int16_i_bs; + + // Clark transformation + arm_clarke_q31((q31_t) int16_i_as, (q31_t) int16_i_bs, &q31_i_alpha, + &q31_i_beta); + + arm_sin_cos_q31(q31_teta, &sinevalue, &cosinevalue); + + // Park transformation + arm_park_q31(q31_i_alpha, q31_i_beta, &q31_i_d, &q31_i_q, sinevalue, + cosinevalue); + + q31_i_q_fil -= q31_i_q_fil >> 4; + q31_i_q_fil += q31_i_q; + MS_FOC->i_q = q31_i_q_fil >> 4; + + q31_i_d_fil -= q31_i_d_fil >> 4; + q31_i_d_fil += q31_i_d; + MS_FOC->i_d = q31_i_d_fil >> 4; + + //Control iq + + PI_flag = 1; + + + //set static volatage for hall angle detection + if (!MS_FOC->hall_angle_detect_flag) { + MS_FOC->u_q=0; + MS_FOC->u_d=300; + } + else runPIcontrol(); + + //inverse Park transformation + arm_inv_park_q31(MS_FOC->u_d, MS_FOC->u_q, &q31_u_alpha, &q31_u_beta, + -sinevalue, cosinevalue); + +#ifdef FAST_LOOP_LOG + temp1=int16_i_as; + temp2=int16_i_bs; + temp3=MS_FOC->i_d; + temp4=MS_FOC->i_q; + temp5=MS_FOC->u_d; + temp6=MS_FOC->u_q; + + if(uint32_PAS_counter < PAS_TIMEOUT&&ui8_debug_state==0) + { + e_log[z][0]=temp1;//fl_e_alpha_obs; + e_log[z][1]=temp2;//fl_e_beta_obs; + e_log[z][2]=temp3;//(q31_t)q31_teta_obs>>24; + e_log[z][3]=temp4; + e_log[z][4]=temp5; + e_log[z][5]=temp6; + z++; + if(z>150) Obs_flag=1; + if (z>299) + {z=0; + + ui8_debug_state=2;} + } + else {if(ui8_debug_state==2)ui8_debug_state=3;;} + +#endif + + //call SVPWM calculation + svpwm(q31_u_alpha, q31_u_beta); + //temp6=__HAL_TIM_GET_COUNTER(&htim1); + HAL_GPIO_WritePin(UART1_Tx_GPIO_Port, UART1_Tx_Pin, GPIO_PIN_RESET); +} + +//PI Control for quadrature current iq (torque) +q31_t PI_control_i_q(q31_t ist, q31_t soll) { + + q31_t q31_p; //proportional part + static q31_t q31_q_i = 0; //integral part + static q31_t q31_q_dc = 0; // sum of proportional and integral part + q31_p = ((soll - ist) * P_FACTOR_I_Q); + q31_q_i += ((soll - ist) * I_FACTOR_I_Q); + + + if (q31_q_i > _U_MAX << 10) + q31_q_i = _U_MAX << 10; + if (q31_q_i < -_U_MAX << 10) + q31_q_i = -_U_MAX << 10; + if (!READ_BIT(TIM1->BDTR, TIM_BDTR_MOE)){ + q31_q_i = 0; //reset integral part if PWM is disabled + q31_q_dc=0; + } + //avoid too big steps in one loop run + if ((q31_p + q31_q_i) >> 10 > q31_q_dc + 5) + q31_q_dc += 5; + else if ((q31_p + q31_q_i) >> 10 < q31_q_dc - 5) + q31_q_dc -= 5; + else + q31_q_dc = (q31_p + q31_q_i) >> 10; + + if (q31_q_dc > _U_MAX) + q31_q_dc = _U_MAX; + if (q31_q_dc < -_U_MAX) + q31_q_dc = -_U_MAX; + + return (q31_q_dc); +} + +//PI Control for direct current id (loss) +q31_t PI_control_i_d(q31_t ist, q31_t soll, q31_t clamp) { + q31_t q31_p; + static q31_t q31_d_i = 0; + static q31_t q31_d_dc = 0; + + q31_p = ((soll - ist) * P_FACTOR_I_D) >> 5; + q31_d_i += ((soll - ist) * I_FACTOR_I_D) >> 5; + + if (q31_d_i < -clamp + abs(q31_p)) + q31_d_i = -clamp + abs(q31_p); + if (q31_d_i > clamp - abs(q31_p)) + q31_d_i = clamp - abs(q31_p); + + + if (!READ_BIT(TIM1->BDTR, TIM_BDTR_MOE)){ + q31_d_i = 0; //reset integral part if PWM is disabled + q31_d_dc=0; + } + //avoid too big steps in one loop run + if (q31_p + q31_d_i > q31_d_dc + 5) + q31_d_dc += 5; + else if (q31_p + q31_d_i < q31_d_dc - 5) + q31_d_dc -= 5; + else + q31_d_dc = q31_p + q31_d_i; + + if (q31_d_dc > _U_MAX) + q31_d_dc = _U_MAX; + if (q31_d_dc < -(_U_MAX)) + q31_d_dc = -(_U_MAX); + + return (q31_d_dc); +} + +void svpwm(q31_t q31_u_alpha, q31_t q31_u_beta) { + +//SVPWM according to chapter 4.9 of UM1052 + + q31_t q31_U_alpha = (_SQRT3 * _T * q31_u_alpha) >> 4; + q31_t q31_U_beta = -_T * q31_u_beta; + q31_t X = q31_U_beta; + q31_t Y = (q31_U_alpha + q31_U_beta) >> 1; + q31_t Z = (q31_U_beta - q31_U_alpha) >> 1; + + //Sector 1 & 4 + if ((Y >= 0 && Z < 0 && X > 0) || (Y < 0 && Z >= 0 && X <= 0)) { + switchtime[0] = ((_T + X - Z) >> 12) + (_T >> 1); //right shift 11 for dividing by peroid (=2^11), right shift 1 for dividing by 2 + switchtime[1] = switchtime[0] + (Z >> 11); + switchtime[2] = switchtime[1] - (X >> 11); + //temp4=1; + } + + //Sector 2 & 5 + if ((Y >= 0 && Z >= 0) || (Y < 0 && Z < 0)) { + switchtime[0] = ((_T + Y - Z) >> 12) + (_T >> 1); + switchtime[1] = switchtime[0] + (Z >> 11); + switchtime[2] = switchtime[0] - (Y >> 11); + //temp4=2; + } + + //Sector 3 & 6 + if ((Y < 0 && Z >= 0 && X > 0) || (Y >= 0 && Z < 0 && X <= 0)) { + switchtime[0] = ((_T + Y - X) >> 12) + (_T >> 1); + switchtime[2] = switchtime[0] - (Y >> 11); + switchtime[1] = switchtime[2] + (X >> 11); + //temp4=3; + } + +} + diff --git a/Core/Src/M365_Dashboard.c b/Core/Src/M365_Dashboard.c new file mode 100644 index 00000000..0a01e024 --- /dev/null +++ b/Core/Src/M365_Dashboard.c @@ -0,0 +1,477 @@ +/* + * M365_Dashboard.c + * + * Created on: Nov 27, 2021 + * Author: stancecoke + */ + + +#include "main.h" +#include "config.h" +#include "stm32f1xx_hal.h" +#include "print.h" +#include "M365_Dashboard.h" +#include "M365_memory_table.h" +#include "decr_and_flash.h" +#include "stm32f1xx_hal_flash.h" +enum { STATE_LOST, STATE_START_DETECTED, STATE_LENGTH_DETECTED }; + +UART_HandleTypeDef huart3; +static uint8_t ui8_rx_buffer[132]; +static uint8_t ui8_dashboardmessage[132]; +static uint8_t enc[128]; +static char buffer[64]; +static uint8_t ui8_tx_buffer[96];// = {0x55, 0xAA, 0x08, 0x21, 0x64, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; +static uint8_t ui8_oldpointerposition=64; +static uint8_t ui8_recentpointerposition=0; +static uint8_t ui8_messagestartpos=255; +static uint8_t ui8_messagelength=0; +static uint8_t ui8_state= STATE_LOST; +static uint32_t ui32_timeoutcounter=0; +static uint16_t ui16_update_size=0; +static uint32_t flashstartaddress = 0x08008400; +static uint32_t updateflagaddress = 0x0800FC00; +static uint32_t sysinfoaddress = 0x0800F800; +static uint32_t proc_ID_address = 0x1FFFF7E8; +char sys_info[512] = { + 0x5C,0x51,0xEE,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x0,0x8,0x0,0x8,0x31,0x33,0x36,0x37,0x38,0x2F,0x30,0x30,0x31,0x31,0x30,0x30,0x32,0x39,0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x1,0x0,0x0,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x4E,0x10,0x27,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x50,0xFF,0x70,0x6,0x83,0x67,0x51,0x56,0x30,0x44,0x9,0x67,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 +}; + +char *target; +char *source; +static uint8_t ui8_target_offset; +static uint8_t ui8_source_offset; + + +M365_menory_table_t MT; + +enum bytesOfMessage65 { + Throttle = 7, + Brake = 8, +} msg65; + +enum bytesOfMessage64 { + Speed = 10, + Mode = 6, + SOC = 7, + Light = 8, + Beep = 9 +} msg64; + +enum bytesOfGeneralMessage { + msglength = 2, + receiver = 3, + command = 4, + startAddress = 5, + payloadLength = 6 +} gen_msg; + + +void M365Dashboard_init(UART_HandleTypeDef huart1) { +// CLEAR_BIT(huart3.Instance->CR3, USART_CR3_EIE); + if (HAL_UART_Receive_DMA(&huart1, (uint8_t*) ui8_rx_buffer, sizeof(ui8_rx_buffer)) != HAL_OK) { + Error_Handler(); + } + ui8_tx_buffer[0] = 0x55; + ui8_tx_buffer[1] = 0xAA; + MT.ESC_version = 0x0222; + MT.internal_battery_version = 0x0289; + MT.total_riding_time[0]=0xFFFF; + strcpy(MT.scooter_serial, "EBiCS_0.4"); + MT.ESC_status_2= 0x0800; + char *IDp = (char *)proc_ID_address; + char *IDs = ((char *)sysinfoaddress)+436; + if(*IDp!=*IDs){ + HAL_FLASH_Unlock(); + + uint32_t PAGEError = 0; + /*Variable used for Erase procedure*/ + static FLASH_EraseInitTypeDef EraseInitStruct; + /* Erase the user Flash area + (area defined by FLASH_USER_START_ADDR and FLASH_USER_END_ADDR) ***********/ + //write sysinfo + EraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES; + EraseInitStruct.PageAddress = sysinfoaddress; + EraseInitStruct.NbPages = 1; + + if (HAL_FLASHEx_Erase(&EraseInitStruct, &PAGEError) != HAL_OK) + { + /* + Error occurred while page erase. + User can add here some code to deal with this error. + PAGEError will contain the faulty page and then to know the code error on this page, + user can call function 'HAL_FLASH_GetError()' + */ + /* Infinite loop */ + while (1) + { + /* Make LED2 blink (100ms on, 2s off) to indicate error in Erase operation */ + + } + } + uint32_t data; + //write processor ID + char *source = (char *)proc_ID_address; + char *target = (char *)&sys_info; + memcpy(target+436,source,12); //https://electro.club/post/48886 + //write Scooter serial number + source = (char *)&MT.scooter_serial; + memcpy(target+32,source,14); + + source = (char *)&sys_info; + target = (char *)&data; + + for(int i =0 ; i<512; i+=4){ + memcpy(target,source+i,4); + if(sysinfoaddress+i3200&&MT.ESC_status_2 != 0x0802){ + + + ui32_timeoutcounter=0; + //printf_("DMA Receive timeout! \n"); + HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin); + ui8_state=STATE_LOST; + CLEAR_BIT(DMA1_Channel5->CCR, DMA_CCR_EN); + DMA1_Channel5->CNDTR=sizeof(ui8_rx_buffer); + SET_BIT(DMA1_Channel5->CCR, DMA_CCR_EN); + + if (HAL_UART_Receive_DMA(&huart1, (uint8_t*) ui8_rx_buffer, sizeof(ui8_rx_buffer)) != HAL_OK) { + Error_Handler(); + } + + } + + + ui8_recentpointerposition = sizeof(ui8_rx_buffer) - (DMA1_Channel5->CNDTR); //Pointer of UART1RX DMA Channel + if (ui8_recentpointerpositionCCR, DMA_CCR_EN); + DMA1_Channel5->CNDTR=sizeof(ui8_rx_buffer); + SET_BIT(DMA1_Channel5->CCR, DMA_CCR_EN); + ui32_timeoutcounter=0; + + + } + } + break; + } //end switch + + ui8_oldpointerposition=(ui8_oldpointerposition+1)% sizeof(ui8_rx_buffer); + }// end of while + ui32_timeoutcounter++; +} + +void process_DashboardMessage(M365State_t* p_M365State, uint8_t *message, uint8_t length, UART_HandleTypeDef huart1) { + //while(HAL_UART_GetState(&huart1)!=HAL_UART_STATE_READY){} + //HAL_Delay(2); // bad style, but wait for characters coming in, if message is longer than expected + if(!checkCRC(message, length)){ + //55 AA 06 21 64 00 00 00 00 00 74 FF + //55 AA 8 21 64 0 20 0 0 1 0 12 3F FF + + switch (message[command]) { + + case 0x64: { + + ui8_tx_buffer[5]=0x00; + ui8_tx_buffer[11]=0x00; + ui8_tx_buffer[msglength]=0x08; + ui8_tx_buffer[receiver]=0x21; + ui8_tx_buffer[command]=message[command]; + ui8_tx_buffer[Speed]=p_M365State->speed; + ui8_tx_buffer[Mode]=p_M365State->mode; + ui8_tx_buffer[SOC]=map(p_M365State->Voltage,33000,42000,0,96); + if(p_M365State->light)ui8_tx_buffer[Light]=64; + else ui8_tx_buffer[Light]=0; + ui8_tx_buffer[Beep]= p_M365State->beep; + + addCRC((uint8_t*)ui8_tx_buffer, ui8_tx_buffer[msglength]+6); + HAL_HalfDuplex_EnableTransmitter(&huart1); + HAL_UART_Transmit_DMA(&huart1, (uint8_t*)ui8_tx_buffer, ui8_tx_buffer[msglength]+6); + if(p_M365State->beep&&ui8_tx_buffer[Beep])p_M365State->beep = 0; + + } + break; + + case 0x65: { + if(map(message[Brake],BRAKEOFFSET,BRAKEMAX,0,REGEN_CURRENT)>0){ + if(p_M365State->speed > 2) p_M365State->i_q_setpoint_target = -map(message[Brake],BRAKEOFFSET,BRAKEMAX,0,REGEN_CURRENT); + else p_M365State->i_q_setpoint_target = 0; + } + else{ + p_M365State->i_q_setpoint_target = map(message[Throttle],THROTTLEOFFSET,THROTTLEMAX,0,p_M365State->phase_current_limit); + } + } + break; + + case 0x61: { + //55 AA 06 20 61 DA 0C 02 27 00 69 FE + //55 AA 0E 23 01 DA 48 FF 73 06 78 78 54 51 53 32 10 67 A2 FA + + if(map(message[9],BRAKEOFFSET,BRAKEMAX,0,REGEN_CURRENT)>0){ + if(p_M365State->speed > 2) p_M365State->i_q_setpoint_target = -map(message[9],BRAKEOFFSET,BRAKEMAX,0,REGEN_CURRENT); + else p_M365State->i_q_setpoint_target = 0; + } + else{ + p_M365State->i_q_setpoint_target = map(message[8],THROTTLEOFFSET,THROTTLEMAX,0,p_M365State->phase_current_limit); + } + + + ui8_tx_buffer[msglength]=message[payloadLength]+2; + ui8_tx_buffer[receiver]=message[receiver]+3; + ui8_tx_buffer[command]=0x01; + ui8_tx_buffer[startAddress] =message[startAddress]; + + source = (char *)&MT; + target = (char *)&ui8_tx_buffer; + ui8_source_offset = message[startAddress]; + ui8_target_offset = 6; + memcpy(target+ui8_target_offset,source+ui8_source_offset*2,message[payloadLength]); + addCRC((uint8_t*)ui8_tx_buffer, ui8_tx_buffer[msglength]+6); + HAL_HalfDuplex_EnableTransmitter(&huart1); + HAL_UART_Transmit_DMA(&huart1, (uint8_t*)ui8_tx_buffer, ui8_tx_buffer[msglength]+6); + } + break; + + case 0x03: { + //55 AA 4 20 3 70 1 0 67 FF + + source = (char *)message; + target = (char *)&MT; + ui8_target_offset = message[startAddress]; + + memcpy(target+ui8_target_offset,source+6,1); + if (message[payloadLength]==1){ + MT.ESC_status_2= 0x0802; + HAL_FLASH_Unlock(); + uint32_t PAGEError = 0; + /*Variable used for Erase procedure*/ + static FLASH_EraseInitTypeDef EraseInitStruct; + /* Erase the user Flash area + (area defined by FLASH_USER_START_ADDR and FLASH_USER_END_ADDR) ***********/ + + /* Fill EraseInit structure*/ + EraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES; + EraseInitStruct.PageAddress = flashstartaddress; + EraseInitStruct.NbPages = 26; + + if (HAL_FLASHEx_Erase(&EraseInitStruct, &PAGEError) != HAL_OK) + { + /* + Error occurred while page erase. + User can add here some code to deal with this error. + PAGEError will contain the faulty page and then to know the code error on this page, + user can call function 'HAL_FLASH_GetError()' + */ + /* Infinite loop */ + while (1) + { + /* Make LED2 blink (100ms on, 2s off) to indicate error in Erase operation */ + + } + } + HAL_FLASH_Lock(); + } + + } + break; + + case 0x0A: { + HAL_FLASH_Unlock(); + + uint32_t PAGEError = 0; + /*Variable used for Erase procedure*/ + static FLASH_EraseInitTypeDef EraseInitStruct; + /* Erase the user Flash area + (area defined by FLASH_USER_START_ADDR and FLASH_USER_END_ADDR) ***********/ + //write sysinfo +// EraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES; +// EraseInitStruct.PageAddress = sysinfoaddress; +// EraseInitStruct.NbPages = 1; +// +// if (HAL_FLASHEx_Erase(&EraseInitStruct, &PAGEError) != HAL_OK) +// { +// /* +// Error occurred while page erase. +// User can add here some code to deal with this error. +// PAGEError will contain the faulty page and then to know the code error on this page, +// user can call function 'HAL_FLASH_GetError()' +// */ +// /* Infinite loop */ +// while (1) +// { +// /* Make LED2 blink (100ms on, 2s off) to indicate error in Erase operation */ +// +// } +// } +// uint32_t data; +// //write processor ID +// char *source = (char *)proc_ID_address; +// char *target = (char *)&sys_info; +// memcpy(target+436,source,12); //https://electro.club/post/48886 +// //write Scooter serial number +// source = (char *)&MT.scooter_serial; +// memcpy(target+32,source,14); +// +// source = (char *)&sys_info; +// target = (char *)&data; +// +// for(int i =0 ; i<512; i+=4){ +// memcpy(target,source+i,4); +// if(sysinfoaddress+ii_q_setpoint = 0; // stop motor for safety reason + } + break; + }//end switch + } +} + +void addCRC(uint8_t * message, uint8_t size){ + unsigned long cksm = 0; + for(int i = 2; i < size - 2; i++) cksm += message[i]; + cksm ^= 0xFFFF; + message[size - 2] = (uint8_t)(cksm&0xFF); + message[size - 1] = (uint8_t)((cksm&0xFF00) >> 8); + message[size] = '\0'; +} + +int16_t checkCRC(uint8_t * message, uint8_t size){ + unsigned long cksm = 0; + for(int i = 2; i < size - 2; i++) cksm += message[i]; + cksm ^= 0xFFFF; + return cksm-(message[size - 2]+(message[size - 1]<<8)); +} diff --git a/Core/Src/button_processing.c b/Core/Src/button_processing.c new file mode 100644 index 00000000..ff4c61a3 --- /dev/null +++ b/Core/Src/button_processing.c @@ -0,0 +1,190 @@ +/* + * m365 + * + * Copyright (c) 2021 Francois Deslandes + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "button_processing.h" +#include "main.h" +#include "config.h" +#include "motor.h" + +static uint8_t power_button_state = 0; + +uint8_t buttonState() { + static const uint32_t DEBOUNCE_MILLIS = 20 ; + bool buttonstate = HAL_GPIO_ReadPin( PWR_BTN_GPIO_Port, PWR_BTN_Pin ) == GPIO_PIN_SET ; + uint32_t buttonstate_ts = HAL_GetTick() ; + + uint32_t now = HAL_GetTick() ; + if( now - buttonstate_ts > DEBOUNCE_MILLIS ) + { + if( buttonstate != (HAL_GPIO_ReadPin( PWR_BTN_GPIO_Port, PWR_BTN_Pin ) == GPIO_PIN_SET)) + { + buttonstate = !buttonstate ; + buttonstate_ts = now ; + } + } + return buttonstate ; +} + +eButtonEvent getButtonEvent() +{ + static const uint32_t DOUBLE_GAP_MILLIS_MAX = 250; + static const uint32_t SINGLE_PRESS_MILLIS_MAX = 300; + static const uint32_t LONG_PRESS_MILLIS_MAX = 5000; + + static uint32_t button_down_ts = 0 ; + static uint32_t button_up_ts = 0 ; + static bool double_pending = false ; + static bool button_down = false ; ; + + eButtonEvent button_event = NO_PRESS ; + uint32_t now = HAL_GetTick() ; + + if( button_down != buttonState() ) { + button_down = !button_down ; + if( button_down ) { + button_down_ts = now ; + } else { + button_up_ts = now ; + if( double_pending ) { + button_event = DOUBLE_PRESS ; + double_pending = false ; + } + else { + double_pending = true ; + } + } + } + + uint32_t diff = button_up_ts - button_down_ts; + if (!button_down && double_pending && now - button_up_ts > DOUBLE_GAP_MILLIS_MAX) { + double_pending = false ; + button_event = SINGLE_PRESS ; + } else if (!button_down && double_pending && diff >= SINGLE_PRESS_MILLIS_MAX && diff <= LONG_PRESS_MILLIS_MAX) { + double_pending = false ; + button_event = LONG_PRESS ; + } else if (button_down && now - button_down_ts > LONG_PRESS_MILLIS_MAX) { + double_pending = false ; + button_event = VERY_LONG_PRESS ; + } + + return button_event ; +} + +void checkButton(M365State_t *p_M365State) { + static uint32_t counter; + + // check the shutdown counter + if (p_M365State->shutdown > 16) power_control(DEV_PWR_OFF); + + counter++; + if ((counter % 2) == 0) { // every 20ms + switch (getButtonEvent()) { + case NO_PRESS: + break; + + case SINGLE_PRESS: + p_M365State->light = !p_M365State->light; + break; + + case VERY_LONG_PRESS: + motor_autodetect(); + break; + + case LONG_PRESS: + p_M365State->beep = 1; + + if (p_M365State->shutdown == 0) + p_M365State->shutdown = 1; + + break; + + case DOUBLE_PRESS: + p_M365State->mode = p_M365State->mode + 2; + + if (p_M365State->mode > 4) + p_M365State->mode = 0; + + set_mode(p_M365State); + break; + } + } +} + +void PWR_init() { + /* Check button pressed state at startup */ + power_button_state = buttonState(); + + /* Power ON board temporarily, ultimate decision to keep hardware ON or OFF is made later */ + power_control(DEV_PWR_ON); +} + +void power_control(uint8_t pwr) +{ + if (pwr == DEV_PWR_ON) { + /* Turn the PowerON line high to keep the board powered on even when + * the power button is released + */ + HAL_GPIO_WritePin(TPS_ENA_GPIO_Port, TPS_ENA_Pin, GPIO_PIN_SET); + } else if (pwr == DEV_PWR_OFF) { + + //motors_free(0, NULL); + //sleep_x_ticks(2000); + //stop_motors(); + + while(HAL_GPIO_ReadPin(PWR_BTN_GPIO_Port, PWR_BTN_Pin)); + HAL_GPIO_WritePin(TPS_ENA_GPIO_Port, TPS_ENA_Pin, GPIO_PIN_RESET); + while(1); + } else if(pwr == DEV_PWR_RESTART) { + + //motors_free(0, NULL); + //sleep_x_ticks(2000); + //stop_motors(); + + /* Restart the system */ + NVIC_SystemReset(); + } +} + +void set_mode(M365State_t *p_M365State) { + + switch (p_M365State->mode) { + case eco: + p_M365State->phase_current_limit = PH_CURRENT_MAX_ECO; + p_M365State->speed_limit = SPEEDLIMIT_ECO; + break; + + case normal: + p_M365State->phase_current_limit = PH_CURRENT_MAX_NORMAL; + p_M365State->speed_limit = SPEEDLIMIT_NORMAL; + break; + + case sport: + p_M365State->phase_current_limit = PH_CURRENT_MAX_SPORT; + p_M365State->speed_limit = SPEEDLIMIT_SPORT; + break; + } + + calculate_tic_limits(p_M365State->speed_limit); +} + + diff --git a/Core/Src/decr_and_flash.c b/Core/Src/decr_and_flash.c new file mode 100644 index 00000000..2f5fe2b5 --- /dev/null +++ b/Core/Src/decr_and_flash.c @@ -0,0 +1,100 @@ +/* + * decr_and_flash.c + * + * Created on: 21.12.2021 + * Author: Thanks to Tom! + */ + +#include +#include +#include +#include "main.h" + +uint8_t key[16] = {0xFE,0x80,0x1C,0xB2,0xD1,0xEF,0x41,0xA6,0xA4,0x17,0x31,0xF5,0xA0,0x68,0x24,0xF0}; +uint8_t iv[8] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; +int offset = 0; +static uint32_t update_startaddress = 0x08008400; + +void update_key() +{ + for (int i = 0; i < 16; i = i + 1) { + key[i] = (key[i] + i) & 0xFF; + } + return; +} + +void decrypt_ecb(uint8_t *block, uint8_t *out) +{ + uint32_t y, z; + memcpy(&y, block, 4); + memcpy(&z, block + 4, 4); + + uint32_t k[4]; + memcpy(&k[0], key, 4); + memcpy(&k[1], key + 4, 4); + memcpy(&k[2], key + 8, 4); + memcpy(&k[3], key + 12, 4); + + uint32_t s = 0xC6EF3720; + + for (int i = 0; i < 32; i = i + 1) { + z = (z - (((y << 4) + k[2]) ^ (y + s) ^ ((y >> 5) + k[3]))) & 0xFFFFFFFF; + y = (y - (((z << 4) + k[0]) ^ (z + s) ^ ((z >> 5) + k[1]))) & 0xFFFFFFFF; + s = (s - 0x9E3779B9) & 0xFFFFFFFF; + } + + memcpy(out, &y, 4); + memcpy(out + 4, &z, 4); + + return; +} + +void xor(uint8_t *s1, uint8_t *s2){ + for (int i = 0; i < 8; i+=1) { + s1[i] = s1[i] ^ s2[i]; + } +} + +void decrypt(uint8_t *out, uint8_t *data, int len) +{ + int i; + uint8_t tmp[8]; + + for (i = 0; i < len; i = i + 8) { + uint8_t ct[8]; + memcpy(ct, data + i, 8); + + decrypt_ecb(ct, tmp); + xor(tmp, iv); + + memcpy(out + i, tmp, 8); + memcpy(iv, ct, 8); + offset += 8; + if (offset % 1024 == 0) { update_key(); } + } + + // unpad > remove last 8 bytes (could also verify checksum) + + return; +} + +int decr_and_flash(uint8_t enc[], uint32_t flash_address, uint16_t update_size, uint8_t packetsize) +{ + // uint8_t enc[128] = {0x80, 0x97, 0x66, 0xD3, 0x37, 0xD2, 0xB3, 0xB5, 0x79, 0x3E, 0x4C, 0xD0, 0xC9, 0x99, 0xB7, 0xCD, 0x37, 0xA8, 0xA7, 0xC8, 0xEF, 0x8F, 0x40, 0x08, 0xCB, 0xB2, 0x88, 0xFF, 0x72, 0x98, 0xAB, 0x78, 0xEE, 0xBE, 0xCD, 0x70, 0xA5, 0xB6, 0xDD, 0xB4, 0x1C, 0x05, 0x88, 0x85, 0xB5, 0x3D, 0xB3, 0xDD, 0x8C, 0xD1, 0x92, 0x2A, 0x1E, 0xF2, 0xF7, 0xD0, 0xA2, 0x2A, 0x59, 0xB6, 0x80, 0x90, 0xD1, 0x93, 0x92, 0xF5, 0xAF, 0x9B, 0x59, 0xC4, 0x0F, 0x19, 0x6F, 0xA6, 0x13, 0x2E, 0xAD, 0x01, 0x12, 0xF3, 0x65, 0x3B, 0x7A, 0x7C, 0xAB, 0x60, 0xE8, 0xD5, 0xCF, 0xE7, 0xE6, 0xE9, 0x79, 0x32, 0x9F, 0x66, 0xAA, 0x8D, 0x81, 0xC2, 0x32, 0x53, 0x37, 0x55, 0xBF, 0xF8, 0xB1, 0x57, 0x15, 0xDA, 0xCA, 0xFE, 0x1B, 0xF8, 0xEE, 0x60, 0x7F, 0x85, 0xBB, 0x7B, 0x9F, 0x95, 0x54, 0x20, 0xC0, 0x6B, 0x4F, 0x73}; + uint8_t dec[128]; + uint32_t data; + decrypt(dec, enc, packetsize); + HAL_FLASH_Unlock(); + char *source = (char *)&dec; + char *target = (char *)&data; + + for(int i =0 ; i
© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.
+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/** @addtogroup EEPROM_Emulation + * @{ + */ + +/* Includes ------------------------------------------------------------------*/ +#include "eeprom.h" + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Global variable used to store variable value in read sequence */ +int16_t DataVar = 0; + +/* Virtual address defined by the user: 0xFFFF value is prohibited */ +extern uint16_t VirtAddVarTab[NB_OF_VAR]; + +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ +static HAL_StatusTypeDef EE_Format(void); +static uint16_t EE_FindValidPage(uint8_t Operation); +static uint16_t EE_VerifyPageFullWriteVariable(uint16_t VirtAddress, + int16_t Data); +static uint16_t EE_PageTransfer(uint16_t VirtAddress, int16_t Data); +static uint16_t EE_VerifyPageFullyErased(uint32_t Address); + +/** + * @brief Restore the pages to a known good state in case of page's status + * corruption after a power loss. + * @param None. + * @retval - Flash error code: on write Flash error + * - FLASH_COMPLETE: on success + */ +uint16_t EE_Init(void) { + uint16_t pagestatus0 = 6, pagestatus1 = 6; + uint16_t varidx = 0; + uint16_t eepromstatus = 0, readstatus = 0; + int16_t x = -1; + HAL_StatusTypeDef flashstatus; + uint32_t page_error = 0; + FLASH_EraseInitTypeDef s_eraseinit; + + /* Get Page0 status */ + pagestatus0 = (*(__IO uint16_t*) PAGE0_BASE_ADDRESS); + /* Get Page1 status */ + pagestatus1 = (*(__IO uint16_t*) PAGE1_BASE_ADDRESS); + + /* Fill EraseInit structure*/ + s_eraseinit.TypeErase = FLASH_TYPEERASE_PAGES; + s_eraseinit.PageAddress = PAGE0_ID; + s_eraseinit.NbPages = 1; + + /* Check for invalid header states and repair if necessary */ + switch (pagestatus0) { + case ERASED: + if (pagestatus1 == VALID_PAGE) /* Page0 erased, Page1 valid */ + { + /* Erase Page0 */ + if (!EE_VerifyPageFullyErased(PAGE0_BASE_ADDRESS)) { + flashstatus = HAL_FLASHEx_Erase(&s_eraseinit, &page_error); + /* If erase operation was failed, a Flash error code is returned */ + if (flashstatus != HAL_OK) { + return flashstatus; + } + } + } else if (pagestatus1 == RECEIVE_DATA) /* Page0 erased, Page1 receive */ + { + /* Erase Page0 */ + if (!EE_VerifyPageFullyErased(PAGE0_BASE_ADDRESS)) { + flashstatus = HAL_FLASHEx_Erase(&s_eraseinit, &page_error); + /* If erase operation was failed, a Flash error code is returned */ + if (flashstatus != HAL_OK) { + return flashstatus; + } + } + /* Mark Page1 as valid */ + flashstatus = HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, + PAGE1_BASE_ADDRESS, VALID_PAGE); + /* If program operation was failed, a Flash error code is returned */ + if (flashstatus != HAL_OK) { + return flashstatus; + } + } else /* First EEPROM access (Page0&1 are erased) or invalid state -> format EEPROM */ + { + /* Erase both Page0 and Page1 and set Page0 as valid page */ + flashstatus = EE_Format(); + /* If erase/program operation was failed, a Flash error code is returned */ + if (flashstatus != HAL_OK) { + return flashstatus; + } + } + break; + + case RECEIVE_DATA: + if (pagestatus1 == VALID_PAGE) /* Page0 receive, Page1 valid */ + { + /* Transfer data from Page1 to Page0 */ + for (varidx = 0; varidx < NB_OF_VAR; varidx++) { + if ((*(__IO uint16_t*) (PAGE0_BASE_ADDRESS + 6)) + == VirtAddVarTab[varidx]) { + x = varidx; + } + if (varidx != x) { + /* Read the last variables' updates */ + readstatus = EE_ReadVariable(VirtAddVarTab[varidx], + &DataVar); + /* In case variable corresponding to the virtual address was found */ + if (readstatus != 0x1) { + /* Transfer the variable to the Page0 */ + eepromstatus = EE_VerifyPageFullWriteVariable( + VirtAddVarTab[varidx], DataVar); + /* If program operation was failed, a Flash error code is returned */ + if (eepromstatus != HAL_OK) { + return eepromstatus; + } + } + } + } + /* Mark Page0 as valid */ + flashstatus = HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, + PAGE0_BASE_ADDRESS, VALID_PAGE); + /* If program operation was failed, a Flash error code is returned */ + if (flashstatus != HAL_OK) { + return flashstatus; + } + s_eraseinit.TypeErase = FLASH_TYPEERASE_PAGES; + s_eraseinit.PageAddress = PAGE1_ID; + s_eraseinit.NbPages = 1; + /* Erase Page1 */ + if (!EE_VerifyPageFullyErased(PAGE1_BASE_ADDRESS)) { + flashstatus = HAL_FLASHEx_Erase(&s_eraseinit, &page_error); + /* If erase operation was failed, a Flash error code is returned */ + if (flashstatus != HAL_OK) { + return flashstatus; + } + } + } else if (pagestatus1 == ERASED) /* Page0 receive, Page1 erased */ + { + s_eraseinit.TypeErase = FLASH_TYPEERASE_PAGES; + s_eraseinit.PageAddress = PAGE1_ID; + s_eraseinit.NbPages = 1; + /* Erase Page1 */ + if (!EE_VerifyPageFullyErased(PAGE1_BASE_ADDRESS)) { + flashstatus = HAL_FLASHEx_Erase(&s_eraseinit, &page_error); + /* If erase operation was failed, a Flash error code is returned */ + if (flashstatus != HAL_OK) { + return flashstatus; + } + } + /* Mark Page0 as valid */ + flashstatus = HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, + PAGE0_BASE_ADDRESS, VALID_PAGE); + /* If program operation was failed, a Flash error code is returned */ + if (flashstatus != HAL_OK) { + return flashstatus; + } + } else /* Invalid state -> format eeprom */ + { + /* Erase both Page0 and Page1 and set Page0 as valid page */ + flashstatus = EE_Format(); + /* If erase/program operation was failed, a Flash error code is returned */ + if (flashstatus != HAL_OK) { + return flashstatus; + } + } + break; + + case VALID_PAGE: + if (pagestatus1 == VALID_PAGE) /* Invalid state -> format eeprom */ + { + /* Erase both Page0 and Page1 and set Page0 as valid page */ + flashstatus = EE_Format(); + /* If erase/program operation was failed, a Flash error code is returned */ + if (flashstatus != HAL_OK) { + return flashstatus; + } + } else if (pagestatus1 == ERASED) /* Page0 valid, Page1 erased */ + { + s_eraseinit.TypeErase = FLASH_TYPEERASE_PAGES; + s_eraseinit.PageAddress = PAGE1_ID; + s_eraseinit.NbPages = 1; + /* Erase Page1 */ + if (!EE_VerifyPageFullyErased(PAGE1_BASE_ADDRESS)) { + flashstatus = HAL_FLASHEx_Erase(&s_eraseinit, &page_error); + /* If erase operation was failed, a Flash error code is returned */ + if (flashstatus != HAL_OK) { + return flashstatus; + } + } + } else /* Page0 valid, Page1 receive */ + { + /* Transfer data from Page0 to Page1 */ + for (varidx = 0; varidx < NB_OF_VAR; varidx++) { + if ((*(__IO uint16_t*) (PAGE1_BASE_ADDRESS + 6)) + == VirtAddVarTab[varidx]) { + x = varidx; + } + if (varidx != x) { + /* Read the last variables' updates */ + readstatus = EE_ReadVariable(VirtAddVarTab[varidx], + &DataVar); + /* In case variable corresponding to the virtual address was found */ + if (readstatus != 0x1) { + /* Transfer the variable to the Page1 */ + eepromstatus = EE_VerifyPageFullWriteVariable( + VirtAddVarTab[varidx], DataVar); + /* If program operation was failed, a Flash error code is returned */ + if (eepromstatus != HAL_OK) { + return eepromstatus; + } + } + } + } + /* Mark Page1 as valid */ + flashstatus = HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, + PAGE1_BASE_ADDRESS, VALID_PAGE); + /* If program operation was failed, a Flash error code is returned */ + if (flashstatus != HAL_OK) { + return flashstatus; + } + s_eraseinit.TypeErase = FLASH_TYPEERASE_PAGES; + s_eraseinit.PageAddress = PAGE0_ID; + s_eraseinit.NbPages = 1; + /* Erase Page0 */ + if (!EE_VerifyPageFullyErased(PAGE0_BASE_ADDRESS)) { + flashstatus = HAL_FLASHEx_Erase(&s_eraseinit, &page_error); + /* If erase operation was failed, a Flash error code is returned */ + if (flashstatus != HAL_OK) { + return flashstatus; + } + } + } + break; + + default: /* Any other state -> format eeprom */ + /* Erase both Page0 and Page1 and set Page0 as valid page */ + flashstatus = EE_Format(); + /* If erase/program operation was failed, a Flash error code is returned */ + if (flashstatus != HAL_OK) { + return flashstatus; + } + break; + } + + return HAL_OK; +} + +/** + * @brief Verify if specified page is fully erased. + * @param Address: page address + * This parameter can be one of the following values: + * @arg PAGE0_BASE_ADDRESS: Page0 base address + * @arg PAGE1_BASE_ADDRESS: Page1 base address + * @retval page fully erased status: + * - 0: if Page not erased + * - 1: if Page erased + */ +uint16_t EE_VerifyPageFullyErased(uint32_t Address) { + uint32_t readstatus = 1; + uint16_t addressvalue = 0x5555; + + /* Check each active page address starting from end */ + while (Address <= PAGE0_END_ADDRESS) { + /* Get the current location content to be compared with virtual address */ + addressvalue = (*(__IO uint16_t*) Address); + + /* Compare the read address with the virtual address */ + if (addressvalue != ERASED) { + + /* In case variable value is read, reset readstatus flag */ + readstatus = 0; + + break; + } + /* Next address location */ + Address = Address + 4; + } + + /* Return readstatus value: (0: Page not erased, 1: Page erased) */ + return readstatus; +} + +/** + * @brief Returns the last stored variable data, if found, which correspond to + * the passed virtual address + * @param VirtAddress: Variable virtual address + * @param Data: Global variable contains the read variable value + * @retval Success or error status: + * - 0: if variable was found + * - 1: if the variable was not found + * - NO_VALID_PAGE: if no valid page was found. + */ +uint16_t EE_ReadVariable(uint16_t VirtAddress, int16_t *Data) { + uint16_t validpage = PAGE0; + uint16_t addressvalue = 0x5555, readstatus = 1; + uint32_t address = EEPROM_START_ADDRESS, PageStartAddress = + EEPROM_START_ADDRESS; + + /* Get active Page for read operation */ + validpage = EE_FindValidPage(READ_FROM_VALID_PAGE); + + /* Check if there is no valid page */ + if (validpage == NO_VALID_PAGE) { + return NO_VALID_PAGE; + } + + /* Get the valid Page start Address */ + PageStartAddress = (uint32_t) (EEPROM_START_ADDRESS + + (uint32_t) (validpage * PAGE_SIZE )); + + /* Get the valid Page end Address */ + address = (uint32_t) ((EEPROM_START_ADDRESS - 2) + + (uint32_t) ((1 + validpage) * PAGE_SIZE )); + + /* Check each active page address starting from end */ + while (address > (PageStartAddress + 2)) { + /* Get the current location content to be compared with virtual address */ + addressvalue = (*(__IO uint16_t*) address); + + /* Compare the read address with the virtual address */ + if (addressvalue == VirtAddress) { + /* Get content of Address-2 which is variable value */ + *Data = (*(__IO uint16_t*) (address - 2)); + + /* In case variable value is read, reset readstatus flag */ + readstatus = 0; + + break; + } else { + /* Next address location */ + address = address - 4; + } + } + + /* Return readstatus value: (0: variable exist, 1: variable doesn't exist) */ + return readstatus; +} + +/** + * @brief Writes/upadtes variable data in EEPROM. + * @param VirtAddress: Variable virtual address + * @param Data: 16 bit data to be written + * @retval Success or error status: + * - FLASH_COMPLETE: on success + * - PAGE_FULL: if valid page is full + * - NO_VALID_PAGE: if no valid page was found + * - Flash error code: on write Flash error + */ +uint16_t EE_WriteVariable(uint16_t VirtAddress, int16_t Data) { + uint16_t Status = 0; + + /* Write the variable virtual address and value in the EEPROM */ + Status = EE_VerifyPageFullWriteVariable(VirtAddress, Data); + + /* In case the EEPROM active page is full */ + if (Status == PAGE_FULL) { + /* Perform Page transfer */ + Status = EE_PageTransfer(VirtAddress, Data); + } + + /* Return last operation status */ + return Status; +} + +/** + * @brief Erases PAGE and PAGE1 and writes VALID_PAGE header to PAGE + * @param None + * @retval Status of the last operation (Flash write or erase) done during + * EEPROM formating + */ +static HAL_StatusTypeDef EE_Format(void) { + HAL_StatusTypeDef flashstatus = HAL_OK; + uint32_t page_error = 0; + FLASH_EraseInitTypeDef s_eraseinit; + + s_eraseinit.TypeErase = FLASH_TYPEERASE_PAGES; + s_eraseinit.PageAddress = PAGE0_ID; + s_eraseinit.NbPages = 1; + /* Erase Page0 */ + if (!EE_VerifyPageFullyErased(PAGE0_BASE_ADDRESS)) { + flashstatus = HAL_FLASHEx_Erase(&s_eraseinit, &page_error); + /* If erase operation was failed, a Flash error code is returned */ + if (flashstatus != HAL_OK) { + return flashstatus; + } + } + /* Set Page0 as valid page: Write VALID_PAGE at Page0 base address */ + flashstatus = HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, + PAGE0_BASE_ADDRESS, VALID_PAGE); + /* If program operation was failed, a Flash error code is returned */ + if (flashstatus != HAL_OK) { + return flashstatus; + } + + s_eraseinit.PageAddress = PAGE1_ID; + /* Erase Page1 */ + if (!EE_VerifyPageFullyErased(PAGE1_BASE_ADDRESS)) { + flashstatus = HAL_FLASHEx_Erase(&s_eraseinit, &page_error); + /* If erase operation was failed, a Flash error code is returned */ + if (flashstatus != HAL_OK) { + return flashstatus; + } + } + + return HAL_OK; +} + +/** + * @brief Find valid Page for write or read operation + * @param Operation: operation to achieve on the valid page. + * This parameter can be one of the following values: + * @arg READ_FROM_VALID_PAGE: read operation from valid page + * @arg WRITE_IN_VALID_PAGE: write operation from valid page + * @retval Valid page number (PAGE or PAGE1) or NO_VALID_PAGE in case + * of no valid page was found + */ +static uint16_t EE_FindValidPage(uint8_t Operation) { + uint16_t pagestatus0 = 6, pagestatus1 = 6; + + /* Get Page0 actual status */ + pagestatus0 = (*(__IO uint16_t*) PAGE0_BASE_ADDRESS); + + /* Get Page1 actual status */ + pagestatus1 = (*(__IO uint16_t*) PAGE1_BASE_ADDRESS); + + /* Write or read operation */ + switch (Operation) { + case WRITE_IN_VALID_PAGE: /* ---- Write operation ---- */ + if (pagestatus1 == VALID_PAGE) { + /* Page0 receiving data */ + if (pagestatus0 == RECEIVE_DATA) { + return PAGE0; /* Page0 valid */ + } else { + return PAGE1; /* Page1 valid */ + } + } else if (pagestatus0 == VALID_PAGE) { + /* Page1 receiving data */ + if (pagestatus1 == RECEIVE_DATA) { + return PAGE1; /* Page1 valid */ + } else { + return PAGE0; /* Page0 valid */ + } + } else { + return NO_VALID_PAGE; /* No valid Page */ + } + + case READ_FROM_VALID_PAGE: /* ---- Read operation ---- */ + if (pagestatus0 == VALID_PAGE) { + return PAGE0; /* Page0 valid */ + } else if (pagestatus1 == VALID_PAGE) { + return PAGE1; /* Page1 valid */ + } else { + return NO_VALID_PAGE; /* No valid Page */ + } + + default: + return PAGE0; /* Page0 valid */ + } +} + +/** + * @brief Verify if active page is full and Writes variable in EEPROM. + * @param VirtAddress: 16 bit virtual address of the variable + * @param Data: 16 bit data to be written as variable value + * @retval Success or error status: + * - FLASH_COMPLETE: on success + * - PAGE_FULL: if valid page is full + * - NO_VALID_PAGE: if no valid page was found + * - Flash error code: on write Flash error + */ +static uint16_t EE_VerifyPageFullWriteVariable(uint16_t VirtAddress, + int16_t Data) { + HAL_StatusTypeDef flashstatus = HAL_OK; + uint16_t validpage = PAGE0; + uint32_t address = EEPROM_START_ADDRESS, pageendaddress = + EEPROM_START_ADDRESS + PAGE_SIZE; + + /* Get valid Page for write operation */ + validpage = EE_FindValidPage(WRITE_IN_VALID_PAGE); + + /* Check if there is no valid page */ + if (validpage == NO_VALID_PAGE) { + return NO_VALID_PAGE; + } + + /* Get the valid Page start address */ + address = (uint32_t) (EEPROM_START_ADDRESS + + (uint32_t) (validpage * PAGE_SIZE )); + + /* Get the valid Page end address */ + pageendaddress = (uint32_t) ((EEPROM_START_ADDRESS - 1) + + (uint32_t) ((validpage + 1) * PAGE_SIZE )); + + /* Check each active page address starting from begining */ + while (address < pageendaddress) { + /* Verify if address and address+2 contents are 0xFFFFFFFF */ + if ((*(__IO uint32_t*) address) == 0xFFFFFFFF) { + /* Set variable data */ + flashstatus = HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, address, + Data); + /* If program operation was failed, a Flash error code is returned */ + if (flashstatus != HAL_OK) { + return flashstatus; + } + /* Set variable virtual address */ + flashstatus = HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, + address + 2, VirtAddress); + /* Return program operation status */ + return flashstatus; + } else { + /* Next address location */ + address = address + 4; + } + } + + /* Return PAGE_FULL in case the valid page is full */ + return PAGE_FULL; +} + +/** + * @brief Transfers last updated variables data from the full Page to + * an empty one. + * @param VirtAddress: 16 bit virtual address of the variable + * @param Data: 16 bit data to be written as variable value + * @retval Success or error status: + * - FLASH_COMPLETE: on success + * - PAGE_FULL: if valid page is full + * - NO_VALID_PAGE: if no valid page was found + * - Flash error code: on write Flash error + */ +static uint16_t EE_PageTransfer(uint16_t VirtAddress, int16_t Data) { + HAL_StatusTypeDef flashstatus = HAL_OK; + uint32_t newpageaddress = EEPROM_START_ADDRESS; + uint32_t oldpageid = 0; + uint16_t validpage = PAGE0, varidx = 0; + uint16_t eepromstatus = 0, readstatus = 0; + uint32_t page_error = 0; + FLASH_EraseInitTypeDef s_eraseinit; + + /* Get active Page for read operation */ + validpage = EE_FindValidPage(READ_FROM_VALID_PAGE); + + if (validpage == PAGE1) /* Page1 valid */ + { + /* New page address where variable will be moved to */ + newpageaddress = PAGE0_BASE_ADDRESS; + + /* Old page ID where variable will be taken from */ + oldpageid = PAGE1_ID; + } else if (validpage == PAGE0) /* Page0 valid */ + { + /* New page address where variable will be moved to */ + newpageaddress = PAGE1_BASE_ADDRESS; + + /* Old page ID where variable will be taken from */ + oldpageid = PAGE0_ID; + } else { + return NO_VALID_PAGE; /* No valid Page */ + } + + /* Set the new Page status to RECEIVE_DATA status */ + flashstatus = HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, newpageaddress, + RECEIVE_DATA); + /* If program operation was failed, a Flash error code is returned */ + if (flashstatus != HAL_OK) { + return flashstatus; + } + + /* Write the variable passed as parameter in the new active page */ + eepromstatus = EE_VerifyPageFullWriteVariable(VirtAddress, Data); + /* If program operation was failed, a Flash error code is returned */ + if (eepromstatus != HAL_OK) { + return eepromstatus; + } + + /* Transfer process: transfer variables from old to the new active page */ + for (varidx = 0; varidx < NB_OF_VAR; varidx++) { + if (VirtAddVarTab[varidx] != VirtAddress) /* Check each variable except the one passed as parameter */ + { + /* Read the other last variable updates */ + readstatus = EE_ReadVariable(VirtAddVarTab[varidx], &DataVar); + /* In case variable corresponding to the virtual address was found */ + if (readstatus != 0x1) { + /* Transfer the variable to the new active page */ + eepromstatus = EE_VerifyPageFullWriteVariable( + VirtAddVarTab[varidx], DataVar); + /* If program operation was failed, a Flash error code is returned */ + if (eepromstatus != HAL_OK) { + return eepromstatus; + } + } + } + } + + s_eraseinit.TypeErase = FLASH_TYPEERASE_PAGES; + s_eraseinit.PageAddress = oldpageid; + s_eraseinit.NbPages = 1; + + /* Erase the old Page: Set old Page status to ERASED status */ + flashstatus = HAL_FLASHEx_Erase(&s_eraseinit, &page_error); + /* If erase operation was failed, a Flash error code is returned */ + if (flashstatus != HAL_OK) { + return flashstatus; + } + + /* Set new Page status to VALID_PAGE status */ + flashstatus = HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, newpageaddress, + VALID_PAGE); + /* If program operation was failed, a Flash error code is returned */ + if (flashstatus != HAL_OK) { + return flashstatus; + } + + /* Return last operation flash status */ + return flashstatus; +} + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/Core/Src/main.c b/Core/Src/main.c new file mode 100644 index 00000000..e713b4b7 --- /dev/null +++ b/Core/Src/main.c @@ -0,0 +1,476 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include +#include +#include "print.h" +#include "FOC.h" +#include "config.h" +#include "eeprom.h" +#include "button_processing.h" +#include "M365_Dashboard.h" +#include "motor.h" + +/* USER CODE END Includes */ + +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +UART_HandleTypeDef huart1; +UART_HandleTypeDef huart3; + +DMA_HandleTypeDef hdma_usart1_tx; +DMA_HandleTypeDef hdma_usart1_rx; +DMA_HandleTypeDef hdma_usart3_tx; +DMA_HandleTypeDef hdma_usart3_rx; + +int c_squared; + +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +int16_t i16_ph3_current = 0; +uint16_t i = 0; +uint16_t j = 0; +uint16_t k = 0; +volatile uint8_t ui8_print_flag = 0; +volatile uint8_t ui8_UART_flag = 0; +volatile uint8_t ui8_Push_Assist_flag = 0; +volatile uint8_t ui8_UART_TxCplt_flag = 1; +volatile uint8_t ui8_PAS_flag = 0; +volatile uint8_t ui8_SPEED_flag = 0; + +uint32_t uint32_PAS_HIGH_counter = 0; +uint32_t uint32_PAS_HIGH_accumulated = 32000; +uint32_t uint32_PAS_fraction = 100; +uint32_t uint32_SPEED_counter = 32000; +uint32_t uint32_PAS = 32000; + +uint8_t ui8_UART_Counter = 0; + +uint32_t uint32_torque_cumulated = 0; +uint32_t uint32_PAS_cumulated = 32000; +uint16_t uint16_mapped_throttle = 0; +uint16_t uint16_mapped_PAS = 0; +int32_t int32_current_target = 0; + +q31_t q31_Battery_Voltage = 0; + +char buffer[256]; +uint8_t assist_factor[10] = { 0, 51, 102, 153, 204, 255, 255, 255, 255, 255 }; + +uint16_t VirtAddVarTab[NB_OF_VAR] = { 0x01, 0x02, 0x03 }; + +#define iabs(x) (((x) >= 0)?(x):-(x)) + +M365State_t M365State; +volatile MotorStatePublic_t MSPublic; + +int16_t battery_percent_fromcapacity = 50; //Calculation of used watthours not implemented yet +int16_t wheel_time = 1000;//duration of one wheel rotation for speed calculation +int16_t current_display; //pepared battery current for display + +int16_t power; + +volatile uint32_t systick_cnt = 0; + +// every 1ms +void UserSysTickHandler(void) { + static uint32_t c; + + systick_cnt++; + + // every 10ms + if ((c % 10) == 0) { + motor_slow_loop(&MSPublic, &M365State); + } + c++; +} + +/** + * Enable DMA controller clock + */ +static void DMA_Init(void) { + + /* DMA controller clock enable */ + __HAL_RCC_DMA1_CLK_ENABLE(); + + // DMA channel 2: used for USART3_TX + /* DMA1_Channel4_IRQn interrupt configuration */ + HAL_NVIC_SetPriority(DMA1_Channel2_IRQn, 2, 0); + HAL_NVIC_EnableIRQ(DMA1_Channel2_IRQn); + + // DMA channel 3: used for USART3_RX + /* DMA1_Channel5_IRQn interrupt configuration */ + HAL_NVIC_SetPriority(DMA1_Channel3_IRQn, 2, 0); + HAL_NVIC_EnableIRQ(DMA1_Channel3_IRQn); + + // DMA channel 4: used for USART1_TX + /* DMA1_Channel4_IRQn interrupt configuration */ + HAL_NVIC_SetPriority(DMA1_Channel4_IRQn, 2, 0); + HAL_NVIC_EnableIRQ(DMA1_Channel4_IRQn); + + // DMA channel 5: used for USART1_RX + /* DMA1_Channel5_IRQn interrupt configuration */ + HAL_NVIC_SetPriority(DMA1_Channel5_IRQn, 2, 0); + HAL_NVIC_EnableIRQ(DMA1_Channel5_IRQn); +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) { + RCC_OscInitTypeDef RCC_OscInitStruct; + RCC_ClkInitTypeDef RCC_ClkInitStruct; + RCC_PeriphCLKInitTypeDef PeriphClkInit; + + /**Initializes the CPU, AHB and APB busses clocks + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + RCC_OscInitStruct.HSICalibrationValue = 16; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI_DIV2; + RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL16; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } + + /**Initializes the CPU, AHB and APB busses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK + | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; + + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } + + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC; + PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6; + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } + + /**Configure the Systick interrupt time + */ + HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq() / 1000); + + /**Configure the Systick + */ + HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK); + + /* SysTick_IRQn interrupt configuration */ + HAL_NVIC_SetPriority(SysTick_IRQn, 2, 0); +} + +/** + * @brief USART1 Initialization Function + * @param None + * @retval None + */ +static void USART1_UART_Init(void) { + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + huart1.Instance = USART1; + huart1.Init.BaudRate = 115200; + huart1.Init.WordLength = UART_WORDLENGTH_8B; + huart1.Init.StopBits = UART_STOPBITS_1; + huart1.Init.Parity = UART_PARITY_NONE; + huart1.Init.Mode = UART_MODE_TX_RX; + huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart1.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_HalfDuplex_Init(&huart1) != HAL_OK) { + Error_Handler(); + } + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/** + * @brief USART3 Initialization Function + * @param None + * @retval None + */ +static void USART3_UART_Init(void) { + + huart3.Instance = USART3; + + huart3.Init.BaudRate = 115200; + + huart3.Init.WordLength = UART_WORDLENGTH_8B; + huart3.Init.StopBits = UART_STOPBITS_1; + huart3.Init.Parity = UART_PARITY_NONE; + huart3.Init.Mode = UART_MODE_TX_RX; + huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE; + huart3.Init.OverSampling = UART_OVERSAMPLING_16; + if (HAL_UART_Init(&huart3) != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } +} + +/** + * @brief GPIO Initialization Function + * @param None + * @retval None + */ +static void GPIO_Init(void) { + GPIO_InitTypeDef GPIO_InitStruct = { 0 }; + + /* GPIO Ports Clock Enable */ + + __HAL_RCC_GPIOA_CLK_ENABLE(); + __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOC_CLK_ENABLE(); + __HAL_RCC_GPIOD_CLK_ENABLE(); + + /*Configure GPIO pin : PWR_BTN_Pin */ + GPIO_InitStruct.Pin = PWR_BTN_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(PWR_BTN_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(TPS_ENA_GPIO_Port, TPS_ENA_Pin, GPIO_PIN_SET); + + /*Configure GPIO pin : TPS_ENA_Pin */ + GPIO_InitStruct.Pin = TPS_ENA_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(TPS_ENA_GPIO_Port, &GPIO_InitStruct); + + /*Configure GPIO pin Output Level */ + HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET); + + /*Configure GPIO pin : LED_Pin */ + GPIO_InitStruct.Pin = LED_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(LED_GPIO_Port, &GPIO_InitStruct); + +// HAL_GPIO_WritePin(UART1_Tx_GPIO_Port, UART1_Tx_Pin, GPIO_PIN_RESET); + /*Configure GPIO pin : UART1Tx_Pin */ + GPIO_InitStruct.Pin = UART1_Tx_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; +// HAL_GPIO_Init(UART1_Tx_GPIO_Port, &GPIO_InitStruct); + + HAL_GPIO_WritePin(BrakeLight_GPIO_Port, BrakeLight_Pin, GPIO_PIN_RESET); + /*Configure GPIO pin : BrakeLight_Pin */ + GPIO_InitStruct.Pin = BrakeLight_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(BrakeLight_GPIO_Port, &GPIO_InitStruct); + + HAL_GPIO_WritePin(HALL_1_GPIO_Port, HALL_1_Pin, GPIO_PIN_RESET); +} + +/* USER CODE BEGIN 4 */ + +void HAL_UART_TxCpltCallback(UART_HandleTypeDef *UartHandle) { + ui8_UART_TxCplt_flag = 1; + + if(UartHandle==&huart1) HAL_HalfDuplex_EnableReceiver(&huart1); +} + +void HAL_UART_ErrorCallback(UART_HandleTypeDef *UartHandle) { + +} + +int32_t map(int32_t x, int32_t in_min, int32_t in_max, int32_t out_min, + int32_t out_max) { + // if input is smaller/bigger than expected return the min/max out ranges value + if (x < in_min) + return out_min; + else if (x > in_max) + return out_max; + + // map the input to the output range. + // round up if mapping bigger ranges to smaller ranges + else if ((in_max - in_min) > (out_max - out_min)) + return (x - in_min) * (out_max - out_min + 1) / (in_max - in_min + 1) + + out_min; + // round down if mapping smaller ranges to bigger ranges + else + return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; +} + +/* USER CODE END 4 */ + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) { + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) { + } + /* USER CODE END Error_Handler_Debug */ +} + +void _Error_Handler(char *file, int line) { + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + while (1) { + } + /* USER CODE END Error_Handler_Debug */ +} + +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ + +int main(void) { + /* USER CODE BEGIN */ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); + + /* Configure the system clock */ + SystemClock_Config(); + + // init GPIOS + GPIO_Init(); + + // init DMA for ADC, USART_1 and USART_3 + DMA_Init(); + + // init USART_1 and USART_3 + USART1_UART_Init(); + USART3_UART_Init(); + + // Virtual EEPROM init, needed by the motor controller + HAL_FLASH_Unlock(); + EE_Init(); + HAL_FLASH_Lock(); + + M365State.speed = 128000; + M365State.speed_limit = SPEEDLIMIT_NORMAL; + M365State.phase_current_limit = PH_CURRENT_MAX_NORMAL; + + MSPublic.speed_limit = M365State.speed_limit; + motor_init(&MSPublic); + + // init dashboard + M365Dashboard_init(huart1); + PWR_init(); + + while (1) { + + // search and process display message + search_DashboardMessage(&M365State, huart1); + + //slow loop process, every 20ms + static uint32_t systick_cnt_old = 0; + if ((systick_cnt_old != systick_cnt) && // only at a change + (systick_cnt % 20) == 0) { // every 20ms + systick_cnt_old = systick_cnt; + + #ifdef ADCTHROTTLE + // low pass filter torque signal + static uint32_t ui32_throttle_acc = 0; + uint16_t ui16_throttle; + ui32_throttle_acc -= ui32_throttle_acc >> 4; + ui32_throttle_acc += MSPublic.adcData[ADC_THROTTLE]; + ui16_throttle = ui32_throttle_acc >> 4; + + // map throttle to motor current + M365State.i_q_setpoint = map(ui16_throttle, THROTTLEOFFSET, THROTTLEMAX, 0, M365State.phase_current_limit); + #endif + + // process buttons + checkButton(&M365State); + + // low pass filter measured battery voltage + static q31_t q31_batt_voltage_acc = 0; + q31_batt_voltage_acc -= (q31_batt_voltage_acc >> 7); + q31_batt_voltage_acc += MSPublic.adcData[ADC_VOLTAGE]; + q31_Battery_Voltage = (q31_batt_voltage_acc >> 7) * CAL_BAT_V; + + // increase shutdown counter + if (M365State.shutdown) M365State.shutdown++; + + // temperature + M365State.Temperature = (MSPublic.adcData[ADC_TEMP] * 41) >> 8; //0.16 is calibration constant: Analog_in[10mV/°C]/ADC value. Depending on the sensor LM35) + + // battery voltage + M365State.Voltage = q31_Battery_Voltage; + } + } + + /* USER CODE END */ +} diff --git a/Core/Src/motor.c b/Core/Src/motor.c new file mode 100644 index 00000000..eb1ca686 --- /dev/null +++ b/Core/Src/motor.c @@ -0,0 +1,1169 @@ +#include +#include +#include "FOC.h" +#include "main.h" +#include "motor.h" +#include "print.h" +#include "eeprom.h" + +ADC_HandleTypeDef hadc1; +ADC_HandleTypeDef hadc2; +DMA_HandleTypeDef hdma_adc1; + +TIM_HandleTypeDef htim1; +TIM_HandleTypeDef htim2; +TIM_HandleTypeDef htim3; +TIM_HandleTypeDef htim4; + +uint16_t adcData1[6 * sizeof(uint32_t)]; // point to buffer for ADC1 inputs + +#define JSQR_PHASE_A 0b00011000000000000000 //3 +#define JSQR_PHASE_B 0b00100000000000000000 //4 +#define JSQR_PHASE_C 0b00101000000000000000 //5 + +MotorState_t MS; + +volatile int16_t i16_ph1_current = 0; +volatile int16_t i16_ph2_current = 0; +volatile int16_t i16_ph2_current_filter = 0; +volatile uint8_t ui8_adc_inj_flag = 0; +q31_t raw_inj1; +q31_t raw_inj2; +uint8_t ui8_hall_state = 0; +uint8_t ui8_hall_state_old = 0; +uint8_t ui8_hall_case = 0; +uint8_t ui8_BC_limit_flag = 0; +uint16_t ui16_tim2_recent = 0; +uint16_t ui16_timertics = 5000; //timertics between two hall events for 60° interpolation +volatile uint8_t ui8_6step_flag = 0; +q31_t q31_rotorposition_absolute; +q31_t q31_rotorposition_hall; +q31_t q31_rotorposition_motor_specific = SPEC_ANGLE; +q31_t q31_rotorposition_PLL = 0; +q31_t q31_angle_per_tic = 0; +int8_t i8_recent_rotor_direction = 1; +int16_t i16_hall_order = 1; +q31_t switchtime[3]; +volatile uint8_t ui8_overflow_flag = 0; +char char_dyn_adc_state = 1; +char char_dyn_adc_state_old = 1; +q31_t q31_tics_filtered = 128000; +q31_t q31_t_Battery_Current_accumulated = 0; +int8_t i8_direction = REVERSE; +volatile int8_t i8_reverse_flag = 1; //for temporaribly reverse direction +q31_t q31_u_d_temp = 0; +q31_t q31_u_q_temp = 0; +int16_t i16_sinus = 0; +int16_t i16_cosinus = 0; +uint16_t uint16_half_rotation_counter = 0; +uint16_t uint16_full_rotation_counter = 0; +volatile uint8_t ui8_adc_offset_done_flag = 0; + +static q31_t tics_lower_limit; +static q31_t tics_higher_limit; + +//Rotor angle scaled from degree to q31 for arm_math. -180°-->-2^31, 0°-->0, +180°-->+2^31 +const q31_t DEG_0 = 0; +const q31_t DEG_plus60 = 715827883; +const q31_t DEG_plus120 = 1431655765; +const q31_t DEG_plus180 = 2147483647; +const q31_t DEG_minus60 = -715827883; +const q31_t DEG_minus120 = -1431655765; + +volatile uint16_t ui16_reg_adc_value; +volatile uint32_t ui32_reg_adc_value_filter; +volatile uint8_t ui8_adc_regular_flag = 0; +uint16_t ui16_ph1_offset = 0; +uint16_t ui16_ph2_offset = 0; +uint16_t ui16_ph3_offset = 0; + +volatile MotorStatePublic_t* p_MotorStatePublic; + +// regular ADC callback +void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc) { + ui8_adc_regular_flag = 1; +} + +static void motor_disable_pwm(void) { + CLEAR_BIT(TIM1->BDTR, TIM_BDTR_MOE); + MS.system_state = Stop; +} + +static void motor_enable_pwm(void) { + SET_BIT(TIM1->BDTR, TIM_BDTR_MOE); +} + +static bool motor_pwm_is_enabled(void) { + return READ_BIT(TIM1->BDTR, TIM_BDTR_MOE); +} + +q31_t speed_PLL(q31_t actual, q31_t target) { + static q31_t q31_d_i = 0; + + temp6 = target - actual; // used on fast log only + + q31_t delta = target - actual; + q31_t q31_p = (delta >> P_FACTOR_PLL); //7 for Shengyi middrive, 10 for BionX IGH3 + q31_d_i += (delta >> I_FACTOR_PLL); //11 for Shengyi middrive, 10 for BionX IGH3 + + if (q31_d_i>((DEG_plus60>>19)*500/ui16_timertics)<<16) q31_d_i = ((DEG_plus60>>19)*500/ui16_timertics)<<16; + if (q31_d_i<-((DEG_plus60>>19)*500/ui16_timertics)<<16) q31_d_i =- ((DEG_plus60>>19)*500/ui16_timertics)<<16; + + q31_t q31_d_dc = q31_p + q31_d_i; + + // if PWM is disabled, reset q31_d_i + if (!READ_BIT(TIM1->BDTR, TIM_BDTR_MOE)) q31_d_i = 0; + + return q31_d_dc; +} + +void get_standstill_position() { + // HAL_Delay(100); // WARNING!! calling this will block as HAL_Delay uses Systick interrupt and this code is also called from inside Systick interrupt!! + HAL_GPIO_EXTI_Callback(GPIO_PIN_4); //read in initial rotor position + + switch (ui8_hall_state) { + //6 cases for forward direction + case 2: + q31_rotorposition_hall = DEG_0 + q31_rotorposition_motor_specific; + break; + case 6: + q31_rotorposition_hall = DEG_plus60 + q31_rotorposition_motor_specific; + break; + case 4: + q31_rotorposition_hall = DEG_plus120 + q31_rotorposition_motor_specific; + break; + case 5: + q31_rotorposition_hall = DEG_plus180 + q31_rotorposition_motor_specific; + break; + case 1: + q31_rotorposition_hall = DEG_minus120 + + q31_rotorposition_motor_specific; + break; + case 3: + q31_rotorposition_hall = DEG_minus60 + q31_rotorposition_motor_specific; + break; + } + + q31_rotorposition_absolute = q31_rotorposition_hall; +} + +int32_t speed_to_tics(uint8_t speed) { + return WHEEL_CIRCUMFERENCE * 5 * 3600 / (6 * GEAR_RATIO * speed * 10); +} + +int8_t tics_to_speed(uint32_t tics) { + return WHEEL_CIRCUMFERENCE * 5 * 3600 / (6 * GEAR_RATIO * tics * 10);; +} + +void motor_autodetect() { + motor_enable_pwm(); + MS.hall_angle_detect_flag = 0; //set uq to contstant value in FOC.c for open loop control + q31_rotorposition_absolute = 1 << 31; + uint8_t zerocrossing = 0; + q31_t diffangle = 0; + HAL_Delay(5); + for (uint32_t i = 0; i < 1080; i++) { + q31_rotorposition_absolute += 11930465; //drive motor in open loop with steps of 1� + HAL_Delay(5); + if (q31_rotorposition_absolute > -60 + && q31_rotorposition_absolute < 60) { + switch (ui8_hall_case) //12 cases for each transition from one stage to the next. 6x forward, 6x reverse + { + //6 cases for forward direction + case 64: + zerocrossing = 45; + diffangle = DEG_plus180; + break; + case 45: + zerocrossing = 51; + diffangle = DEG_minus120; + break; + case 51: + zerocrossing = 13; + diffangle = DEG_minus60; + break; + case 13: + zerocrossing = 32; + diffangle = DEG_0; + break; + case 32: + zerocrossing = 26; + diffangle = DEG_plus60; + break; + case 26: + zerocrossing = 64; + diffangle = DEG_plus120; + break; + + //6 cases for reverse direction + case 46: + zerocrossing = 62; + diffangle = -DEG_plus60; + break; + case 62: + zerocrossing = 23; + diffangle = -DEG_0; + break; + case 23: + zerocrossing = 31; + diffangle = -DEG_minus60; + break; + case 31: + zerocrossing = 15; + diffangle = -DEG_minus120; + break; + case 15: + zerocrossing = 54; + diffangle = -DEG_plus180; + break; + case 54: + zerocrossing = 46; + diffangle = -DEG_plus120; + break; + + } // end case + + } + + if (ui8_hall_state_old != ui8_hall_state) { + printf_("angle: %d, hallstate: %d, hallcase %d \n", + (int16_t) (((q31_rotorposition_absolute >> 23) * 180) >> 8), + ui8_hall_state, ui8_hall_case); + + if (ui8_hall_case == zerocrossing) { + q31_rotorposition_motor_specific = q31_rotorposition_absolute + - diffangle; + } + + ui8_hall_state_old = ui8_hall_state; + } + } + + motor_disable_pwm(); + TIM1->CCR1 = 1023; //set initial PWM values + TIM1->CCR2 = 1023; + TIM1->CCR3 = 1023; + MS.hall_angle_detect_flag=1; + MS.i_d = 0; + MS.i_q = 0; + MS.u_d=0; + MS.u_q=0; + q31_tics_filtered=1000000; + + // store variables on flash memory + HAL_FLASH_Unlock(); + + EE_WriteVariable(EEPROM_POS_SPEC_ANGLE, q31_rotorposition_motor_specific >> 16); + + if (i8_recent_rotor_direction == 1) { + EE_WriteVariable(EEPROM_POS_HALL_ORDER, 1); + i16_hall_order = 1; + } else { + EE_WriteVariable(EEPROM_POS_HALL_ORDER, -1); + i16_hall_order = -1; + } + + HAL_FLASH_Lock(); + + MS.hall_angle_detect_flag = 1; +#if (DISPLAY_TYPE == DISPLAY_TYPE_DEBUG) + printf_("Motor specific angle: %d, direction %d, zerocrossing %d \n ", + (int16_t) (((q31_rotorposition_motor_specific >> 23) * 180) >> 8), + i16_hall_order, zerocrossing); +#endif + HAL_Delay(5); + //NVIC_SystemReset(); +} + +void calculate_tic_limits(int8_t speed_limit) { + // tics = wheelcirc * timerfrequency / (no. of hallevents per rev * gear-ratio * speedlimit) * 3600 / 1000000 + tics_lower_limit = WHEEL_CIRCUMFERENCE * 5 * 3600 / (6 * GEAR_RATIO * speed_limit * 10); + tics_higher_limit = WHEEL_CIRCUMFERENCE * 5 * 3600 / (6 * GEAR_RATIO * (speed_limit + 2) * 10); +} + +// call every 10ms +void motor_slow_loop(volatile MotorStatePublic_t* p_MotorStatePublic, M365State_t* p_M365State) { + + // i_q current limits + if (p_M365State->i_q_setpoint_target > p_M365State->phase_current_limit) { + MS.i_q_setpoint_temp = p_M365State->phase_current_limit; + } + if (p_M365State->i_q_setpoint_target < -p_M365State->phase_current_limit) { + MS.i_q_setpoint_temp = -p_M365State->phase_current_limit; + } + + // ramp down current at speed limit + MS.i_q_setpoint_temp = map(q31_tics_filtered >> 3, tics_higher_limit, + tics_lower_limit, 0, p_M365State->i_q_setpoint_target); + + // see if we should do flux weakening: i_d current + if (MS.u_abs > (_U_MAX-10) && p_M365State->mode == sport) { + MS.i_d_setpoint_temp = map(p_M365State->speed, (KV*p_M365State->Voltage/10000)-3, (KV*p_M365State->Voltage/10000)+15, 0, FW_CURRENT_MAX); + } + else { + MS.i_d_setpoint_temp = 0; + } + + // check and limit absolute value of current vector + q31_t i_setpoint_abs; + arm_sqrt_q31((MS.i_q_setpoint_temp*MS.i_q_setpoint_temp+MS.i_d_setpoint_temp*MS.i_d_setpoint_temp)<<1, &i_setpoint_abs); + MS.i_setpoint_abs = (i_setpoint_abs >> 16) + 1; + + // set final current set points + if (MS.i_setpoint_abs > p_M365State->phase_current_limit) { + MS.i_q_setpoint = (MS.i_q_setpoint_temp * p_M365State->phase_current_limit) / MS.i_setpoint_abs; //division! + MS.i_d_setpoint = (MS.i_d_setpoint_temp * p_M365State->phase_current_limit) / MS.i_setpoint_abs; //division! + MS.i_setpoint_abs = p_M365State->phase_current_limit; + } else { + MS.i_q_setpoint = MS.i_q_setpoint_temp; + MS.i_d_setpoint = MS.i_d_setpoint_temp; + } + + // if we should startup the motor + if (MS.i_q_setpoint && motor_pwm_is_enabled() == 0) { + // set initial PWM values + TIM1->CCR1 = 1023; + TIM1->CCR2 = 1023; + TIM1->CCR3 = 1023; + + MS.i_d = 0; + MS.i_q = 0; + + speed_PLL(0,0); // reset integral part + uint16_half_rotation_counter = 0; + uint16_full_rotation_counter = 0; + __HAL_TIM_SET_COUNTER(&htim2, 0); //reset tim2 counter + ui16_timertics = 40000; //set interval between two hallevents to a large value + i8_recent_rotor_direction = i8_direction * i8_reverse_flag; + motor_enable_pwm(); + get_standstill_position(); + } else { +#ifdef KILL_ON_ZERO + if(uint16_mapped_throttle==0&&READ_BIT(TIM1->BDTR, TIM_BDTR_MOE)){ + CLEAR_BIT(TIM1->BDTR, TIM_BDTR_MOE); //Disable PWM if motor is not turning + get_standstill_position(); + printf_("shutdown %d\n", q31_rotorposition_absolute); + } +#endif + + // calculate wheel speed + if (MS.system_state == Stop || MS.system_state == SixStep) { + p_M365State->speed = 0; + } else { + p_M365State->speed = tics_to_speed(q31_tics_filtered >> 3); + } + + // see if PWM should be disable + if (MS.i_q_setpoint == 0 && + (uint16_full_rotation_counter > 7999 || uint16_half_rotation_counter > 7999) && + motor_pwm_is_enabled()) { + motor_disable_pwm(); + } + } +} + +/** + * Enable DMA controller clock + */ +static void DMA_Init(void) { + + /* DMA controller clock enable */ + __HAL_RCC_DMA1_CLK_ENABLE(); + + // DMA channel 1: used for ADC + /* DMA1_Channel1_IRQn interrupt configuration */ + HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 2, 0); + HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn); +} + +/** + * @brief ADC1 Initialization Function + * @param None + * @retval None + */ +static void ADC1_Init(void) { + /**Common config + */ + hadc1.Instance = ADC1; + hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE; + hadc1.Init.ContinuousConvMode = DISABLE; + hadc1.Init.DiscontinuousConvMode = DISABLE; + hadc1.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T3_TRGO; + hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; + hadc1.Init.NbrOfConversion = 6; + hadc1.Init.NbrOfDiscConversion = 0; + + if (HAL_ADC_Init(&hadc1) != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } + + /**Configure the ADC multi-mode + */ + ADC_MultiModeTypeDef multimode; + multimode.Mode = ADC_DUALMODE_REGSIMULT_INJECSIMULT; + if (HAL_ADCEx_MultiModeConfigChannel(&hadc1, &multimode) != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } + + /**Configure Injected Channel + */ + ADC_InjectionConfTypeDef sConfigInjected; + sConfigInjected.InjectedChannel = ADC_CHANNEL_3; + sConfigInjected.InjectedRank = ADC_INJECTED_RANK_1; + sConfigInjected.InjectedNbrOfConversion = 1; + sConfigInjected.InjectedSamplingTime = ADC_SAMPLETIME_1CYCLE_5; + sConfigInjected.ExternalTrigInjecConv = ADC_EXTERNALTRIGINJECCONV_T1_CC4; // Hier bin ich nicht sicher ob Trigger out oder direkt CC4 + sConfigInjected.AutoInjectedConv = DISABLE; //muß aus sein + sConfigInjected.InjectedDiscontinuousConvMode = DISABLE; + sConfigInjected.InjectedOffset = 0; + HAL_ADC_Stop(&hadc1); //ADC muß gestoppt sein, damit Triggerquelle gesetzt werden kann. + if (HAL_ADCEx_InjectedConfigChannel(&hadc1, &sConfigInjected) != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } + + /**Configure Regular Channel + */ + ADC_ChannelConfTypeDef sConfig; + sConfig.Channel = ADC_CHANNEL_2; + sConfig.Rank = ADC_REGULAR_RANK_1; + sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; + if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } + + /**Configure Regular Channel + */ + sConfig.Channel = ADC_CHANNEL_7; + sConfig.Rank = ADC_REGULAR_RANK_2; + sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; + if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } + /**Configure Regular Channel + */ + sConfig.Channel = ADC_CHANNEL_0; + sConfig.Rank = ADC_REGULAR_RANK_3; + sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; + if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } + /**Configure Regular Channel + */ + sConfig.Channel = JSQR_PHASE_A >> 15; + sConfig.Rank = ADC_REGULAR_RANK_4; + sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; + if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } + /**Configure Regular Channel + */ + sConfig.Channel = JSQR_PHASE_B >> 15; + sConfig.Rank = ADC_REGULAR_RANK_5; + sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; + if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } + + sConfig.Channel = JSQR_PHASE_C >> 15; + sConfig.Rank = ADC_REGULAR_RANK_6; + sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; + if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } +} + +/** + * @brief ADC2 Initialization Function + * @param None + * @retval None + */ +static void ADC2_Init(void) { + + ADC_InjectionConfTypeDef sConfigInjected; + + /**Common config + */ + hadc2.Instance = ADC2; + hadc2.Init.ScanConvMode = ADC_SCAN_ENABLE; //hier auch Scan enable?! + hadc2.Init.ContinuousConvMode = DISABLE; + hadc2.Init.DiscontinuousConvMode = DISABLE; + hadc2.Init.ExternalTrigConv = ADC_SOFTWARE_START; + hadc2.Init.DataAlign = ADC_DATAALIGN_RIGHT; + hadc2.Init.NbrOfConversion = 1; + if (HAL_ADC_Init(&hadc2) != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } + + /**Configure Injected Channel + */ + sConfigInjected.InjectedChannel = ADC_CHANNEL_4; + sConfigInjected.InjectedRank = ADC_INJECTED_RANK_1; + sConfigInjected.InjectedNbrOfConversion = 1; + sConfigInjected.InjectedSamplingTime = ADC_SAMPLETIME_1CYCLE_5; + sConfigInjected.ExternalTrigInjecConv = ADC_INJECTED_SOFTWARE_START; + sConfigInjected.AutoInjectedConv = DISABLE; + sConfigInjected.InjectedDiscontinuousConvMode = DISABLE; + sConfigInjected.InjectedOffset = 0; + if (HAL_ADCEx_InjectedConfigChannel(&hadc2, &sConfigInjected) != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } +} + +/** + * @brief TIM1 Initialization Function + * @param None + * @retval None + */ +static void TIM1_Init(void) { + + TIM_ClockConfigTypeDef sClockSourceConfig; + TIM_MasterConfigTypeDef sMasterConfig; + TIM_OC_InitTypeDef sConfigOC; + TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig; + + htim1.Instance = TIM1; + htim1.Init.Prescaler = 0; + htim1.Init.CounterMode = TIM_COUNTERMODE_CENTERALIGNED1; + htim1.Init.Period = _T; + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } + + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } + + if (HAL_TIM_PWM_Init(&htim1) != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } + + if (HAL_TIM_OC_Init(&htim1) != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } + + sMasterConfig.MasterOutputTrigger = TIM_TRGO_OC4REF; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) + != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } + + sConfigOC.OCMode = TIM_OCMODE_PWM1; + sConfigOC.Pulse = 1; + sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; + sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; //TODO: depends on gate driver! + sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; + sConfigOC.OCIdleState = TIM_OCIDLESTATE_SET; + sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; + if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) + != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } + + if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) + != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } + + if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3) + != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } + + sConfigOC.OCMode = TIM_OCMODE_PWM2; + sConfigOC.Pulse = _T - 1; + if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_4) + != HAL_OK) { + Error_Handler(); + } + + sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE; + sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE; + sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF; + sBreakDeadTimeConfig.DeadTime = 32; + sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; + sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH; + sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; + if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) + != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } + + HAL_TIM_MspPostInit(&htim1); +} + +/** + * @brief TIM2 Initialization Function + * @param None + * @retval None + */ +static void TIM2_Init(void) { + + TIM_ClockConfigTypeDef sClockSourceConfig; + TIM_MasterConfigTypeDef sMasterConfig; + + htim2.Instance = TIM2; + htim2.Init.Prescaler = 128; + htim2.Init.CounterMode = TIM_COUNTERMODE_UP; + htim2.Init.Period = 64000; + htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim2) != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } + + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } + + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) + != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } + +} + +static void GPIO_Init(void) { + GPIO_InitTypeDef GPIO_InitStruct = { 0 }; + + /* GPIO Ports Clock Enable */ + __HAL_RCC_GPIOB_CLK_ENABLE(); + + /* Configure GPIO pins for motor hall sensors */ + GPIO_InitStruct.Pin = HALL_1_Pin | HALL_2_Pin | HALL_3_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING; + GPIO_InitStruct.Pull = GPIO_PULLUP; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + + /*Configure peripheral I/O remapping */ + __HAL_AFIO_REMAP_PD01_ENABLE(); + + /* EXTI interrupt init*/ + HAL_NVIC_SetPriority(EXTI4_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(EXTI4_IRQn); + + HAL_NVIC_SetPriority(EXTI9_5_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(EXTI9_5_IRQn); + + HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(EXTI0_IRQn); +} + +void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { + if (htim == &htim3) { + + if (uint16_full_rotation_counter < 8000) { + uint16_full_rotation_counter++; //full rotation counter for motor standstill detection + } + + if (uint16_half_rotation_counter < 8000) { + uint16_half_rotation_counter++; //half rotation counter for motor standstill detectio + } + } +} + +void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { + //Hall sensor event processing + if (GPIO_Pin == GPIO_PIN_4 || GPIO_Pin == GPIO_PIN_5 + || GPIO_Pin == GPIO_PIN_0) //check for right interrupt source + { + ui8_hall_state = ((GPIOB->IDR & 1) << 2) | ((GPIOB->IDR >> 4) & 0b11); //Mask input register with Hall 1 - 3 bits + + if (ui8_hall_state == ui8_hall_state_old) + return; + + ui8_hall_case = ui8_hall_state_old * 10 + ui8_hall_state; + if (MS.hall_angle_detect_flag) { //only process, if autodetect procedere is fininshed + ui8_hall_state_old = ui8_hall_state; + } + + ui16_tim2_recent = __HAL_TIM_GET_COUNTER(&htim2); // read in timertics since last hall event + + if (ui16_tim2_recent > 100) { //debounce + ui16_timertics = ui16_tim2_recent; //save timertics since last hall event + q31_tics_filtered -= q31_tics_filtered >> 3; + q31_tics_filtered += ui16_timertics; + __HAL_TIM_SET_COUNTER(&htim2, 0); //reset tim2 counter + ui8_overflow_flag = 0; + + } + + switch (ui8_hall_case) //12 cases for each transition from one stage to the next. 6x forward, 6x reverse + { + //6 cases for forward direction + case 64: + q31_rotorposition_hall = DEG_plus120 * i16_hall_order + + q31_rotorposition_motor_specific; + i8_recent_rotor_direction = 1; + uint16_full_rotation_counter = 0; + break; + case 45: + q31_rotorposition_hall = DEG_plus180 * i16_hall_order + + q31_rotorposition_motor_specific; + i8_recent_rotor_direction = 1; + break; + case 51: + q31_rotorposition_hall = DEG_minus120 * i16_hall_order + + q31_rotorposition_motor_specific; + i8_recent_rotor_direction = 1; + break; + case 13: + q31_rotorposition_hall = DEG_minus60 * i16_hall_order + + q31_rotorposition_motor_specific; + i8_recent_rotor_direction = 1; + uint16_half_rotation_counter = 0; + break; + case 32: + q31_rotorposition_hall = DEG_0 * i16_hall_order + + q31_rotorposition_motor_specific; + i8_recent_rotor_direction = 1; + break; + case 26: + q31_rotorposition_hall = DEG_plus60 * i16_hall_order + + q31_rotorposition_motor_specific; + i8_recent_rotor_direction = 1; + break; + + //6 cases for reverse direction + case 46: + q31_rotorposition_hall = DEG_plus120 * i16_hall_order + + q31_rotorposition_motor_specific; + i8_recent_rotor_direction = -1; + break; + case 62: + q31_rotorposition_hall = DEG_plus60 * i16_hall_order + + q31_rotorposition_motor_specific; + i8_recent_rotor_direction = -1; + break; + case 23: + q31_rotorposition_hall = DEG_0 * i16_hall_order + + q31_rotorposition_motor_specific; + i8_recent_rotor_direction = -1; + uint16_half_rotation_counter = 0; + break; + case 31: + q31_rotorposition_hall = DEG_minus60 * i16_hall_order + + q31_rotorposition_motor_specific; + i8_recent_rotor_direction = -1; + break; + case 15: + q31_rotorposition_hall = DEG_minus120 * i16_hall_order + + q31_rotorposition_motor_specific; + i8_recent_rotor_direction = -1; + break; + case 54: + q31_rotorposition_hall = DEG_plus180 * i16_hall_order + + q31_rotorposition_motor_specific; + i8_recent_rotor_direction = -1; + uint16_full_rotation_counter = 0; + break; + } // end case + +#ifdef SPEED_PLL + q31_angle_per_tic = speed_PLL(q31_rotorposition_PLL,q31_rotorposition_hall); +#endif + } //end if +} + +//assuming, a proper AD conversion takes 350 timer tics, to be confirmed. DT+TR+TS deadtime + noise subsiding + sample time +void dyn_adc_state(q31_t angle) { + if (switchtime[2] > switchtime[0] && switchtime[2] > switchtime[1]) { + MS.char_dyn_adc_state = 1; // -90° .. +30°: Phase C at high dutycycles + if (switchtime[2] > 1500) + TIM1->CCR4 = switchtime[2] - TRIGGER_OFFSET_ADC; + else + TIM1->CCR4 = TRIGGER_DEFAULT; + } + + if (switchtime[0] > switchtime[1] && switchtime[0] > switchtime[2]) { + MS.char_dyn_adc_state = 2; // +30° .. 150° Phase A at high dutycycles + if (switchtime[0] > 1500) + TIM1->CCR4 = switchtime[0] - TRIGGER_OFFSET_ADC; + else + TIM1->CCR4 = TRIGGER_DEFAULT; + } + + if (switchtime[1] > switchtime[0] && switchtime[1] > switchtime[2]) { + MS.char_dyn_adc_state = 3; // +150 .. -90° Phase B at high dutycycles + if (switchtime[1] > 1500) + TIM1->CCR4 = switchtime[1] - TRIGGER_OFFSET_ADC; + else + TIM1->CCR4 = TRIGGER_DEFAULT; + } +} + +static void set_inj_channel(char state) { + switch (state) { + case 1: //Phase C at high dutycycles, read current from phase A + B + ADC1->JSQR = JSQR_PHASE_A; //ADC1 injected reads phase A JL = 0b00, JSQ4 = 0b00100 (decimal 4 = channel 4) + ADC1->JOFR1 = ui16_ph1_offset; + ADC2->JSQR = JSQR_PHASE_B; //ADC2 injected reads phase B, JSQ4 = 0b00101, decimal 5 + ADC2->JOFR1 = ui16_ph2_offset; + break; + + case 2: //Phase A at high dutycycles, read current from phase C + B + ADC1->JSQR = JSQR_PHASE_C; //ADC1 injected reads phase C, JSQ4 = 0b00110, decimal 6 + ADC1->JOFR1 = ui16_ph3_offset; + ADC2->JSQR = JSQR_PHASE_B; //ADC2 injected reads phase B, JSQ4 = 0b00101, decimal 5 + ADC2->JOFR1 = ui16_ph2_offset; + break; + + case 3: //Phase B at high dutycycles, read current from phase A + C + ADC1->JSQR = JSQR_PHASE_A; //ADC1 injected reads phase A JL = 0b00, JSQ4 = 0b00100 (decimal 4 = channel 4) + ADC1->JOFR1 = ui16_ph1_offset; + ADC2->JSQR = JSQR_PHASE_C; //ADC2 injected reads phase C, JSQ4 = 0b00110, decimal 6 + ADC2->JOFR1 = ui16_ph3_offset; + break; + } +} + +void runPIcontrol(){ + //PI-control processing + if (PI_flag) { + //HAL_GPIO_WritePin(UART1_Tx_GPIO_Port, UART1_Tx_Pin, GPIO_PIN_SET); + q31_t_Battery_Current_accumulated -= q31_t_Battery_Current_accumulated >> 8; + q31_t_Battery_Current_accumulated += ((MS.i_q * MS.u_abs) >> 11) * + (uint16_t) (CAL_I >> 8); //to be updated for Flux weakening! + + MS.Battery_Current = (q31_t_Battery_Current_accumulated >> 8) + * i8_direction * i8_reverse_flag; //Battery current in mA + + //Check battery current limit + if (MS.Battery_Current > BATTERYCURRENT_MAX) + ui8_BC_limit_flag = 1; + if (MS.Battery_Current < -REGEN_CURRENT_MAX) + ui8_BC_limit_flag = 1; + //reset battery current flag with small hysteresis + if (MS.i_q * i8_direction * i8_reverse_flag > 100) { //motor mode + if (((MS.i_q_setpoint * MS.u_abs) >> 11) + * (uint16_t) (CAL_I >> 8) + < (BATTERYCURRENT_MAX * 7) >> 3) + ui8_BC_limit_flag = 0; + } else { //generator mode + if (((MS.i_q_setpoint * MS.u_abs) >> 11) + * (uint16_t) (CAL_I >> 8) + > (-REGEN_CURRENT_MAX * 7) >> 3) + ui8_BC_limit_flag = 0; + } + + //control iq + + //if + if (!ui8_BC_limit_flag) { + q31_u_q_temp = PI_control_i_q(MS.i_q, + (q31_t) i8_direction * i8_reverse_flag + * MS.i_q_setpoint); + } else { + if (MS.i_q * i8_direction * i8_reverse_flag > 100) { //motor mode + q31_u_q_temp = PI_control_i_q( + (MS.Battery_Current >> 6) * i8_direction + * i8_reverse_flag, + (q31_t) (BATTERYCURRENT_MAX >> 6) * i8_direction + * i8_reverse_flag); + } else { //generator mode + q31_u_q_temp = PI_control_i_q( + (MS.Battery_Current >> 6) * i8_direction + * i8_reverse_flag, + (q31_t) (-REGEN_CURRENT_MAX >> 6) * i8_direction + * i8_reverse_flag); + } + } + + //Control id + q31_u_d_temp = -PI_control_i_d(MS.i_d, MS.i_d_setpoint, abs(q31_u_q_temp / MAX_D_FACTOR)); //control direct current to recent setpoint + + arm_sqrt_q31((q31_u_d_temp*q31_u_d_temp+q31_u_q_temp*q31_u_q_temp)<<1,&MS.u_abs); + MS.u_abs = (MS.u_abs>>16)+1; + + if (MS.u_abs > _U_MAX) { + MS.u_q = (q31_u_q_temp * _U_MAX) / MS.u_abs; //division! + MS.u_d = (q31_u_d_temp * _U_MAX) / MS.u_abs; //division! + MS.u_abs = _U_MAX; + } else { + MS.u_q = q31_u_q_temp; + MS.u_d = q31_u_d_temp; + } + PI_flag = 0; + + //HAL_GPIO_WritePin(UART1_Tx_GPIO_Port, UART1_Tx_Pin, GPIO_PIN_RESET); + } +} + +/* TIM3 init function 8kHz interrupt frequency for regular adc triggering */ +static void TIM3_Init(void) { + + TIM_ClockConfigTypeDef sClockSourceConfig; + TIM_MasterConfigTypeDef sMasterConfig; + + htim3.Instance = TIM3; + htim3.Init.Prescaler = 0; + htim3.Init.CounterMode = TIM_COUNTERMODE_UP; + htim3.Init.Period = 7813; + htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; + if (HAL_TIM_Base_Init(&htim3) != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } + + sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; + if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } + + sMasterConfig.MasterOutputTrigger = TIM_TRGO_OC1; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) + != HAL_OK) { + _Error_Handler(__FILE__, __LINE__); + } + + HAL_TIM_MspPostInit(&htim3); +} + +void motor_init(volatile MotorStatePublic_t* motorStatePublic) { + p_MotorStatePublic = motorStatePublic; // local pointer of MotorStatePublic + + calculate_tic_limits(p_MotorStatePublic->speed_limit); + + // init IO pins + GPIO_Init(); + + // init DMA for ADC + DMA_Init(); + + // initialize MS struct. + MS.hall_angle_detect_flag = 1; + MS.assist_level = 1; + MS.regen_level = 7; + MS.i_q_setpoint = 0; + MS.i_d_setpoint = 0; + + MS.phase_current_limit = PH_CURRENT_MAX_NORMAL; + MS.speed_limit = SPEEDLIMIT_NORMAL; + + // ADC init and run calibration + ADC1_Init(); + if (HAL_ADCEx_Calibration_Start(&hadc1) != HAL_OK) { + Error_Handler(); + } + ADC2_Init(); + if (HAL_ADCEx_Calibration_Start(&hadc2) != HAL_OK) { + Error_Handler(); + } + + // enable external trigger + SET_BIT(ADC1->CR2, ADC_CR2_JEXTTRIG); + __HAL_ADC_ENABLE_IT(&hadc1, ADC_IT_JEOC); + SET_BIT(ADC2->CR2, ADC_CR2_JEXTTRIG); + __HAL_ADC_ENABLE_IT(&hadc2, ADC_IT_JEOC); + + HAL_ADCEx_MultiModeStart_DMA(&hadc1, (uint32_t*) p_MotorStatePublic->adcData, 6); + HAL_ADC_Start_IT(&hadc2); + + // Timers + TIM1_Init(); //Hier die Reihenfolge getauscht! + TIM2_Init(); + TIM3_Init(); + + // Start Timer 1 + if (HAL_TIM_Base_Start_IT(&htim1) != HAL_OK) { + Error_Handler(); + } + + HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1); + HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_1); // turn on complementary channel + HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2); + HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_2); + HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_3); + HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_3); + + HAL_TIM_PWM_Start_IT(&htim1, TIM_CHANNEL_4); + + TIM1->CCR4 = TRIGGER_DEFAULT; //ADC sampling just before timer overflow (just before middle of PWM-Cycle) + + // Start Timer 2 + if (HAL_TIM_Base_Start_IT(&htim2) != HAL_OK) { + Error_Handler(); + } + + // Start Timer 3 + if (HAL_TIM_Base_Start_IT(&htim3) != HAL_OK) { + Error_Handler(); + } + + motor_disable_pwm(); + TIM1->CCR1 = 1023; //set initial PWM values + TIM1->CCR2 = 1023; + TIM1->CCR3 = 1023; + + HAL_Delay(1000); + + // average measured ADC phase currents, to store as the offset of each one + for (uint32_t i = 0; i < 16; i++) { + HAL_Delay(5); + ui16_ph1_offset += p_MotorStatePublic->adcData[ADC_CHANA]; + ui16_ph2_offset += p_MotorStatePublic->adcData[ADC_CHANB]; + ui16_ph3_offset += p_MotorStatePublic->adcData[ADC_CHANC]; + } + ui16_ph1_offset = ui16_ph1_offset >> 4; + ui16_ph2_offset = ui16_ph2_offset >> 4; + ui16_ph3_offset = ui16_ph3_offset >> 4; + + ADC1->JSQR = JSQR_PHASE_A; //ADC1 injected reads phase A JL = 0b00, JSQ4 = 0b00100 (decimal 4 = channel 4) + ADC1->JOFR1 = ui16_ph1_offset; + + ui8_adc_offset_done_flag = 1; + + // read or get and set motor specific values + EE_ReadVariable(EEPROM_POS_SPEC_ANGLE, &MS.spec_angle); + + // set motor specific angle to value from emulated EEPROM only if valid + if (MS.spec_angle != 0xFFFF) { + q31_rotorposition_motor_specific = MS.spec_angle << 16; + EE_ReadVariable(EEPROM_POS_HALL_ORDER, &i16_hall_order); + } else { + motor_autodetect(); + } + + HAL_Delay(5); + get_standstill_position(); +} + +// injected ADC +void HAL_ADCEx_InjectedConvCpltCallback(ADC_HandleTypeDef *hadc) { + //for oszi-check of used time in FOC procedere + //HAL_GPIO_WritePin(UART1_Tx_GPIO_Port, UART1_Tx_Pin, GPIO_PIN_SET); + + if (!ui8_adc_offset_done_flag) { + i16_ph1_current = HAL_ADCEx_InjectedGetValue(&hadc1, + ADC_INJECTED_RANK_1); + i16_ph2_current = HAL_ADCEx_InjectedGetValue(&hadc2, + ADC_INJECTED_RANK_1); + + ui8_adc_inj_flag = 1; + } else { + +#ifdef DISABLE_DYNAMIC_ADC + i16_ph1_current = HAL_ADCEx_InjectedGetValue(&hadc1, ADC_INJECTED_RANK_1); + i16_ph2_current = HAL_ADCEx_InjectedGetValue(&hadc2, ADC_INJECTED_RANK_1); +#else + switch (MS.char_dyn_adc_state) //read in according to state + { + case 1: //Phase C at high dutycycles, read from A+B directly + raw_inj1 = (q31_t) HAL_ADCEx_InjectedGetValue(&hadc1, + ADC_INJECTED_RANK_1); + i16_ph1_current = raw_inj1; + + raw_inj2 = (q31_t) HAL_ADCEx_InjectedGetValue(&hadc2, + ADC_INJECTED_RANK_1); + i16_ph2_current = raw_inj2; + break; + + case 2: //Phase A at high dutycycles, read from B+C (A = -B -C) + raw_inj2 = (q31_t) HAL_ADCEx_InjectedGetValue(&hadc2, + ADC_INJECTED_RANK_1); + i16_ph2_current = raw_inj2; + + raw_inj1 = (q31_t) HAL_ADCEx_InjectedGetValue(&hadc1, + ADC_INJECTED_RANK_1); + i16_ph1_current = -i16_ph2_current - raw_inj1; + break; + + case 3: //Phase B at high dutycycles, read from A+C (B=-A-C) + raw_inj1 = (q31_t) HAL_ADCEx_InjectedGetValue(&hadc1, + ADC_INJECTED_RANK_1); + i16_ph1_current = raw_inj1; + raw_inj2 = (q31_t) HAL_ADCEx_InjectedGetValue(&hadc2, + ADC_INJECTED_RANK_1); + i16_ph2_current = -i16_ph1_current - raw_inj2; + break; + + case 0: //timeslot too small for ADC + //do nothing + break; + } // end case +#endif + + __disable_irq(); //ENTER CRITICAL SECTION!!!!!!!!!!!!! + + //extrapolate recent rotor position + ui16_tim2_recent = __HAL_TIM_GET_COUNTER(&htim2); // read in timertics since last event + if (MS.hall_angle_detect_flag) { + if (ui16_timertics(SIXSTEPTHRESHOLD*6)>>2) ui8_6step_flag = 1; + +#ifdef SPEED_PLL + q31_rotorposition_PLL += q31_angle_per_tic; +#endif + + if (ui16_tim2_recent < ui16_timertics+(ui16_timertics>>2) && !ui8_overflow_flag && !ui8_6step_flag) { //prevent angle running away at standstill +#ifdef SPEED_PLL + q31_rotorposition_absolute = q31_rotorposition_PLL; + MS.system_state = PLL; +#else + q31_rotorposition_absolute = q31_rotorposition_hall + + (q31_t) (i16_hall_order * i8_recent_rotor_direction + * ((10923 * ui16_tim2_recent) / ui16_timertics) + << 16); //interpolate angle between two hallevents by scaling timer2 tics, 10923<<16 is 715827883 = 60� + + MS.system_state = Interpolation; +#endif + } else { + ui8_overflow_flag = 1; + q31_rotorposition_absolute = q31_rotorposition_hall;//-(((((REVERSE*DEG_plus60)>>22)*(ui16_timertics-SIXSTEPTHRESHOLD))/SIXSTEPTHRESHOLD)<<22); + MS.system_state = SixStep; + } + } //end if hall angle detect + + __enable_irq(); //EXIT CRITICAL SECTION!!!!!!!!!!!!!! + +#ifndef DISABLE_DYNAMIC_ADC + //get the Phase with highest duty cycle for dynamic phase current reading + dyn_adc_state(q31_rotorposition_absolute); + + //set the according injected channels to read current at Low-Side active time + if (MS.char_dyn_adc_state != char_dyn_adc_state_old) { + set_inj_channel(MS.char_dyn_adc_state); + char_dyn_adc_state_old = MS.char_dyn_adc_state; + } +#endif + + // call FOC procedure if PWM is enabled + if (motor_pwm_is_enabled()) { + FOC_calculation(i16_ph1_current, i16_ph2_current, + q31_rotorposition_absolute, &MS); + } + + //set PWM + TIM1->CCR1 = (uint16_t) switchtime[0]; + TIM1->CCR2 = (uint16_t) switchtime[1]; + TIM1->CCR3 = (uint16_t) switchtime[2]; + + //HAL_GPIO_WritePin(UART1_Tx_GPIO_Port, UART1_Tx_Pin, GPIO_PIN_RESET); + + } // end else +} + +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ +} +#endif /* USE_FULL_ASSERT */ + diff --git a/Core/Src/print.c b/Core/Src/print.c new file mode 100644 index 00000000..000e7cbd --- /dev/null +++ b/Core/Src/print.c @@ -0,0 +1,291 @@ +/** \file printf.c + * Simplified printf() and sprintf() implementation - prints formatted string to + * USART (or whereever). Most common % specifiers are supported. It costs you about + * 3k FLASH memory - without floating point support it uses only 1k ROM! + * \author Freddie Chopin, Martin Thomas, Marten Petschke and many others + * \date 16.2.2012 + */ + +/****************************************************************************** + * chip: STM32F10x + * compiler: arm-none-eabi-gcc 4.6.0 + * + * global functions: + * int printf_(const char *format, ...) + * int sprintf_(char *buffer, const char *format, ...) + * + * STM32 specific functions: + * init_UART1(void) + * void putc_UART1 (char); // blocking put char, used by printf() + * + * local functions: + * int putc_strg(int character, printf_file_t *stream) + * int vfprintf_(printf_file_t *stream, const char *format, va_list arg) + * void long_itoa (long val, int radix, int len, vfprintf_stream *stream) + * + ******************************************************************************/ + +/* + +=============================================================================+ + | includes + +=============================================================================+ + */ + +#include // (...) parameter handling + +#include "stm32f103xb.h" // only this STM headerfile is used + +int printf_(const char *format, ...); +int sprintf_(char *buffer, const char *format, ...); + +/* + +=============================================================================+ + | local declarations + +=============================================================================+ + */ + +void putc_UART3(char); // blocking put char; used by printf_() +void putc_strg(char); // the put() function for sprintf() +char *SPRINTF_buffer; // + +static int vfprintf_(void (*)(char), const char *format, va_list arg); //generic print +void long_itoa(long, int, int, void (*)(char)); //heavily used by printf_() + +/* + +=============================================================================+ + | sample main() file + +=============================================================================+ + */ + +/* + +=============================================================================+ + | STM32 register definition only here and in interrupt handler + +=============================================================================+ + */ + +void putc_UART3(char c) { + if (c == '\n') { + while ((USART3->SR & USART_SR_TXE) == 0) + ; //blocks until previous byte was sent + USART3->DR = '\r'; + } + while ((USART3->SR & USART_SR_TXE) == 0) + ; //blocks until previous byte was sent + USART3->DR = c; +} + +/* + +=============================================================================+ + | end of controller specific stuff - no further controller dependent stuff below + +=============================================================================+ + */ + +/* + +=============================================================================+ + | global functions + +=============================================================================+ + */ +int printf_(const char *format, ...) { + va_list arg; + + va_start(arg, format); + vfprintf_((&putc_UART3), format, arg); + va_end(arg); + + return 0; +} + +int sprintf_(char *buffer, const char *format, ...) { + va_list arg; + + SPRINTF_buffer = buffer;//Pointer auf einen String in Speicherzelle abspeichern + + va_start(arg, format); + vfprintf_((&putc_strg), format, arg); + va_end(arg); + + *SPRINTF_buffer = '\0'; // append end of string + + return 0; +} + +/* + +=============================================================================+ + | local functions + +=============================================================================+ + */ +// putc_strg() is the putc()function for sprintf_() +void putc_strg(char character) { + *SPRINTF_buffer = (char) character; // just add the character to buffer + SPRINTF_buffer++; + +} + +/*--------------------------------------------------------------------------------+ + * vfprintf_() + * Prints a string to stream. Supports %s, %c, %d, %ld %ul %02d %i %x %lud and %% + * - partly supported: long long, float (%ll %f, %F, %2.2f) + * - not supported: double float and exponent (%e %g %p %o \t) + *--------------------------------------------------------------------------------+ + */ +static int vfprintf_(void (*putc)(char), const char *str, va_list arp) { + int d, r, w, s, l; //d=char, r = radix, w = width, s=zeros, l=long + char *c; // for the while loop only + +#ifdef INCLUDE_FLOAT + float f; + long int m, mv, p, w2; +#endif + + while ((d = *str++) != 0) { + if (d != '%') { + (*putc)(d); + continue; + } + d = *str++; + w = r = s = l = 0; + if (d == '%') { + (*putc)(d); + d = *str++; + } + if (d == '0') { + d = *str++; + s = 1; //padd with zeros + } + while ((d >= '0') && (d <= '9')) { + w += w * 10 + (d - '0'); + d = *str++; + } + if (s) + w = -w; //padd with zeros if negative + +#ifdef INCLUDE_FLOAT + w2 = 2; //default decimal places=2 + if (d == '.'){ + d = *str++; w2 = 0; } + while ((d >= '0')&&(d <= '9')) { + w2 += w2 * 10 + (d - '0'); + d = *str++; + } + #endif + + if (d == 's') { + c = va_arg(arp, char*); + while (*c) + (*putc)(*(c++)); + continue; + } + if (d == 'c') { + (*putc)((char) va_arg(arp, int)); + continue; + } + if (d == 'u') { // %ul + r = 10; + d = *str++; + } + if (d == 'l') { // long =32bit + l = 1; + if (r == 0) + r = -10; + d = *str++; + } + if (d == '\0') + break; //avoid crashing if format string is buggy + if (d == 'u') + r = 10; // %lu, %llu + else if (d == 'd' || d == 'i') { + if (r == 0) + r = -10; + } //can be 16 or 32bit int + else if (d == 'X' || d == 'x') + r = 16; // 'x' added by mthomas + else if (d == 'b') + r = 2; +#ifdef INCLUDE_FLOAT + else if (d == 'f' || d == 'F') { + f=va_arg(arp, double); + if (f >= 0.0) { + r = 10; + mv = f; + m = mv; + } + else { + r = -10; + mv = f; + f = -f; + m = f; // f and m are always positive + } + long_itoa(mv, r, w, (putc)); + if (w2!=0) { + putc('.'); + f=f-m; + w=-w2; p=1; + while (w2--) p = p*10; + m=f*p; + long_itoa(m, 10, w, (putc)); + } + l=3; //do not continue with long + } + #endif + else + str--; // normal character + + if (r == 0) + continue; // + if (l == 0) { + if (r > 0) { //unsigned + long_itoa((unsigned long) va_arg(arp, int), r, w, (putc)); //needed for 16bit int, no harm to 32bit int + } else + //signed + long_itoa((long) va_arg(arp, int), r, w, (putc)); + } else if (l == 1) { // long =32bit + long_itoa((long) va_arg(arp, long), r, w, (putc)); //no matter if signed or unsigned + } + } + + return 0; +} + +void long_itoa(long val, int radix, int len, void (*putc)(char)) { + char c, sgn = 0, pad = ' '; + char s[20]; + int i = 0; + + if (radix < 0) { + radix = -radix; + if (val < 0) { + val = -val; + sgn = '-'; + } + } + if (len < 0) { + len = -len; + pad = '0'; + } + if (len > 20) + return; + do { + c = (char) ((unsigned long) val % radix); //cast! + if (c >= 10) + c += ('A' - 10); //ABCDEF + else + c += '0'; //0123456789 + s[i++] = c; + val = (unsigned long) val / radix; //cast! + } while (val); + + if ((sgn != 0) && (pad != '0')) + s[i++] = sgn; + while (i < len) + s[i++] = pad; + if ((sgn != 0) && (pad == '0')) + s[i++] = sgn; + + do + (*putc)(s[--i]); + while (i); +} + +/****************************************************************************** + * END OF FILE + ******************************************************************************/ diff --git a/Src/stm32f1xx_hal_msp.c b/Core/Src/stm32f1xx_hal_msp.c similarity index 87% rename from Src/stm32f1xx_hal_msp.c rename to Core/Src/stm32f1xx_hal_msp.c index 2560729a..b6f6e31b 100644 --- a/Src/stm32f1xx_hal_msp.c +++ b/Core/Src/stm32f1xx_hal_msp.c @@ -409,54 +409,56 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart) { GPIO_InitTypeDef GPIO_InitStruct = {0}; if(huart->Instance==USART1) - { - /* USER CODE BEGIN USART1_MspInit 0 */ - - /* USER CODE END USART1_MspInit 0 */ - /* Peripheral clock enable */ - __HAL_RCC_USART1_CLK_ENABLE(); - - __HAL_RCC_GPIOB_CLK_ENABLE(); - /**USART1 GPIO Configuration - PB6 ------> USART1_TX - */ - GPIO_InitStruct.Pin = GPIO_PIN_6; - GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; - HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - - /* USART1 DMA Init */ - /* USART1_TX Init */ - hdma_usart1_tx.Instance = DMA1_Channel4; - hdma_usart1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; - hdma_usart1_tx.Init.PeriphInc = DMA_PINC_DISABLE; - hdma_usart1_tx.Init.MemInc = DMA_MINC_ENABLE; - hdma_usart1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; - hdma_usart1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; - hdma_usart1_tx.Init.Mode = DMA_NORMAL; - hdma_usart1_tx.Init.Priority = DMA_PRIORITY_LOW; - if (HAL_DMA_Init(&hdma_usart1_tx) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - __HAL_LINKDMA(huart,hdmatx,hdma_usart1_tx); - - /* USART1_RX Init */ - hdma_usart1_rx.Instance = DMA1_Channel5; - hdma_usart1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY; - hdma_usart1_rx.Init.PeriphInc = DMA_PINC_DISABLE; - hdma_usart1_rx.Init.MemInc = DMA_MINC_ENABLE; - hdma_usart1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; - hdma_usart1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; - hdma_usart1_rx.Init.Mode = DMA_CIRCULAR; - hdma_usart1_rx.Init.Priority = DMA_PRIORITY_LOW; - if (HAL_DMA_Init(&hdma_usart1_rx) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - __HAL_LINKDMA(huart,hdmarx,hdma_usart1_rx); + { + /* USER CODE BEGIN USART1_MspInit 0 */ + + /* USER CODE END USART1_MspInit 0 */ + /* Peripheral clock enable */ + __HAL_RCC_USART1_CLK_ENABLE(); + + __HAL_RCC_GPIOB_CLK_ENABLE(); + /**USART1 GPIO Configuration + PB6 ------> USART1_TX + */ + GPIO_InitStruct.Pin = GPIO_PIN_6; + GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + __HAL_AFIO_REMAP_USART1_ENABLE(); + + /* USART1 DMA Init */ + /* USART1_RX Init */ + hdma_usart1_rx.Instance = DMA1_Channel5; + hdma_usart1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY; + hdma_usart1_rx.Init.PeriphInc = DMA_PINC_DISABLE; + hdma_usart1_rx.Init.MemInc = DMA_MINC_ENABLE; + hdma_usart1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; + hdma_usart1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; + hdma_usart1_rx.Init.Mode = DMA_CIRCULAR; + hdma_usart1_rx.Init.Priority = DMA_PRIORITY_LOW; + if (HAL_DMA_Init(&hdma_usart1_rx) != HAL_OK) + { + Error_Handler(); + } + + __HAL_LINKDMA(huart,hdmarx,hdma_usart1_rx); + + /* USART1_TX Init */ + hdma_usart1_tx.Instance = DMA1_Channel4; + hdma_usart1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; + hdma_usart1_tx.Init.PeriphInc = DMA_PINC_DISABLE; + hdma_usart1_tx.Init.MemInc = DMA_MINC_ENABLE; + hdma_usart1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; + hdma_usart1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; + hdma_usart1_tx.Init.Mode = DMA_NORMAL; + hdma_usart1_tx.Init.Priority = DMA_PRIORITY_LOW; + if (HAL_DMA_Init(&hdma_usart1_tx) != HAL_OK) + { + Error_Handler(); + } + + __HAL_LINKDMA(huart,hdmatx,hdma_usart1_tx); /* USART1 interrupt Init */ HAL_NVIC_SetPriority(USART1_IRQn, 2, 0); @@ -469,7 +471,7 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart) HAL_NVIC_SetPriority(DMA1_Channel4_IRQn, 2, 1); HAL_NVIC_EnableIRQ(DMA1_Channel4_IRQn); - __HAL_AFIO_REMAP_USART1_ENABLE(); + // __HAL_AFIO_REMAP_USART1_ENABLE(); /* USER CODE BEGIN USART1_MspInit 1 */ diff --git a/Core/Src/stm32f1xx_hal_timebase_tim.c b/Core/Src/stm32f1xx_hal_timebase_tim.c new file mode 100644 index 00000000..5f8a6a49 --- /dev/null +++ b/Core/Src/stm32f1xx_hal_timebase_tim.c @@ -0,0 +1,111 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32f1xx_hal_timebase_TIM.c + * @brief HAL time base based on the hardware TIM. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2021 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under Ultimate Liberty license + * SLA0044, the "License"; You may not use this file except in compliance with + * the License. You may obtain a copy of the License at: + * www.st.com/SLA0044 + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_hal.h" +#include "stm32f1xx_hal_tim.h" + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +TIM_HandleTypeDef htim4; +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/** + * @brief This function configures the TIM4 as a time base source. + * The time source is configured to have 1ms time base with a dedicated + * Tick interrupt priority. + * @note This function is called automatically at the beginning of program after + * reset by HAL_Init() or at any time when clock is configured, by HAL_RCC_ClockConfig(). + * @param TickPriority: Tick interrupt priority. + * @retval HAL status + */ +HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) +{ + RCC_ClkInitTypeDef clkconfig; + uint32_t uwTimclock = 0; + uint32_t uwPrescalerValue = 0; + uint32_t pFLatency; + /*Configure the TIM4 IRQ priority */ + HAL_NVIC_SetPriority(TIM4_IRQn, TickPriority ,0); + + /* Enable the TIM4 global Interrupt */ + HAL_NVIC_EnableIRQ(TIM4_IRQn); + /* Enable TIM4 clock */ + __HAL_RCC_TIM4_CLK_ENABLE(); + + /* Get clock configuration */ + HAL_RCC_GetClockConfig(&clkconfig, &pFLatency); + + /* Compute TIM4 clock */ + uwTimclock = 2*HAL_RCC_GetPCLK1Freq(); + /* Compute the prescaler value to have TIM4 counter clock equal to 1MHz */ + uwPrescalerValue = (uint32_t) ((uwTimclock / 1000000U) - 1U); + + /* Initialize TIM4 */ + htim4.Instance = TIM4; + + /* Initialize TIMx peripheral as follow: + + Period = [(TIM4CLK/1000) - 1]. to have a (1/1000) s time base. + + Prescaler = (uwTimclock/1000000 - 1) to have a 1MHz counter clock. + + ClockDivision = 0 + + Counter direction = Up + */ + htim4.Init.Period = (1000000U / 1000U) - 1U; + htim4.Init.Prescaler = uwPrescalerValue; + htim4.Init.ClockDivision = 0; + htim4.Init.CounterMode = TIM_COUNTERMODE_UP; + if(HAL_TIM_Base_Init(&htim4) == HAL_OK) + { + /* Start the TIM time Base generation in interrupt mode */ + return HAL_TIM_Base_Start_IT(&htim4); + } + + /* Return function status */ + return HAL_ERROR; +} + +/** + * @brief Suspend Tick increment. + * @note Disable the tick increment by disabling TIM4 update interrupt. + * @param None + * @retval None + */ +void HAL_SuspendTick(void) +{ + /* Disable TIM4 update Interrupt */ + __HAL_TIM_DISABLE_IT(&htim4, TIM_IT_UPDATE); +} + +/** + * @brief Resume Tick increment. + * @note Enable the tick increment by Enabling TIM4 update interrupt. + * @param None + * @retval None + */ +void HAL_ResumeTick(void) +{ + /* Enable TIM4 Update interrupt */ + __HAL_TIM_ENABLE_IT(&htim4, TIM_IT_UPDATE); +} + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/Core/Src/stm32f1xx_it.c b/Core/Src/stm32f1xx_it.c new file mode 100644 index 00000000..5efb5698 --- /dev/null +++ b/Core/Src/stm32f1xx_it.c @@ -0,0 +1,420 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32f1xx_it.c + * @brief Interrupt Service Routines. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "stm32f1xx_it.h" +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN TD */ + +/* USER CODE END TD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/* External variables --------------------------------------------------------*/ +extern DMA_HandleTypeDef hdma_adc1; +extern DMA_HandleTypeDef hdma_usart1_tx; +extern DMA_HandleTypeDef hdma_usart1_rx; +extern DMA_HandleTypeDef hdma_usart3_tx; +extern DMA_HandleTypeDef hdma_usart3_rx; +extern ADC_HandleTypeDef hadc1; +extern ADC_HandleTypeDef hadc2; +extern TIM_HandleTypeDef htim1; +extern TIM_HandleTypeDef htim2; +extern TIM_HandleTypeDef htim3; +extern TIM_HandleTypeDef htim4; +extern UART_HandleTypeDef huart1; +extern UART_HandleTypeDef huart3; + +/* USER CODE BEGIN EV */ + +/* USER CODE END EV */ + +/******************************************************************************/ +/* Cortex-M3 Processor Interruption and Exception Handlers */ +/******************************************************************************/ +/** + * @brief This function handles Non maskable interrupt. + */ +void NMI_Handler(void) { + /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ + + /* USER CODE END NonMaskableInt_IRQn 0 */ + /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ + while (1) { + } + /* USER CODE END NonMaskableInt_IRQn 1 */ +} + +/** + * @brief This function handles Hard fault interrupt. + */ +void HardFault_Handler(void) { + /* USER CODE BEGIN HardFault_IRQn 0 */ + + /* USER CODE END HardFault_IRQn 0 */ + while (1) { + /* USER CODE BEGIN W1_HardFault_IRQn 0 */ + /* USER CODE END W1_HardFault_IRQn 0 */ + } +} + +/** + * @brief This function handles Memory management fault. + */ +void MemManage_Handler(void) { + /* USER CODE BEGIN MemoryManagement_IRQn 0 */ + + /* USER CODE END MemoryManagement_IRQn 0 */ + while (1) { + /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */ + /* USER CODE END W1_MemoryManagement_IRQn 0 */ + } +} + +/** + * @brief This function handles Prefetch fault, memory access fault. + */ +void BusFault_Handler(void) { + /* USER CODE BEGIN BusFault_IRQn 0 */ + + /* USER CODE END BusFault_IRQn 0 */ + while (1) { + /* USER CODE BEGIN W1_BusFault_IRQn 0 */ + /* USER CODE END W1_BusFault_IRQn 0 */ + } +} + +/** + * @brief This function handles Undefined instruction or illegal state. + */ +void UsageFault_Handler(void) { + /* USER CODE BEGIN UsageFault_IRQn 0 */ + + /* USER CODE END UsageFault_IRQn 0 */ + while (1) { + /* USER CODE BEGIN W1_UsageFault_IRQn 0 */ + /* USER CODE END W1_UsageFault_IRQn 0 */ + } +} + +/** + * @brief This function handles System service call via SWI instruction. + */ +void SVC_Handler(void) { + /* USER CODE BEGIN SVCall_IRQn 0 */ + + /* USER CODE END SVCall_IRQn 0 */ + /* USER CODE BEGIN SVCall_IRQn 1 */ + + /* USER CODE END SVCall_IRQn 1 */ +} + +/** + * @brief This function handles Debug monitor. + */ +void DebugMon_Handler(void) { + /* USER CODE BEGIN DebugMonitor_IRQn 0 */ + + /* USER CODE END DebugMonitor_IRQn 0 */ + /* USER CODE BEGIN DebugMonitor_IRQn 1 */ + + /* USER CODE END DebugMonitor_IRQn 1 */ +} + +/** + * @brief This function handles Pendable request for system service. + */ +void PendSV_Handler(void) { + /* USER CODE BEGIN PendSV_IRQn 0 */ + + /* USER CODE END PendSV_IRQn 0 */ + /* USER CODE BEGIN PendSV_IRQn 1 */ + + /* USER CODE END PendSV_IRQn 1 */ +} + +/** + * @brief This function handles System tick timer. + */ +void SysTick_Handler(void) { + /* USER CODE BEGIN SysTick_IRQn 0 */ + UserSysTickHandler(); + /* USER CODE END SysTick_IRQn 0 */ + HAL_IncTick(); + /* USER CODE BEGIN SysTick_IRQn 1 */ + + /* USER CODE END SysTick_IRQn 1 */ +} + +/******************************************************************************/ +/* STM32F1xx Peripheral Interrupt Handlers */ +/* Add here the Interrupt Handlers for the used peripherals. */ +/* For the available peripheral interrupt handler names, */ +/* please refer to the startup file (startup_stm32f1xx.s). */ +/******************************************************************************/ + +/** + * @brief This function handles DMA1 channel1 global interrupt. + */ +void DMA1_Channel1_IRQHandler(void) { + /* USER CODE BEGIN DMA1_Channel1_IRQn 0 */ + + /* USER CODE END DMA1_Channel1_IRQn 0 */ + HAL_DMA_IRQHandler(&hdma_adc1); + /* USER CODE BEGIN DMA1_Channel1_IRQn 1 */ + + /* USER CODE END DMA1_Channel1_IRQn 1 */ +} + +/** + * @brief This function handles DMA1 channel4 global interrupt. + */ +void DMA1_Channel2_IRQHandler(void) { + /* USER CODE BEGIN DMA1_Channel4_IRQn 0 */ + + /* USER CODE END DMA1_Channel4_IRQn 0 */ + HAL_DMA_IRQHandler(&hdma_usart3_tx); + /* USER CODE BEGIN DMA1_Channel4_IRQn 1 */ + + /* USER CODE END DMA1_Channel4_IRQn 1 */ +} + +/** + * @brief This function handles DMA1 channel5 global interrupt. + */ +void DMA1_Channel3_IRQHandler(void) { + /* USER CODE BEGIN DMA1_Channel5_IRQn 0 */ + + /* USER CODE END DMA1_Channel5_IRQn 0 */ + HAL_DMA_IRQHandler(&hdma_usart3_rx); + /* USER CODE BEGIN DMA1_Channel5_IRQn 1 */ + + /* USER CODE END DMA1_Channel5_IRQn 1 */ +} + +/** + * @brief This function handles DMA1 channel4 global interrupt. + */ +void DMA1_Channel4_IRQHandler(void) { + /* USER CODE BEGIN DMA1_Channel4_IRQn 0 */ + + /* USER CODE END DMA1_Channel4_IRQn 0 */ + HAL_DMA_IRQHandler(&hdma_usart1_tx); + /* USER CODE BEGIN DMA1_Channel4_IRQn 1 */ + + /* USER CODE END DMA1_Channel4_IRQn 1 */ +} + +/** + * @brief This function handles DMA1 channel5 global interrupt. + */ +void DMA1_Channel5_IRQHandler(void) { + /* USER CODE BEGIN DMA1_Channel5_IRQn 0 */ + + /* USER CODE END DMA1_Channel5_IRQn 0 */ + HAL_DMA_IRQHandler(&hdma_usart1_rx); + /* USER CODE BEGIN DMA1_Channel5_IRQn 1 */ + + /* USER CODE END DMA1_Channel5_IRQn 1 */ +} + +/** + * @brief This function handles ADC1 and ADC2 global interrupts. + */ +void ADC1_2_IRQHandler(void) { + /* USER CODE BEGIN ADC1_2_IRQn 0 */ + + /* USER CODE END ADC1_2_IRQn 0 */ + HAL_ADC_IRQHandler(&hadc1); + HAL_ADC_IRQHandler(&hadc2); + /* USER CODE BEGIN ADC1_2_IRQn 1 */ + + /* USER CODE END ADC1_2_IRQn 1 */ +} + +/** + * @brief This function handles TIM1 update interrupt. + */ +void TIM1_UP_IRQHandler(void) { + /* USER CODE BEGIN TIM1_UP_IRQn 0 */ + + /* USER CODE END TIM1_UP_IRQn 0 */ + HAL_TIM_IRQHandler(&htim1); + /* USER CODE BEGIN TIM1_UP_IRQn 1 */ + + /* USER CODE END TIM1_UP_IRQn 1 */ +} + +/** + * @brief This function handles TIM1 trigger and commutation interrupts. + */ +void TIM1_TRG_COM_IRQHandler(void) { + /* USER CODE BEGIN TIM1_TRG_COM_IRQn 0 */ + + /* USER CODE END TIM1_TRG_COM_IRQn 0 */ + HAL_TIM_IRQHandler(&htim1); + /* USER CODE BEGIN TIM1_TRG_COM_IRQn 1 */ + + /* USER CODE END TIM1_TRG_COM_IRQn 1 */ +} + +/** + * @brief This function handles TIM1 capture compare interrupt. + */ +void TIM1_CC_IRQHandler(void) { + /* USER CODE BEGIN TIM1_CC_IRQn 0 */ + + /* USER CODE END TIM1_CC_IRQn 0 */ + HAL_TIM_IRQHandler(&htim1); + /* USER CODE BEGIN TIM1_CC_IRQn 1 */ + + /* USER CODE END TIM1_CC_IRQn 1 */ +} + +/** + * @brief This function handles TIM2 global interrupt. + */ +void TIM2_IRQHandler(void) { + /* USER CODE BEGIN TIM2_IRQn 0 */ + + /* USER CODE END TIM2_IRQn 0 */ + HAL_TIM_IRQHandler(&htim2); + /* USER CODE BEGIN TIM2_IRQn 1 */ + + /* USER CODE END TIM2_IRQn 1 */ +} + +void TIM3_IRQHandler(void) { + /* USER CODE BEGIN TIM2_IRQn 0 */ + + /* USER CODE END TIM2_IRQn 0 */ + HAL_TIM_IRQHandler(&htim3); + /* USER CODE BEGIN TIM2_IRQn 1 */ + + /* USER CODE END TIM2_IRQn 1 */ +} + +void TIM4_IRQHandler(void) { + /* USER CODE BEGIN TIM2_IRQn 0 */ + + /* USER CODE END TIM2_IRQn 0 */ + HAL_TIM_IRQHandler(&htim4); + /* USER CODE BEGIN TIM2_IRQn 1 */ + + /* USER CODE END TIM2_IRQn 1 */ +} + +/** + * @brief This function handles USART1 global interrupt. + */ +void USART1_IRQHandler(void) { + /* USER CODE BEGIN USART1_IRQn 0 */ + + /* USER CODE END USART1_IRQn 0 */ + HAL_UART_IRQHandler(&huart1); + /* USER CODE BEGIN USART1_IRQn 1 */ + + /* USER CODE END USART1_IRQn 1 */ +} + +/** + * @brief This function handles USART1 global interrupt. + */ +void USART3_IRQHandler(void) { + /* USER CODE BEGIN USART1_IRQn 0 */ + + /* USER CODE END USART1_IRQn 0 */ + HAL_UART_IRQHandler(&huart3); + /* USER CODE BEGIN USART1_IRQn 1 */ + + /* USER CODE END USART1_IRQn 1 */ +} + +/** + * @brief This function handles EXTI line[9:5] interrupts. + */ +void EXTI9_5_IRQHandler(void) { + /* USER CODE BEGIN EXTI9_5_IRQn 0 */ + + /* USER CODE END EXTI9_5_IRQn 0 */ + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_5); + /* USER CODE BEGIN EXTI9_5_IRQn 1 */ + + /* USER CODE END EXTI9_5_IRQn 1 */ +} + +/** + * @brief This function handles EXTI line[9:5] interrupts. + */ +void EXTI0_IRQHandler(void) { + /* USER CODE BEGIN EXTI9_5_IRQn 0 */ + + /* USER CODE END EXTI9_5_IRQn 0 */ + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0); + /* USER CODE BEGIN EXTI9_5_IRQn 1 */ + + /* USER CODE END EXTI9_5_IRQn 1 */ +} + +/** + * @brief This function handles EXTI line[9:5] interrupts. + */ +void EXTI4_IRQHandler(void) { + /* USER CODE BEGIN EXTI9_5_IRQn 0 */ + + /* USER CODE END EXTI9_5_IRQn 0 */ + HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_4); + /* USER CODE BEGIN EXTI9_5_IRQn 1 */ + + /* USER CODE END EXTI9_5_IRQn 1 */ +} + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/Core/Src/syscalls.c b/Core/Src/syscalls.c new file mode 100644 index 00000000..4ec95844 --- /dev/null +++ b/Core/Src/syscalls.c @@ -0,0 +1,159 @@ +/** + ****************************************************************************** + * @file syscalls.c + * @author Auto-generated by STM32CubeIDE + * @brief STM32CubeIDE Minimal System calls file + * + * For more information about which c-functions + * need which of these lowlevel functions + * please consult the Newlib libc-manual + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes */ +#include +#include +#include +#include +#include +#include +#include +#include + + +/* Variables */ +//#undef errno +extern int errno; +extern int __io_putchar(int ch) __attribute__((weak)); +extern int __io_getchar(void) __attribute__((weak)); + +register char * stack_ptr asm("sp"); + +char *__env[1] = { 0 }; +char **environ = __env; + + +/* Functions */ +void initialise_monitor_handles() +{ +} + +int _getpid(void) +{ + return 1; +} + +int _kill(int pid, int sig) +{ + errno = EINVAL; + return -1; +} + +void _exit (int status) +{ + _kill(status, -1); + while (1) {} /* Make sure we hang here */ +} + +__attribute__((weak)) int _read(int file, char *ptr, int len) +{ + int DataIdx; + + for (DataIdx = 0; DataIdx < len; DataIdx++) + { + *ptr++ = __io_getchar(); + } + +return len; +} + +__attribute__((weak)) int _write(int file, char *ptr, int len) +{ + int DataIdx; + + for (DataIdx = 0; DataIdx < len; DataIdx++) + { + __io_putchar(*ptr++); + } + return len; +} + +int _close(int file) +{ + return -1; +} + + +int _fstat(int file, struct stat *st) +{ + st->st_mode = S_IFCHR; + return 0; +} + +int _isatty(int file) +{ + return 1; +} + +int _lseek(int file, int ptr, int dir) +{ + return 0; +} + +int _open(char *path, int flags, ...) +{ + /* Pretend like we always fail */ + return -1; +} + +int _wait(int *status) +{ + errno = ECHILD; + return -1; +} + +int _unlink(char *name) +{ + errno = ENOENT; + return -1; +} + +int _times(struct tms *buf) +{ + return -1; +} + +int _stat(char *file, struct stat *st) +{ + st->st_mode = S_IFCHR; + return 0; +} + +int _link(char *old, char *new) +{ + errno = EMLINK; + return -1; +} + +int _fork(void) +{ + errno = EAGAIN; + return -1; +} + +int _execve(char *name, char **argv, char **env) +{ + errno = ENOMEM; + return -1; +} diff --git a/Core/Src/sysmem.c b/Core/Src/sysmem.c new file mode 100644 index 00000000..d7cc52cd --- /dev/null +++ b/Core/Src/sysmem.c @@ -0,0 +1,80 @@ +/** + ****************************************************************************** + * @file sysmem.c + * @author Generated by STM32CubeIDE + * @brief STM32CubeIDE System Memory calls file + * + * For more information about which C functions + * need which of these lowlevel functions + * please consult the newlib libc manual + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes */ +#include +#include + +/** + * Pointer to the current high watermark of the heap usage + */ +static uint8_t *__sbrk_heap_end = NULL; + +/** + * @brief _sbrk() allocates memory to the newlib heap and is used by malloc + * and others from the C library + * + * @verbatim + * ############################################################################ + * # .data # .bss # newlib heap # MSP stack # + * # # # # Reserved by _Min_Stack_Size # + * ############################################################################ + * ^-- RAM start ^-- _end _estack, RAM end --^ + * @endverbatim + * + * This implementation starts allocating at the '_end' linker symbol + * The '_Min_Stack_Size' linker symbol reserves a memory for the MSP stack + * The implementation considers '_estack' linker symbol to be RAM end + * NOTE: If the MSP stack, at any point during execution, grows larger than the + * reserved size, please increase the '_Min_Stack_Size'. + * + * @param incr Memory size + * @return Pointer to allocated memory + */ +void *_sbrk(ptrdiff_t incr) +{ + extern uint8_t _end; /* Symbol defined in the linker script */ + extern uint8_t _estack; /* Symbol defined in the linker script */ + extern uint32_t _Min_Stack_Size; /* Symbol defined in the linker script */ + const uint32_t stack_limit = (uint32_t)&_estack - (uint32_t)&_Min_Stack_Size; + const uint8_t *max_heap = (uint8_t *)stack_limit; + uint8_t *prev_heap_end; + + /* Initialize heap end at first call */ + if (NULL == __sbrk_heap_end) + { + __sbrk_heap_end = &_end; + } + + /* Protect heap from growing into the reserved MSP stack */ + if (__sbrk_heap_end + incr > max_heap) + { + errno = ENOMEM; + return (void *)-1; + } + + prev_heap_end = __sbrk_heap_end; + __sbrk_heap_end += incr; + + return (void *)prev_heap_end; +} diff --git a/Core/Src/system_stm32f1xx.c b/Core/Src/system_stm32f1xx.c new file mode 100644 index 00000000..231ee1ba --- /dev/null +++ b/Core/Src/system_stm32f1xx.c @@ -0,0 +1,402 @@ +/** + ****************************************************************************** + * @file system_stm32f1xx.c + * @author MCD Application Team + * @brief CMSIS Cortex-M3 Device Peripheral Access Layer System Source File. + * + * 1. This file provides two functions and one global variable to be called from + * user application: + * - SystemInit(): Setups the system clock (System clock source, PLL Multiplier + * factors, AHB/APBx prescalers and Flash settings). + * This function is called at startup just after reset and + * before branch to main program. This call is made inside + * the "startup_stm32f1xx_xx.s" file. + * + * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used + * by the user application to setup the SysTick + * timer or configure other parameters. + * + * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must + * be called whenever the core clock is changed + * during program execution. + * + * 2. After each device reset the HSI (8 MHz) is used as system clock source. + * Then SystemInit() function is called, in "startup_stm32f1xx_xx.s" file, to + * configure the system clock before to branch to main program. + * + * 4. The default value of HSE crystal is set to 8 MHz (or 25 MHz, depending on + * the product used), refer to "HSE_VALUE". + * When HSE is used as system clock source, directly or through PLL, and you + * are using different crystal you have to adapt the HSE value to your own + * configuration. + * + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32f1xx_system + * @{ + */ + +/** @addtogroup STM32F1xx_System_Private_Includes + * @{ + */ + +#include "stm32f1xx.h" + +/** + * @} + */ + +/** @addtogroup STM32F1xx_System_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32F1xx_System_Private_Defines + * @{ + */ + +#if !defined (HSE_VALUE) + #define HSE_VALUE 8000000U /*!< Default value of the External oscillator in Hz. + This value can be provided and adapted by the user application. */ +#endif /* HSE_VALUE */ + +#if !defined (HSI_VALUE) + #define HSI_VALUE 8000000U /*!< Default value of the Internal oscillator in Hz. + This value can be provided and adapted by the user application. */ +#endif /* HSI_VALUE */ + +/*!< Uncomment the following line if you need to use external SRAM */ +#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG) +/* #define DATA_IN_ExtSRAM */ +#endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */ + +/* Note: Following vector table addresses must be defined in line with linker + configuration. */ +/*!< Uncomment the following line if you need to relocate the vector table + anywhere in Flash or Sram, else the vector table is kept at the automatic + remap of boot address selected */ +#ifdef DO_NOT_USE_M365_BOOTLOADER +#define USER_VECT_TAB_ADDRESS +#endif + +#if defined(USER_VECT_TAB_ADDRESS) +/*!< Uncomment the following line if you need to relocate your vector Table + in Sram else user remap will be done in Flash. */ +/* #define VECT_TAB_SRAM */ +#if defined(VECT_TAB_SRAM) +#define VECT_TAB_BASE_ADDRESS SRAM_BASE /*!< Vector Table base address field. + This value must be a multiple of 0x200. */ +#define VECT_TAB_OFFSET 0x00000000U /*!< Vector Table base offset field. + This value must be a multiple of 0x200. */ +#else +#define VECT_TAB_BASE_ADDRESS FLASH_BASE /*!< Vector Table base address field. + This value must be a multiple of 0x200. */ +#define VECT_TAB_OFFSET 0x00001000U /*!< Vector Table base offset field. + This value must be a multiple of 0x200. */ +#endif /* VECT_TAB_SRAM */ +#endif /* USER_VECT_TAB_ADDRESS */ + +/******************************************************************************/ + +/** + * @} + */ + +/** @addtogroup STM32F1xx_System_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32F1xx_System_Private_Variables + * @{ + */ + +/* This variable is updated in three ways: + 1) by calling CMSIS function SystemCoreClockUpdate() + 2) by calling HAL API function HAL_RCC_GetHCLKFreq() + 3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency + Note: If you use this function to configure the system clock; then there + is no need to call the 2 first functions listed above, since SystemCoreClock + variable is updated automatically. + */ +uint32_t SystemCoreClock = 16000000; +const uint8_t AHBPrescTable[16U] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, + 8, 9 }; +const uint8_t APBPrescTable[8U] = { 0, 0, 0, 0, 1, 2, 3, 4 }; + +/** + * @} + */ + +/** @addtogroup STM32F1xx_System_Private_FunctionPrototypes + * @{ + */ + +#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG) +#ifdef DATA_IN_ExtSRAM + static void SystemInit_ExtMemCtl(void); +#endif /* DATA_IN_ExtSRAM */ +#endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */ + +/** + * @} + */ + +/** @addtogroup STM32F1xx_System_Private_Functions + * @{ + */ + +/** + * @brief Setup the microcontroller system + * Initialize the Embedded Flash Interface, the PLL and update the + * SystemCoreClock variable. + * @note This function should be used only after reset. + * @param None + * @retval None + */ +void SystemInit(void) { +#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG) + #ifdef DATA_IN_ExtSRAM + SystemInit_ExtMemCtl(); + #endif /* DATA_IN_ExtSRAM */ +#endif + + /* Configure the Vector Table location -------------------------------------*/ +#if defined(USER_VECT_TAB_ADDRESS) + SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */ +#endif /* USER_VECT_TAB_ADDRESS */ +} + +/** + * @brief Update SystemCoreClock variable according to Clock Register Values. + * The SystemCoreClock variable contains the core clock (HCLK), it can + * be used by the user application to setup the SysTick timer or configure + * other parameters. + * + * @note Each time the core clock (HCLK) changes, this function must be called + * to update SystemCoreClock variable value. Otherwise, any configuration + * based on this variable will be incorrect. + * + * @note - The system frequency computed by this function is not the real + * frequency in the chip. It is calculated based on the predefined + * constant and the selected clock source: + * + * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*) + * + * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**) + * + * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**) + * or HSI_VALUE(*) multiplied by the PLL factors. + * + * (*) HSI_VALUE is a constant defined in stm32f1xx.h file (default value + * 8 MHz) but the real value may vary depending on the variations + * in voltage and temperature. + * + * (**) HSE_VALUE is a constant defined in stm32f1xx.h file (default value + * 8 MHz or 25 MHz, depending on the product used), user has to ensure + * that HSE_VALUE is same as the real frequency of the crystal used. + * Otherwise, this function may have wrong result. + * + * - The result of this function could be not correct when using fractional + * value for HSE crystal. + * @param None + * @retval None + */ +void SystemCoreClockUpdate(void) { + uint32_t tmp = 0U, pllmull = 0U, pllsource = 0U; + +#if defined(STM32F105xC) || defined(STM32F107xC) + uint32_t prediv1source = 0U, prediv1factor = 0U, prediv2factor = 0U, pll2mull = 0U; +#endif /* STM32F105xC */ + +#if defined(STM32F100xB) || defined(STM32F100xE) + uint32_t prediv1factor = 0U; +#endif /* STM32F100xB or STM32F100xE */ + + /* Get SYSCLK source -------------------------------------------------------*/ + tmp = RCC->CFGR & RCC_CFGR_SWS; + + switch (tmp) { + case 0x00U: /* HSI used as system clock */ + SystemCoreClock = HSI_VALUE; + break; + case 0x04U: /* HSE used as system clock */ + SystemCoreClock = HSE_VALUE; + break; + case 0x08U: /* PLL used as system clock */ + + /* Get PLL clock source and multiplication factor ----------------------*/ + pllmull = RCC->CFGR & RCC_CFGR_PLLMULL; + pllsource = RCC->CFGR & RCC_CFGR_PLLSRC; + +#if !defined(STM32F105xC) && !defined(STM32F107xC) + pllmull = (pllmull >> 18U) + 2U; + + if (pllsource == 0x00U) { + /* HSI oscillator clock divided by 2 selected as PLL clock entry */ + SystemCoreClock = (HSI_VALUE >> 1U) * pllmull; + } else { +#if defined(STM32F100xB) || defined(STM32F100xE) + prediv1factor = (RCC->CFGR2 & RCC_CFGR2_PREDIV1) + 1U; + /* HSE oscillator clock selected as PREDIV1 clock entry */ + SystemCoreClock = (HSE_VALUE / prediv1factor) * pllmull; + #else + /* HSE selected as PLL clock entry */ + if ((RCC->CFGR & RCC_CFGR_PLLXTPRE) != (uint32_t) RESET) {/* HSE oscillator clock divided by 2 */ + SystemCoreClock = (HSE_VALUE >> 1U) * pllmull; + } else { + SystemCoreClock = HSE_VALUE * pllmull; + } +#endif + } +#else + pllmull = pllmull >> 18U; + + if (pllmull != 0x0DU) + { + pllmull += 2U; + } + else + { /* PLL multiplication factor = PLL input clock * 6.5 */ + pllmull = 13U / 2U; + } + + if (pllsource == 0x00U) + { + /* HSI oscillator clock divided by 2 selected as PLL clock entry */ + SystemCoreClock = (HSI_VALUE >> 1U) * pllmull; + } + else + {/* PREDIV1 selected as PLL clock entry */ + + /* Get PREDIV1 clock source and division factor */ + prediv1source = RCC->CFGR2 & RCC_CFGR2_PREDIV1SRC; + prediv1factor = (RCC->CFGR2 & RCC_CFGR2_PREDIV1) + 1U; + + if (prediv1source == 0U) + { + /* HSE oscillator clock selected as PREDIV1 clock entry */ + SystemCoreClock = (HSE_VALUE / prediv1factor) * pllmull; + } + else + {/* PLL2 clock selected as PREDIV1 clock entry */ + + /* Get PREDIV2 division factor and PLL2 multiplication factor */ + prediv2factor = ((RCC->CFGR2 & RCC_CFGR2_PREDIV2) >> 4U) + 1U; + pll2mull = ((RCC->CFGR2 & RCC_CFGR2_PLL2MUL) >> 8U) + 2U; + SystemCoreClock = (((HSE_VALUE / prediv2factor) * pll2mull) / prediv1factor) * pllmull; + } + } +#endif /* STM32F105xC */ + break; + + default: + SystemCoreClock = HSI_VALUE; + break; + } + + /* Compute HCLK clock frequency ----------------*/ + /* Get HCLK prescaler */ + tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4U)]; + /* HCLK clock frequency */ + SystemCoreClock >>= tmp; +} + +#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG) +/** + * @brief Setup the external memory controller. Called in startup_stm32f1xx.s + * before jump to __main + * @param None + * @retval None + */ +#ifdef DATA_IN_ExtSRAM +/** + * @brief Setup the external memory controller. + * Called in startup_stm32f1xx_xx.s/.c before jump to main. + * This function configures the external SRAM mounted on STM3210E-EVAL + * board (STM32 High density devices). This SRAM will be used as program + * data memory (including heap and stack). + * @param None + * @retval None + */ +void SystemInit_ExtMemCtl(void) +{ + __IO uint32_t tmpreg; + /*!< FSMC Bank1 NOR/SRAM3 is used for the STM3210E-EVAL, if another Bank is + required, then adjust the Register Addresses */ + + /* Enable FSMC clock */ + RCC->AHBENR = 0x00000114U; + + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_FSMCEN); + + /* Enable GPIOD, GPIOE, GPIOF and GPIOG clocks */ + RCC->APB2ENR = 0x000001E0U; + + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPDEN); + + (void)(tmpreg); + +/* --------------- SRAM Data lines, NOE and NWE configuration ---------------*/ +/*---------------- SRAM Address lines configuration -------------------------*/ +/*---------------- NOE and NWE configuration --------------------------------*/ +/*---------------- NE3 configuration ----------------------------------------*/ +/*---------------- NBL0, NBL1 configuration ---------------------------------*/ + + GPIOD->CRL = 0x44BB44BBU; + GPIOD->CRH = 0xBBBBBBBBU; + + GPIOE->CRL = 0xB44444BBU; + GPIOE->CRH = 0xBBBBBBBBU; + + GPIOF->CRL = 0x44BBBBBBU; + GPIOF->CRH = 0xBBBB4444U; + + GPIOG->CRL = 0x44BBBBBBU; + GPIOG->CRH = 0x444B4B44U; + +/*---------------- FSMC Configuration ---------------------------------------*/ +/*---------------- Enable FSMC Bank1_SRAM Bank ------------------------------*/ + + FSMC_Bank1->BTCR[4U] = 0x00001091U; + FSMC_Bank1->BTCR[5U] = 0x00110212U; +} +#endif /* DATA_IN_ExtSRAM */ +#endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/startup_stm32f103xb.s b/Core/Startup/startup_stm32f103c8tx.s similarity index 96% rename from startup_stm32f103xb.s rename to Core/Startup/startup_stm32f103c8tx.s index 48cf4475..a463e880 100644 --- a/startup_stm32f103xb.s +++ b/Core/Startup/startup_stm32f103c8tx.s @@ -1,362 +1,362 @@ -/** - *************** (C) COPYRIGHT 2017 STMicroelectronics ************************ - * @file startup_stm32f103xb.s - * @author MCD Application Team - * @brief STM32F103xB Devices vector table for Atollic toolchain. - * This module performs: - * - Set the initial SP - * - Set the initial PC == Reset_Handler, - * - Set the vector table entries with the exceptions ISR address - * - Configure the clock system - * - Branches to main in the C library (which eventually - * calls main()). - * After Reset the Cortex-M3 processor is in Thread mode, - * priority is Privileged, and the Stack is set to Main. - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2017 STMicroelectronics. - * All rights reserved.

- * - * This software component is licensed by ST under BSD 3-Clause license, - * the "License"; You may not use this file except in compliance with the - * License. You may obtain a copy of the License at: - * opensource.org/licenses/BSD-3-Clause - * - ****************************************************************************** - */ - - .syntax unified - .cpu cortex-m3 - .fpu softvfp - .thumb - -.global g_pfnVectors -.global Default_Handler - -/* start address for the initialization values of the .data section. -defined in linker script */ -.word _sidata -/* start address for the .data section. defined in linker script */ -.word _sdata -/* end address for the .data section. defined in linker script */ -.word _edata -/* start address for the .bss section. defined in linker script */ -.word _sbss -/* end address for the .bss section. defined in linker script */ -.word _ebss - -.equ BootRAM, 0xF108F85F -/** - * @brief This is the code that gets called when the processor first - * starts execution following a reset event. Only the absolutely - * necessary set is performed, after which the application - * supplied main() routine is called. - * @param None - * @retval : None -*/ - - .section .text.Reset_Handler - .weak Reset_Handler - .type Reset_Handler, %function -Reset_Handler: - -/* Copy the data segment initializers from flash to SRAM */ - movs r1, #0 - b LoopCopyDataInit - -CopyDataInit: - ldr r3, =_sidata - ldr r3, [r3, r1] - str r3, [r0, r1] - adds r1, r1, #4 - -LoopCopyDataInit: - ldr r0, =_sdata - ldr r3, =_edata - adds r2, r0, r1 - cmp r2, r3 - bcc CopyDataInit - ldr r2, =_sbss - b LoopFillZerobss -/* Zero fill the bss segment. */ -FillZerobss: - movs r3, #0 - str r3, [r2], #4 - -LoopFillZerobss: - ldr r3, = _ebss - cmp r2, r3 - bcc FillZerobss - -/* Call the clock system intitialization function.*/ - bl SystemInit -/* Call static constructors */ - bl __libc_init_array -/* Call the application's entry point.*/ - bl main - bx lr -.size Reset_Handler, .-Reset_Handler - -/** - * @brief This is the code that gets called when the processor receives an - * unexpected interrupt. This simply enters an infinite loop, preserving - * the system state for examination by a debugger. - * - * @param None - * @retval : None -*/ - .section .text.Default_Handler,"ax",%progbits -Default_Handler: -Infinite_Loop: - b Infinite_Loop - .size Default_Handler, .-Default_Handler -/****************************************************************************** -* -* The minimal vector table for a Cortex M3. Note that the proper constructs -* must be placed on this to ensure that it ends up at physical address -* 0x0000.0000. -* -******************************************************************************/ - .section .isr_vector,"a",%progbits - .type g_pfnVectors, %object - .size g_pfnVectors, .-g_pfnVectors - - -g_pfnVectors: - - .word _estack - .word Reset_Handler - .word NMI_Handler - .word HardFault_Handler - .word MemManage_Handler - .word BusFault_Handler - .word UsageFault_Handler - .word 0 - .word 0 - .word 0 - .word 0 - .word SVC_Handler - .word DebugMon_Handler - .word 0 - .word PendSV_Handler - .word SysTick_Handler - .word WWDG_IRQHandler - .word PVD_IRQHandler - .word TAMPER_IRQHandler - .word RTC_IRQHandler - .word FLASH_IRQHandler - .word RCC_IRQHandler - .word EXTI0_IRQHandler - .word EXTI1_IRQHandler - .word EXTI2_IRQHandler - .word EXTI3_IRQHandler - .word EXTI4_IRQHandler - .word DMA1_Channel1_IRQHandler - .word DMA1_Channel2_IRQHandler - .word DMA1_Channel3_IRQHandler - .word DMA1_Channel4_IRQHandler - .word DMA1_Channel5_IRQHandler - .word DMA1_Channel6_IRQHandler - .word DMA1_Channel7_IRQHandler - .word ADC1_2_IRQHandler - .word USB_HP_CAN1_TX_IRQHandler - .word USB_LP_CAN1_RX0_IRQHandler - .word CAN1_RX1_IRQHandler - .word CAN1_SCE_IRQHandler - .word EXTI9_5_IRQHandler - .word TIM1_BRK_IRQHandler - .word TIM1_UP_IRQHandler - .word TIM1_TRG_COM_IRQHandler - .word TIM1_CC_IRQHandler - .word TIM2_IRQHandler - .word TIM3_IRQHandler - .word TIM4_IRQHandler - .word I2C1_EV_IRQHandler - .word I2C1_ER_IRQHandler - .word I2C2_EV_IRQHandler - .word I2C2_ER_IRQHandler - .word SPI1_IRQHandler - .word SPI2_IRQHandler - .word USART1_IRQHandler - .word USART2_IRQHandler - .word USART3_IRQHandler - .word EXTI15_10_IRQHandler - .word RTC_Alarm_IRQHandler - .word USBWakeUp_IRQHandler - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word BootRAM /* @0x108. This is for boot in RAM mode for - STM32F10x Medium Density devices. */ - -/******************************************************************************* -* -* Provide weak aliases for each Exception handler to the Default_Handler. -* As they are weak aliases, any function with the same name will override -* this definition. -* -*******************************************************************************/ - - .weak NMI_Handler - .thumb_set NMI_Handler,Default_Handler - - .weak HardFault_Handler - .thumb_set HardFault_Handler,Default_Handler - - .weak MemManage_Handler - .thumb_set MemManage_Handler,Default_Handler - - .weak BusFault_Handler - .thumb_set BusFault_Handler,Default_Handler - - .weak UsageFault_Handler - .thumb_set UsageFault_Handler,Default_Handler - - .weak SVC_Handler - .thumb_set SVC_Handler,Default_Handler - - .weak DebugMon_Handler - .thumb_set DebugMon_Handler,Default_Handler - - .weak PendSV_Handler - .thumb_set PendSV_Handler,Default_Handler - - .weak SysTick_Handler - .thumb_set SysTick_Handler,Default_Handler - - .weak WWDG_IRQHandler - .thumb_set WWDG_IRQHandler,Default_Handler - - .weak PVD_IRQHandler - .thumb_set PVD_IRQHandler,Default_Handler - - .weak TAMPER_IRQHandler - .thumb_set TAMPER_IRQHandler,Default_Handler - - .weak RTC_IRQHandler - .thumb_set RTC_IRQHandler,Default_Handler - - .weak FLASH_IRQHandler - .thumb_set FLASH_IRQHandler,Default_Handler - - .weak RCC_IRQHandler - .thumb_set RCC_IRQHandler,Default_Handler - - .weak EXTI0_IRQHandler - .thumb_set EXTI0_IRQHandler,Default_Handler - - .weak EXTI1_IRQHandler - .thumb_set EXTI1_IRQHandler,Default_Handler - - .weak EXTI2_IRQHandler - .thumb_set EXTI2_IRQHandler,Default_Handler - - .weak EXTI3_IRQHandler - .thumb_set EXTI3_IRQHandler,Default_Handler - - .weak EXTI4_IRQHandler - .thumb_set EXTI4_IRQHandler,Default_Handler - - .weak DMA1_Channel1_IRQHandler - .thumb_set DMA1_Channel1_IRQHandler,Default_Handler - - .weak DMA1_Channel2_IRQHandler - .thumb_set DMA1_Channel2_IRQHandler,Default_Handler - - .weak DMA1_Channel3_IRQHandler - .thumb_set DMA1_Channel3_IRQHandler,Default_Handler - - .weak DMA1_Channel4_IRQHandler - .thumb_set DMA1_Channel4_IRQHandler,Default_Handler - - .weak DMA1_Channel5_IRQHandler - .thumb_set DMA1_Channel5_IRQHandler,Default_Handler - - .weak DMA1_Channel6_IRQHandler - .thumb_set DMA1_Channel6_IRQHandler,Default_Handler - - .weak DMA1_Channel7_IRQHandler - .thumb_set DMA1_Channel7_IRQHandler,Default_Handler - - .weak ADC1_2_IRQHandler - .thumb_set ADC1_2_IRQHandler,Default_Handler - - .weak USB_HP_CAN1_TX_IRQHandler - .thumb_set USB_HP_CAN1_TX_IRQHandler,Default_Handler - - .weak USB_LP_CAN1_RX0_IRQHandler - .thumb_set USB_LP_CAN1_RX0_IRQHandler,Default_Handler - - .weak CAN1_RX1_IRQHandler - .thumb_set CAN1_RX1_IRQHandler,Default_Handler - - .weak CAN1_SCE_IRQHandler - .thumb_set CAN1_SCE_IRQHandler,Default_Handler - - .weak EXTI9_5_IRQHandler - .thumb_set EXTI9_5_IRQHandler,Default_Handler - - .weak TIM1_BRK_IRQHandler - .thumb_set TIM1_BRK_IRQHandler,Default_Handler - - .weak TIM1_UP_IRQHandler - .thumb_set TIM1_UP_IRQHandler,Default_Handler - - .weak TIM1_TRG_COM_IRQHandler - .thumb_set TIM1_TRG_COM_IRQHandler,Default_Handler - - .weak TIM1_CC_IRQHandler - .thumb_set TIM1_CC_IRQHandler,Default_Handler - - .weak TIM2_IRQHandler - .thumb_set TIM2_IRQHandler,Default_Handler - - .weak TIM3_IRQHandler - .thumb_set TIM3_IRQHandler,Default_Handler - - .weak TIM4_IRQHandler - .thumb_set TIM4_IRQHandler,Default_Handler - - .weak I2C1_EV_IRQHandler - .thumb_set I2C1_EV_IRQHandler,Default_Handler - - .weak I2C1_ER_IRQHandler - .thumb_set I2C1_ER_IRQHandler,Default_Handler - - .weak I2C2_EV_IRQHandler - .thumb_set I2C2_EV_IRQHandler,Default_Handler - - .weak I2C2_ER_IRQHandler - .thumb_set I2C2_ER_IRQHandler,Default_Handler - - .weak SPI1_IRQHandler - .thumb_set SPI1_IRQHandler,Default_Handler - - .weak SPI2_IRQHandler - .thumb_set SPI2_IRQHandler,Default_Handler - - .weak USART1_IRQHandler - .thumb_set USART1_IRQHandler,Default_Handler - - .weak USART2_IRQHandler - .thumb_set USART2_IRQHandler,Default_Handler - - .weak USART3_IRQHandler - .thumb_set USART3_IRQHandler,Default_Handler - - .weak EXTI15_10_IRQHandler - .thumb_set EXTI15_10_IRQHandler,Default_Handler - - .weak RTC_Alarm_IRQHandler - .thumb_set RTC_Alarm_IRQHandler,Default_Handler - - .weak USBWakeUp_IRQHandler - .thumb_set USBWakeUp_IRQHandler,Default_Handler - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ - +/** + *************** (C) COPYRIGHT 2017 STMicroelectronics ************************ + * @file startup_stm32f103xb.s + * @author MCD Application Team + * @brief STM32F103xB Devices vector table for Atollic toolchain. + * This module performs: + * - Set the initial SP + * - Set the initial PC == Reset_Handler, + * - Set the vector table entries with the exceptions ISR address + * - Configure the clock system + * - Branches to main in the C library (which eventually + * calls main()). + * After Reset the Cortex-M3 processor is in Thread mode, + * priority is Privileged, and the Stack is set to Main. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + + .syntax unified + .cpu cortex-m3 + .fpu softvfp + .thumb + +.global g_pfnVectors +.global Default_Handler + +/* start address for the initialization values of the .data section. +defined in linker script */ +.word _sidata +/* start address for the .data section. defined in linker script */ +.word _sdata +/* end address for the .data section. defined in linker script */ +.word _edata +/* start address for the .bss section. defined in linker script */ +.word _sbss +/* end address for the .bss section. defined in linker script */ +.word _ebss + +.equ BootRAM, 0xF108F85F +/** + * @brief This is the code that gets called when the processor first + * starts execution following a reset event. Only the absolutely + * necessary set is performed, after which the application + * supplied main() routine is called. + * @param None + * @retval : None +*/ + + .section .text.Reset_Handler + .weak Reset_Handler + .type Reset_Handler, %function +Reset_Handler: + +/* Copy the data segment initializers from flash to SRAM */ + movs r1, #0 + b LoopCopyDataInit + +CopyDataInit: + ldr r3, =_sidata + ldr r3, [r3, r1] + str r3, [r0, r1] + adds r1, r1, #4 + +LoopCopyDataInit: + ldr r0, =_sdata + ldr r3, =_edata + adds r2, r0, r1 + cmp r2, r3 + bcc CopyDataInit + ldr r2, =_sbss + b LoopFillZerobss +/* Zero fill the bss segment. */ +FillZerobss: + movs r3, #0 + str r3, [r2], #4 + +LoopFillZerobss: + ldr r3, = _ebss + cmp r2, r3 + bcc FillZerobss + +/* Call the clock system intitialization function.*/ + bl SystemInit +/* Call static constructors */ + bl __libc_init_array +/* Call the application's entry point.*/ + bl main + bx lr +.size Reset_Handler, .-Reset_Handler + +/** + * @brief This is the code that gets called when the processor receives an + * unexpected interrupt. This simply enters an infinite loop, preserving + * the system state for examination by a debugger. + * + * @param None + * @retval : None +*/ + .section .text.Default_Handler,"ax",%progbits +Default_Handler: +Infinite_Loop: + b Infinite_Loop + .size Default_Handler, .-Default_Handler +/****************************************************************************** +* +* The minimal vector table for a Cortex M3. Note that the proper constructs +* must be placed on this to ensure that it ends up at physical address +* 0x0000.0000. +* +******************************************************************************/ + .section .isr_vector,"a",%progbits + .type g_pfnVectors, %object + .size g_pfnVectors, .-g_pfnVectors + + +g_pfnVectors: + + .word _estack + .word Reset_Handler + .word NMI_Handler + .word HardFault_Handler + .word MemManage_Handler + .word BusFault_Handler + .word UsageFault_Handler + .word 0 + .word 0 + .word 0 + .word 0 + .word SVC_Handler + .word DebugMon_Handler + .word 0 + .word PendSV_Handler + .word SysTick_Handler + .word WWDG_IRQHandler + .word PVD_IRQHandler + .word TAMPER_IRQHandler + .word RTC_IRQHandler + .word FLASH_IRQHandler + .word RCC_IRQHandler + .word EXTI0_IRQHandler + .word EXTI1_IRQHandler + .word EXTI2_IRQHandler + .word EXTI3_IRQHandler + .word EXTI4_IRQHandler + .word DMA1_Channel1_IRQHandler + .word DMA1_Channel2_IRQHandler + .word DMA1_Channel3_IRQHandler + .word DMA1_Channel4_IRQHandler + .word DMA1_Channel5_IRQHandler + .word DMA1_Channel6_IRQHandler + .word DMA1_Channel7_IRQHandler + .word ADC1_2_IRQHandler + .word USB_HP_CAN1_TX_IRQHandler + .word USB_LP_CAN1_RX0_IRQHandler + .word CAN1_RX1_IRQHandler + .word CAN1_SCE_IRQHandler + .word EXTI9_5_IRQHandler + .word TIM1_BRK_IRQHandler + .word TIM1_UP_IRQHandler + .word TIM1_TRG_COM_IRQHandler + .word TIM1_CC_IRQHandler + .word TIM2_IRQHandler + .word TIM3_IRQHandler + .word TIM4_IRQHandler + .word I2C1_EV_IRQHandler + .word I2C1_ER_IRQHandler + .word I2C2_EV_IRQHandler + .word I2C2_ER_IRQHandler + .word SPI1_IRQHandler + .word SPI2_IRQHandler + .word USART1_IRQHandler + .word USART2_IRQHandler + .word USART3_IRQHandler + .word EXTI15_10_IRQHandler + .word RTC_Alarm_IRQHandler + .word USBWakeUp_IRQHandler + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word 0 + .word BootRAM /* @0x108. This is for boot in RAM mode for + STM32F10x Medium Density devices. */ + +/******************************************************************************* +* +* Provide weak aliases for each Exception handler to the Default_Handler. +* As they are weak aliases, any function with the same name will override +* this definition. +* +*******************************************************************************/ + + .weak NMI_Handler + .thumb_set NMI_Handler,Default_Handler + + .weak HardFault_Handler + .thumb_set HardFault_Handler,Default_Handler + + .weak MemManage_Handler + .thumb_set MemManage_Handler,Default_Handler + + .weak BusFault_Handler + .thumb_set BusFault_Handler,Default_Handler + + .weak UsageFault_Handler + .thumb_set UsageFault_Handler,Default_Handler + + .weak SVC_Handler + .thumb_set SVC_Handler,Default_Handler + + .weak DebugMon_Handler + .thumb_set DebugMon_Handler,Default_Handler + + .weak PendSV_Handler + .thumb_set PendSV_Handler,Default_Handler + + .weak SysTick_Handler + .thumb_set SysTick_Handler,Default_Handler + + .weak WWDG_IRQHandler + .thumb_set WWDG_IRQHandler,Default_Handler + + .weak PVD_IRQHandler + .thumb_set PVD_IRQHandler,Default_Handler + + .weak TAMPER_IRQHandler + .thumb_set TAMPER_IRQHandler,Default_Handler + + .weak RTC_IRQHandler + .thumb_set RTC_IRQHandler,Default_Handler + + .weak FLASH_IRQHandler + .thumb_set FLASH_IRQHandler,Default_Handler + + .weak RCC_IRQHandler + .thumb_set RCC_IRQHandler,Default_Handler + + .weak EXTI0_IRQHandler + .thumb_set EXTI0_IRQHandler,Default_Handler + + .weak EXTI1_IRQHandler + .thumb_set EXTI1_IRQHandler,Default_Handler + + .weak EXTI2_IRQHandler + .thumb_set EXTI2_IRQHandler,Default_Handler + + .weak EXTI3_IRQHandler + .thumb_set EXTI3_IRQHandler,Default_Handler + + .weak EXTI4_IRQHandler + .thumb_set EXTI4_IRQHandler,Default_Handler + + .weak DMA1_Channel1_IRQHandler + .thumb_set DMA1_Channel1_IRQHandler,Default_Handler + + .weak DMA1_Channel2_IRQHandler + .thumb_set DMA1_Channel2_IRQHandler,Default_Handler + + .weak DMA1_Channel3_IRQHandler + .thumb_set DMA1_Channel3_IRQHandler,Default_Handler + + .weak DMA1_Channel4_IRQHandler + .thumb_set DMA1_Channel4_IRQHandler,Default_Handler + + .weak DMA1_Channel5_IRQHandler + .thumb_set DMA1_Channel5_IRQHandler,Default_Handler + + .weak DMA1_Channel6_IRQHandler + .thumb_set DMA1_Channel6_IRQHandler,Default_Handler + + .weak DMA1_Channel7_IRQHandler + .thumb_set DMA1_Channel7_IRQHandler,Default_Handler + + .weak ADC1_2_IRQHandler + .thumb_set ADC1_2_IRQHandler,Default_Handler + + .weak USB_HP_CAN1_TX_IRQHandler + .thumb_set USB_HP_CAN1_TX_IRQHandler,Default_Handler + + .weak USB_LP_CAN1_RX0_IRQHandler + .thumb_set USB_LP_CAN1_RX0_IRQHandler,Default_Handler + + .weak CAN1_RX1_IRQHandler + .thumb_set CAN1_RX1_IRQHandler,Default_Handler + + .weak CAN1_SCE_IRQHandler + .thumb_set CAN1_SCE_IRQHandler,Default_Handler + + .weak EXTI9_5_IRQHandler + .thumb_set EXTI9_5_IRQHandler,Default_Handler + + .weak TIM1_BRK_IRQHandler + .thumb_set TIM1_BRK_IRQHandler,Default_Handler + + .weak TIM1_UP_IRQHandler + .thumb_set TIM1_UP_IRQHandler,Default_Handler + + .weak TIM1_TRG_COM_IRQHandler + .thumb_set TIM1_TRG_COM_IRQHandler,Default_Handler + + .weak TIM1_CC_IRQHandler + .thumb_set TIM1_CC_IRQHandler,Default_Handler + + .weak TIM2_IRQHandler + .thumb_set TIM2_IRQHandler,Default_Handler + + .weak TIM3_IRQHandler + .thumb_set TIM3_IRQHandler,Default_Handler + + .weak TIM4_IRQHandler + .thumb_set TIM4_IRQHandler,Default_Handler + + .weak I2C1_EV_IRQHandler + .thumb_set I2C1_EV_IRQHandler,Default_Handler + + .weak I2C1_ER_IRQHandler + .thumb_set I2C1_ER_IRQHandler,Default_Handler + + .weak I2C2_EV_IRQHandler + .thumb_set I2C2_EV_IRQHandler,Default_Handler + + .weak I2C2_ER_IRQHandler + .thumb_set I2C2_ER_IRQHandler,Default_Handler + + .weak SPI1_IRQHandler + .thumb_set SPI1_IRQHandler,Default_Handler + + .weak SPI2_IRQHandler + .thumb_set SPI2_IRQHandler,Default_Handler + + .weak USART1_IRQHandler + .thumb_set USART1_IRQHandler,Default_Handler + + .weak USART2_IRQHandler + .thumb_set USART2_IRQHandler,Default_Handler + + .weak USART3_IRQHandler + .thumb_set USART3_IRQHandler,Default_Handler + + .weak EXTI15_10_IRQHandler + .thumb_set EXTI15_10_IRQHandler,Default_Handler + + .weak RTC_Alarm_IRQHandler + .thumb_set RTC_Alarm_IRQHandler,Default_Handler + + .weak USBWakeUp_IRQHandler + .thumb_set USBWakeUp_IRQHandler,Default_Handler + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/Documentation/CubeMX Pinout.PNG b/Documentation/CubeMX Pinout.PNG new file mode 100644 index 00000000..6e85c985 Binary files /dev/null and b/Documentation/CubeMX Pinout.PNG differ diff --git a/Documentation/M365 pinout.pdf b/Documentation/M365 pinout.pdf new file mode 100644 index 00000000..e220b414 Binary files /dev/null and b/Documentation/M365 pinout.pdf differ diff --git a/Documentation/Memory_Map.jpg b/Documentation/Memory_Map.jpg new file mode 100644 index 00000000..f2e74705 Binary files /dev/null and b/Documentation/Memory_Map.jpg differ diff --git a/Documentation/PCB Layout M365.PNG b/Documentation/PCB Layout M365.PNG new file mode 100644 index 00000000..279fc1dc Binary files /dev/null and b/Documentation/PCB Layout M365.PNG differ diff --git a/Documentation/PinoutM365vsG30.png b/Documentation/PinoutM365vsG30.png new file mode 100644 index 00000000..043b4496 Binary files /dev/null and b/Documentation/PinoutM365vsG30.png differ diff --git a/Documentation/analog throttle input.jpg b/Documentation/analog throttle input.jpg new file mode 100644 index 00000000..f5c644ab Binary files /dev/null and b/Documentation/analog throttle input.jpg differ diff --git a/Drivers/CMSIS/Include/cmsis_armcc_V6.h b/Drivers/CMSIS/Include/cmsis_armcc_V6.h deleted file mode 100644 index d714e9b0..00000000 --- a/Drivers/CMSIS/Include/cmsis_armcc_V6.h +++ /dev/null @@ -1,1800 +0,0 @@ -/**************************************************************************//** - * @file cmsis_armcc_V6.h - * @brief CMSIS Cortex-M Core Function/Instruction Header File - * @version V4.30 - * @date 20. October 2015 - ******************************************************************************/ -/* Copyright (c) 2009 - 2015 ARM LIMITED - - All rights reserved. - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of ARM nor the names of its contributors may be used - to endorse or promote products derived from this software without - specific prior written permission. - * - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - ---------------------------------------------------------------------------*/ - - -#ifndef __CMSIS_ARMCC_V6_H -#define __CMSIS_ARMCC_V6_H - - -/* ########################### Core Function Access ########################### */ -/** \ingroup CMSIS_Core_FunctionInterface - \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions - @{ - */ - -/** - \brief Enable IRQ Interrupts - \details Enables IRQ interrupts by clearing the I-bit in the CPSR. - Can only be executed in Privileged modes. - */ -__attribute__((always_inline)) __STATIC_INLINE void __enable_irq(void) -{ - __ASM volatile ("cpsie i" : : : "memory"); -} - - -/** - \brief Disable IRQ Interrupts - \details Disables IRQ interrupts by setting the I-bit in the CPSR. - Can only be executed in Privileged modes. - */ -__attribute__((always_inline)) __STATIC_INLINE void __disable_irq(void) -{ - __ASM volatile ("cpsid i" : : : "memory"); -} - - -/** - \brief Get Control Register - \details Returns the content of the Control Register. - \return Control Register value - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_CONTROL(void) -{ - uint32_t result; - - __ASM volatile ("MRS %0, control" : "=r" (result) ); - return(result); -} - - -#if (__ARM_FEATURE_CMSE == 3U) -/** - \brief Get Control Register (non-secure) - \details Returns the content of the non-secure Control Register when in secure mode. - \return non-secure Control Register value - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __TZ_get_CONTROL_NS(void) -{ - uint32_t result; - - __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); - return(result); -} -#endif - - -/** - \brief Set Control Register - \details Writes the given value to the Control Register. - \param [in] control Control Register value to set - */ -__attribute__((always_inline)) __STATIC_INLINE void __set_CONTROL(uint32_t control) -{ - __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); -} - - -#if (__ARM_FEATURE_CMSE == 3U) -/** - \brief Set Control Register (non-secure) - \details Writes the given value to the non-secure Control Register when in secure state. - \param [in] control Control Register value to set - */ -__attribute__((always_inline)) __STATIC_INLINE void __TZ_set_CONTROL_NS(uint32_t control) -{ - __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); -} -#endif - - -/** - \brief Get IPSR Register - \details Returns the content of the IPSR Register. - \return IPSR Register value - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_IPSR(void) -{ - uint32_t result; - - __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); - return(result); -} - - -#if (__ARM_FEATURE_CMSE == 3U) -/** - \brief Get IPSR Register (non-secure) - \details Returns the content of the non-secure IPSR Register when in secure state. - \return IPSR Register value - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __TZ_get_IPSR_NS(void) -{ - uint32_t result; - - __ASM volatile ("MRS %0, ipsr_ns" : "=r" (result) ); - return(result); -} -#endif - - -/** - \brief Get APSR Register - \details Returns the content of the APSR Register. - \return APSR Register value - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_APSR(void) -{ - uint32_t result; - - __ASM volatile ("MRS %0, apsr" : "=r" (result) ); - return(result); -} - - -#if (__ARM_FEATURE_CMSE == 3U) -/** - \brief Get APSR Register (non-secure) - \details Returns the content of the non-secure APSR Register when in secure state. - \return APSR Register value - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __TZ_get_APSR_NS(void) -{ - uint32_t result; - - __ASM volatile ("MRS %0, apsr_ns" : "=r" (result) ); - return(result); -} -#endif - - -/** - \brief Get xPSR Register - \details Returns the content of the xPSR Register. - \return xPSR Register value - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_xPSR(void) -{ - uint32_t result; - - __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); - return(result); -} - - -#if (__ARM_FEATURE_CMSE == 3U) -/** - \brief Get xPSR Register (non-secure) - \details Returns the content of the non-secure xPSR Register when in secure state. - \return xPSR Register value - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __TZ_get_xPSR_NS(void) -{ - uint32_t result; - - __ASM volatile ("MRS %0, xpsr_ns" : "=r" (result) ); - return(result); -} -#endif - - -/** - \brief Get Process Stack Pointer - \details Returns the current value of the Process Stack Pointer (PSP). - \return PSP Register value - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_PSP(void) -{ - register uint32_t result; - - __ASM volatile ("MRS %0, psp" : "=r" (result) ); - return(result); -} - - -#if (__ARM_FEATURE_CMSE == 3U) -/** - \brief Get Process Stack Pointer (non-secure) - \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure state. - \return PSP Register value - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __TZ_get_PSP_NS(void) -{ - register uint32_t result; - - __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); - return(result); -} -#endif - - -/** - \brief Set Process Stack Pointer - \details Assigns the given value to the Process Stack Pointer (PSP). - \param [in] topOfProcStack Process Stack Pointer value to set - */ -__attribute__((always_inline)) __STATIC_INLINE void __set_PSP(uint32_t topOfProcStack) -{ - __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : "sp"); -} - - -#if (__ARM_FEATURE_CMSE == 3U) -/** - \brief Set Process Stack Pointer (non-secure) - \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure state. - \param [in] topOfProcStack Process Stack Pointer value to set - */ -__attribute__((always_inline)) __STATIC_INLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) -{ - __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : "sp"); -} -#endif - - -/** - \brief Get Main Stack Pointer - \details Returns the current value of the Main Stack Pointer (MSP). - \return MSP Register value - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_MSP(void) -{ - register uint32_t result; - - __ASM volatile ("MRS %0, msp" : "=r" (result) ); - return(result); -} - - -#if (__ARM_FEATURE_CMSE == 3U) -/** - \brief Get Main Stack Pointer (non-secure) - \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure state. - \return MSP Register value - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __TZ_get_MSP_NS(void) -{ - register uint32_t result; - - __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); - return(result); -} -#endif - - -/** - \brief Set Main Stack Pointer - \details Assigns the given value to the Main Stack Pointer (MSP). - \param [in] topOfMainStack Main Stack Pointer value to set - */ -__attribute__((always_inline)) __STATIC_INLINE void __set_MSP(uint32_t topOfMainStack) -{ - __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : "sp"); -} - - -#if (__ARM_FEATURE_CMSE == 3U) -/** - \brief Set Main Stack Pointer (non-secure) - \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. - \param [in] topOfMainStack Main Stack Pointer value to set - */ -__attribute__((always_inline)) __STATIC_INLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) -{ - __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : "sp"); -} -#endif - - -/** - \brief Get Priority Mask - \details Returns the current state of the priority mask bit from the Priority Mask Register. - \return Priority Mask value - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_PRIMASK(void) -{ - uint32_t result; - - __ASM volatile ("MRS %0, primask" : "=r" (result) ); - return(result); -} - - -#if (__ARM_FEATURE_CMSE == 3U) -/** - \brief Get Priority Mask (non-secure) - \details Returns the current state of the non-secure priority mask bit from the Priority Mask Register when in secure state. - \return Priority Mask value - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __TZ_get_PRIMASK_NS(void) -{ - uint32_t result; - - __ASM volatile ("MRS %0, primask_ns" : "=r" (result) ); - return(result); -} -#endif - - -/** - \brief Set Priority Mask - \details Assigns the given value to the Priority Mask Register. - \param [in] priMask Priority Mask - */ -__attribute__((always_inline)) __STATIC_INLINE void __set_PRIMASK(uint32_t priMask) -{ - __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); -} - - -#if (__ARM_FEATURE_CMSE == 3U) -/** - \brief Set Priority Mask (non-secure) - \details Assigns the given value to the non-secure Priority Mask Register when in secure state. - \param [in] priMask Priority Mask - */ -__attribute__((always_inline)) __STATIC_INLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) -{ - __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); -} -#endif - - -#if ((__ARM_ARCH_7M__ == 1U) || (__ARM_ARCH_7EM__ == 1U) || (__ARM_ARCH_8M__ == 1U)) /* ToDo: ARMCC_V6: check if this is ok for cortex >=3 */ - -/** - \brief Enable FIQ - \details Enables FIQ interrupts by clearing the F-bit in the CPSR. - Can only be executed in Privileged modes. - */ -__attribute__((always_inline)) __STATIC_INLINE void __enable_fault_irq(void) -{ - __ASM volatile ("cpsie f" : : : "memory"); -} - - -/** - \brief Disable FIQ - \details Disables FIQ interrupts by setting the F-bit in the CPSR. - Can only be executed in Privileged modes. - */ -__attribute__((always_inline)) __STATIC_INLINE void __disable_fault_irq(void) -{ - __ASM volatile ("cpsid f" : : : "memory"); -} - - -/** - \brief Get Base Priority - \details Returns the current value of the Base Priority register. - \return Base Priority register value - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_BASEPRI(void) -{ - uint32_t result; - - __ASM volatile ("MRS %0, basepri" : "=r" (result) ); - return(result); -} - - -#if (__ARM_FEATURE_CMSE == 3U) -/** - \brief Get Base Priority (non-secure) - \details Returns the current value of the non-secure Base Priority register when in secure state. - \return Base Priority register value - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __TZ_get_BASEPRI_NS(void) -{ - uint32_t result; - - __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); - return(result); -} -#endif - - -/** - \brief Set Base Priority - \details Assigns the given value to the Base Priority register. - \param [in] basePri Base Priority value to set - */ -__attribute__((always_inline)) __STATIC_INLINE void __set_BASEPRI(uint32_t value) -{ - __ASM volatile ("MSR basepri, %0" : : "r" (value) : "memory"); -} - - -#if (__ARM_FEATURE_CMSE == 3U) -/** - \brief Set Base Priority (non-secure) - \details Assigns the given value to the non-secure Base Priority register when in secure state. - \param [in] basePri Base Priority value to set - */ -__attribute__((always_inline)) __STATIC_INLINE void __TZ_set_BASEPRI_NS(uint32_t value) -{ - __ASM volatile ("MSR basepri_ns, %0" : : "r" (value) : "memory"); -} -#endif - - -/** - \brief Set Base Priority with condition - \details Assigns the given value to the Base Priority register only if BASEPRI masking is disabled, - or the new value increases the BASEPRI priority level. - \param [in] basePri Base Priority value to set - */ -__attribute__((always_inline)) __STATIC_INLINE void __set_BASEPRI_MAX(uint32_t value) -{ - __ASM volatile ("MSR basepri_max, %0" : : "r" (value) : "memory"); -} - - -#if (__ARM_FEATURE_CMSE == 3U) -/** - \brief Set Base Priority with condition (non_secure) - \details Assigns the given value to the non-secure Base Priority register when in secure state only if BASEPRI masking is disabled, - or the new value increases the BASEPRI priority level. - \param [in] basePri Base Priority value to set - */ -__attribute__((always_inline)) __STATIC_INLINE void __TZ_set_BASEPRI_MAX_NS(uint32_t value) -{ - __ASM volatile ("MSR basepri_max_ns, %0" : : "r" (value) : "memory"); -} -#endif - - -/** - \brief Get Fault Mask - \details Returns the current value of the Fault Mask register. - \return Fault Mask register value - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_FAULTMASK(void) -{ - uint32_t result; - - __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); - return(result); -} - - -#if (__ARM_FEATURE_CMSE == 3U) -/** - \brief Get Fault Mask (non-secure) - \details Returns the current value of the non-secure Fault Mask register when in secure state. - \return Fault Mask register value - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __TZ_get_FAULTMASK_NS(void) -{ - uint32_t result; - - __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); - return(result); -} -#endif - - -/** - \brief Set Fault Mask - \details Assigns the given value to the Fault Mask register. - \param [in] faultMask Fault Mask value to set - */ -__attribute__((always_inline)) __STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask) -{ - __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); -} - - -#if (__ARM_FEATURE_CMSE == 3U) -/** - \brief Set Fault Mask (non-secure) - \details Assigns the given value to the non-secure Fault Mask register when in secure state. - \param [in] faultMask Fault Mask value to set - */ -__attribute__((always_inline)) __STATIC_INLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) -{ - __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); -} -#endif - - -#endif /* ((__ARM_ARCH_7M__ == 1U) || (__ARM_ARCH_8M__ == 1U)) */ - - -#if (__ARM_ARCH_8M__ == 1U) - -/** - \brief Get Process Stack Pointer Limit - \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). - \return PSPLIM Register value - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_PSPLIM(void) -{ - register uint32_t result; - - __ASM volatile ("MRS %0, psplim" : "=r" (result) ); - return(result); -} - - -#if (__ARM_FEATURE_CMSE == 3U) && (__ARM_ARCH_PROFILE == 'M') /* ToDo: ARMCC_V6: check predefined macro for mainline */ -/** - \brief Get Process Stack Pointer Limit (non-secure) - \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. - \return PSPLIM Register value - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __TZ_get_PSPLIM_NS(void) -{ - register uint32_t result; - - __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); - return(result); -} -#endif - - -/** - \brief Set Process Stack Pointer Limit - \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). - \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set - */ -__attribute__((always_inline)) __STATIC_INLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) -{ - __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); -} - - -#if (__ARM_FEATURE_CMSE == 3U) && (__ARM_ARCH_PROFILE == 'M') /* ToDo: ARMCC_V6: check predefined macro for mainline */ -/** - \brief Set Process Stack Pointer (non-secure) - \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in secure state. - \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set - */ -__attribute__((always_inline)) __STATIC_INLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) -{ - __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); -} -#endif - - -/** - \brief Get Main Stack Pointer Limit - \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). - \return MSPLIM Register value - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_MSPLIM(void) -{ - register uint32_t result; - - __ASM volatile ("MRS %0, msplim" : "=r" (result) ); - - return(result); -} - - -#if (__ARM_FEATURE_CMSE == 3U) && (__ARM_ARCH_PROFILE == 'M') /* ToDo: ARMCC_V6: check predefined macro for mainline */ -/** - \brief Get Main Stack Pointer Limit (non-secure) - \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in secure state. - \return MSPLIM Register value - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __TZ_get_MSPLIM_NS(void) -{ - register uint32_t result; - - __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); - return(result); -} -#endif - - -/** - \brief Set Main Stack Pointer Limit - \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). - \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set - */ -__attribute__((always_inline)) __STATIC_INLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) -{ - __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); -} - - -#if (__ARM_FEATURE_CMSE == 3U) && (__ARM_ARCH_PROFILE == 'M') /* ToDo: ARMCC_V6: check predefined macro for mainline */ -/** - \brief Set Main Stack Pointer Limit (non-secure) - \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secure state. - \param [in] MainStackPtrLimit Main Stack Pointer value to set - */ -__attribute__((always_inline)) __STATIC_INLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) -{ - __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); -} -#endif - -#endif /* (__ARM_ARCH_8M__ == 1U) */ - - -#if ((__ARM_ARCH_7EM__ == 1U) || (__ARM_ARCH_8M__ == 1U)) /* ToDo: ARMCC_V6: check if this is ok for cortex >=4 */ - -/** - \brief Get FPSCR - \details eturns the current value of the Floating Point Status/Control register. - \return Floating Point Status/Control register value - */ -#define __get_FPSCR __builtin_arm_get_fpscr -#if 0 -__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_FPSCR(void) -{ -#if (__FPU_PRESENT == 1U) && (__FPU_USED == 1U) - uint32_t result; - - __ASM volatile (""); /* Empty asm statement works as a scheduling barrier */ - __ASM volatile ("VMRS %0, fpscr" : "=r" (result) ); - __ASM volatile (""); - return(result); -#else - return(0); -#endif -} -#endif - -#if (__ARM_FEATURE_CMSE == 3U) -/** - \brief Get FPSCR (non-secure) - \details Returns the current value of the non-secure Floating Point Status/Control register when in secure state. - \return Floating Point Status/Control register value - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __TZ_get_FPSCR_NS(void) -{ -#if (__FPU_PRESENT == 1U) && (__FPU_USED == 1U) - uint32_t result; - - __ASM volatile (""); /* Empty asm statement works as a scheduling barrier */ - __ASM volatile ("VMRS %0, fpscr_ns" : "=r" (result) ); - __ASM volatile (""); - return(result); -#else - return(0); -#endif -} -#endif - - -/** - \brief Set FPSCR - \details Assigns the given value to the Floating Point Status/Control register. - \param [in] fpscr Floating Point Status/Control value to set - */ -#define __set_FPSCR __builtin_arm_set_fpscr -#if 0 -__attribute__((always_inline)) __STATIC_INLINE void __set_FPSCR(uint32_t fpscr) -{ -#if (__FPU_PRESENT == 1U) && (__FPU_USED == 1U) - __ASM volatile (""); /* Empty asm statement works as a scheduling barrier */ - __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc"); - __ASM volatile (""); -#endif -} -#endif - -#if (__ARM_FEATURE_CMSE == 3U) -/** - \brief Set FPSCR (non-secure) - \details Assigns the given value to the non-secure Floating Point Status/Control register when in secure state. - \param [in] fpscr Floating Point Status/Control value to set - */ -__attribute__((always_inline)) __STATIC_INLINE void __TZ_set_FPSCR_NS(uint32_t fpscr) -{ -#if (__FPU_PRESENT == 1U) && (__FPU_USED == 1U) - __ASM volatile (""); /* Empty asm statement works as a scheduling barrier */ - __ASM volatile ("VMSR fpscr_ns, %0" : : "r" (fpscr) : "vfpcc"); - __ASM volatile (""); -#endif -} -#endif - -#endif /* ((__ARM_ARCH_7EM__ == 1U) || (__ARM_ARCH_8M__ == 1U)) */ - - - -/*@} end of CMSIS_Core_RegAccFunctions */ - - -/* ########################## Core Instruction Access ######################### */ -/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface - Access to dedicated instructions - @{ -*/ - -/* Define macros for porting to both thumb1 and thumb2. - * For thumb1, use low register (r0-r7), specified by constraint "l" - * Otherwise, use general registers, specified by constraint "r" */ -#if defined (__thumb__) && !defined (__thumb2__) -#define __CMSIS_GCC_OUT_REG(r) "=l" (r) -#define __CMSIS_GCC_USE_REG(r) "l" (r) -#else -#define __CMSIS_GCC_OUT_REG(r) "=r" (r) -#define __CMSIS_GCC_USE_REG(r) "r" (r) -#endif - -/** - \brief No Operation - \details No Operation does nothing. This instruction can be used for code alignment purposes. - */ -#define __NOP __builtin_arm_nop - -/** - \brief Wait For Interrupt - \details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. - */ -#define __WFI __builtin_arm_wfi - - -/** - \brief Wait For Event - \details Wait For Event is a hint instruction that permits the processor to enter - a low-power state until one of a number of events occurs. - */ -#define __WFE __builtin_arm_wfe - - -/** - \brief Send Event - \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. - */ -#define __SEV __builtin_arm_sev - - -/** - \brief Instruction Synchronization Barrier - \details Instruction Synchronization Barrier flushes the pipeline in the processor, - so that all instructions following the ISB are fetched from cache or memory, - after the instruction has been completed. - */ -#define __ISB() __builtin_arm_isb(0xF); - -/** - \brief Data Synchronization Barrier - \details Acts as a special kind of Data Memory Barrier. - It completes when all explicit memory accesses before this instruction complete. - */ -#define __DSB() __builtin_arm_dsb(0xF); - - -/** - \brief Data Memory Barrier - \details Ensures the apparent order of the explicit memory operations before - and after the instruction, without ensuring their completion. - */ -#define __DMB() __builtin_arm_dmb(0xF); - - -/** - \brief Reverse byte order (32 bit) - \details Reverses the byte order in integer value. - \param [in] value Value to reverse - \return Reversed value - */ -#define __REV __builtin_bswap32 - - -/** - \brief Reverse byte order (16 bit) - \details Reverses the byte order in two unsigned short values. - \param [in] value Value to reverse - \return Reversed value - */ -#define __REV16 __builtin_bswap16 /* ToDo: ARMCC_V6: check if __builtin_bswap16 could be used */ -#if 0 -__attribute__((always_inline)) __STATIC_INLINE uint32_t __REV16(uint32_t value) -{ - uint32_t result; - - __ASM volatile ("rev16 %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); - return(result); -} -#endif - - -/** - \brief Reverse byte order in signed short value - \details Reverses the byte order in a signed short value with sign extension to integer. - \param [in] value Value to reverse - \return Reversed value - */ - /* ToDo: ARMCC_V6: check if __builtin_bswap16 could be used */ -__attribute__((always_inline)) __STATIC_INLINE int32_t __REVSH(int32_t value) -{ - int32_t result; - - __ASM volatile ("revsh %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); - return(result); -} - - -/** - \brief Rotate Right in unsigned value (32 bit) - \details Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits. - \param [in] op1 Value to rotate - \param [in] op2 Number of Bits to rotate - \return Rotated value - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __ROR(uint32_t op1, uint32_t op2) -{ - return (op1 >> op2) | (op1 << (32U - op2)); -} - - -/** - \brief Breakpoint - \details Causes the processor to enter Debug state. - Debug tools can use this to investigate system state when the instruction at a particular address is reached. - \param [in] value is ignored by the processor. - If required, a debugger can use it to store additional information about the breakpoint. - */ -#define __BKPT(value) __ASM volatile ("bkpt "#value) - - -/** - \brief Reverse bit order of value - \details Reverses the bit order of the given value. - \param [in] value Value to reverse - \return Reversed value - */ - /* ToDo: ARMCC_V6: check if __builtin_arm_rbit is supported */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __RBIT(uint32_t value) -{ - uint32_t result; - -#if ((__ARM_ARCH_7M__ == 1U) || (__ARM_ARCH_7EM__ == 1U) || (__ARM_ARCH_8M__ == 1U)) /* ToDo: ARMCC_V6: check if this is ok for cortex >=3 */ - __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); -#else - int32_t s = 4 /*sizeof(v)*/ * 8 - 1; /* extra shift needed at end */ - - result = value; /* r will be reversed bits of v; first get LSB of v */ - for (value >>= 1U; value; value >>= 1U) - { - result <<= 1U; - result |= value & 1U; - s--; - } - result <<= s; /* shift when v's highest bits are zero */ -#endif - return(result); -} - - -/** - \brief Count leading zeros - \details Counts the number of leading zeros of a data value. - \param [in] value Value to count the leading zeros - \return number of leading zeros in value - */ -#define __CLZ __builtin_clz - - -#if ((__ARM_ARCH_7M__ == 1U) || (__ARM_ARCH_7EM__ == 1U) || (__ARM_ARCH_8M__ == 1U)) /* ToDo: ARMCC_V6: check if this is ok for cortex >=3 */ - -/** - \brief LDR Exclusive (8 bit) - \details Executes a exclusive LDR instruction for 8 bit value. - \param [in] ptr Pointer to data - \return value of type uint8_t at (*ptr) - */ -#define __LDREXB (uint8_t)__builtin_arm_ldrex - - -/** - \brief LDR Exclusive (16 bit) - \details Executes a exclusive LDR instruction for 16 bit values. - \param [in] ptr Pointer to data - \return value of type uint16_t at (*ptr) - */ -#define __LDREXH (uint16_t)__builtin_arm_ldrex - - -/** - \brief LDR Exclusive (32 bit) - \details Executes a exclusive LDR instruction for 32 bit values. - \param [in] ptr Pointer to data - \return value of type uint32_t at (*ptr) - */ -#define __LDREXW (uint32_t)__builtin_arm_ldrex - - -/** - \brief STR Exclusive (8 bit) - \details Executes a exclusive STR instruction for 8 bit values. - \param [in] value Value to store - \param [in] ptr Pointer to location - \return 0 Function succeeded - \return 1 Function failed - */ -#define __STREXB (uint32_t)__builtin_arm_strex - - -/** - \brief STR Exclusive (16 bit) - \details Executes a exclusive STR instruction for 16 bit values. - \param [in] value Value to store - \param [in] ptr Pointer to location - \return 0 Function succeeded - \return 1 Function failed - */ -#define __STREXH (uint32_t)__builtin_arm_strex - - -/** - \brief STR Exclusive (32 bit) - \details Executes a exclusive STR instruction for 32 bit values. - \param [in] value Value to store - \param [in] ptr Pointer to location - \return 0 Function succeeded - \return 1 Function failed - */ -#define __STREXW (uint32_t)__builtin_arm_strex - - -/** - \brief Remove the exclusive lock - \details Removes the exclusive lock which is created by LDREX. - */ -#define __CLREX __builtin_arm_clrex - - -/** - \brief Signed Saturate - \details Saturates a signed value. - \param [in] value Value to be saturated - \param [in] sat Bit position to saturate to (1..32) - \return Saturated value - */ -/*#define __SSAT __builtin_arm_ssat*/ -#define __SSAT(ARG1,ARG2) \ -({ \ - int32_t __RES, __ARG1 = (ARG1); \ - __ASM ("ssat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ - __RES; \ - }) - - -/** - \brief Unsigned Saturate - \details Saturates an unsigned value. - \param [in] value Value to be saturated - \param [in] sat Bit position to saturate to (0..31) - \return Saturated value - */ -#define __USAT __builtin_arm_usat -#if 0 -#define __USAT(ARG1,ARG2) \ -({ \ - uint32_t __RES, __ARG1 = (ARG1); \ - __ASM ("usat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ - __RES; \ - }) -#endif - - -/** - \brief Rotate Right with Extend (32 bit) - \details Moves each bit of a bitstring right by one bit. - The carry input is shifted in at the left end of the bitstring. - \param [in] value Value to rotate - \return Rotated value - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __RRX(uint32_t value) -{ - uint32_t result; - - __ASM volatile ("rrx %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); - return(result); -} - - -/** - \brief LDRT Unprivileged (8 bit) - \details Executes a Unprivileged LDRT instruction for 8 bit value. - \param [in] ptr Pointer to data - \return value of type uint8_t at (*ptr) - */ -__attribute__((always_inline)) __STATIC_INLINE uint8_t __LDRBT(volatile uint8_t *ptr) -{ - uint32_t result; - - __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) ); - return ((uint8_t) result); /* Add explicit type cast here */ -} - - -/** - \brief LDRT Unprivileged (16 bit) - \details Executes a Unprivileged LDRT instruction for 16 bit values. - \param [in] ptr Pointer to data - \return value of type uint16_t at (*ptr) - */ -__attribute__((always_inline)) __STATIC_INLINE uint16_t __LDRHT(volatile uint16_t *ptr) -{ - uint32_t result; - - __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) ); - return ((uint16_t) result); /* Add explicit type cast here */ -} - - -/** - \brief LDRT Unprivileged (32 bit) - \details Executes a Unprivileged LDRT instruction for 32 bit values. - \param [in] ptr Pointer to data - \return value of type uint32_t at (*ptr) - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __LDRT(volatile uint32_t *ptr) -{ - uint32_t result; - - __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*ptr) ); - return(result); -} - - -/** - \brief STRT Unprivileged (8 bit) - \details Executes a Unprivileged STRT instruction for 8 bit values. - \param [in] value Value to store - \param [in] ptr Pointer to location - */ -__attribute__((always_inline)) __STATIC_INLINE void __STRBT(uint8_t value, volatile uint8_t *ptr) -{ - __ASM volatile ("strbt %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); -} - - -/** - \brief STRT Unprivileged (16 bit) - \details Executes a Unprivileged STRT instruction for 16 bit values. - \param [in] value Value to store - \param [in] ptr Pointer to location - */ -__attribute__((always_inline)) __STATIC_INLINE void __STRHT(uint16_t value, volatile uint16_t *ptr) -{ - __ASM volatile ("strht %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); -} - - -/** - \brief STRT Unprivileged (32 bit) - \details Executes a Unprivileged STRT instruction for 32 bit values. - \param [in] value Value to store - \param [in] ptr Pointer to location - */ -__attribute__((always_inline)) __STATIC_INLINE void __STRT(uint32_t value, volatile uint32_t *ptr) -{ - __ASM volatile ("strt %1, %0" : "=Q" (*ptr) : "r" (value) ); -} - -#endif /* ((__ARM_ARCH_7M__ == 1U) || (__ARM_ARCH_7EM__ == 1U) || (__ARM_ARCH_8M__ == 1U)) */ - - -#if (__ARM_ARCH_8M__ == 1U) - -/** - \brief Load-Acquire (8 bit) - \details Executes a LDAB instruction for 8 bit value. - \param [in] ptr Pointer to data - \return value of type uint8_t at (*ptr) - */ -__attribute__((always_inline)) __STATIC_INLINE uint8_t __LDAB(volatile uint8_t *ptr) -{ - uint32_t result; - - __ASM volatile ("ldab %0, %1" : "=r" (result) : "Q" (*ptr) ); - return ((uint8_t) result); -} - - -/** - \brief Load-Acquire (16 bit) - \details Executes a LDAH instruction for 16 bit values. - \param [in] ptr Pointer to data - \return value of type uint16_t at (*ptr) - */ -__attribute__((always_inline)) __STATIC_INLINE uint16_t __LDAH(volatile uint16_t *ptr) -{ - uint32_t result; - - __ASM volatile ("ldah %0, %1" : "=r" (result) : "Q" (*ptr) ); - return ((uint16_t) result); -} - - -/** - \brief Load-Acquire (32 bit) - \details Executes a LDA instruction for 32 bit values. - \param [in] ptr Pointer to data - \return value of type uint32_t at (*ptr) - */ -__attribute__((always_inline)) __STATIC_INLINE uint32_t __LDA(volatile uint32_t *ptr) -{ - uint32_t result; - - __ASM volatile ("lda %0, %1" : "=r" (result) : "Q" (*ptr) ); - return(result); -} - - -/** - \brief Store-Release (8 bit) - \details Executes a STLB instruction for 8 bit values. - \param [in] value Value to store - \param [in] ptr Pointer to location - */ -__attribute__((always_inline)) __STATIC_INLINE void __STLB(uint8_t value, volatile uint8_t *ptr) -{ - __ASM volatile ("stlb %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); -} - - -/** - \brief Store-Release (16 bit) - \details Executes a STLH instruction for 16 bit values. - \param [in] value Value to store - \param [in] ptr Pointer to location - */ -__attribute__((always_inline)) __STATIC_INLINE void __STLH(uint16_t value, volatile uint16_t *ptr) -{ - __ASM volatile ("stlh %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); -} - - -/** - \brief Store-Release (32 bit) - \details Executes a STL instruction for 32 bit values. - \param [in] value Value to store - \param [in] ptr Pointer to location - */ -__attribute__((always_inline)) __STATIC_INLINE void __STL(uint32_t value, volatile uint32_t *ptr) -{ - __ASM volatile ("stl %1, %0" : "=Q" (*ptr) : "r" ((uint32_t)value) ); -} - - -/** - \brief Load-Acquire Exclusive (8 bit) - \details Executes a LDAB exclusive instruction for 8 bit value. - \param [in] ptr Pointer to data - \return value of type uint8_t at (*ptr) - */ -#define __LDAEXB (uint8_t)__builtin_arm_ldaex - - -/** - \brief Load-Acquire Exclusive (16 bit) - \details Executes a LDAH exclusive instruction for 16 bit values. - \param [in] ptr Pointer to data - \return value of type uint16_t at (*ptr) - */ -#define __LDAEXH (uint16_t)__builtin_arm_ldaex - - -/** - \brief Load-Acquire Exclusive (32 bit) - \details Executes a LDA exclusive instruction for 32 bit values. - \param [in] ptr Pointer to data - \return value of type uint32_t at (*ptr) - */ -#define __LDAEX (uint32_t)__builtin_arm_ldaex - - -/** - \brief Store-Release Exclusive (8 bit) - \details Executes a STLB exclusive instruction for 8 bit values. - \param [in] value Value to store - \param [in] ptr Pointer to location - \return 0 Function succeeded - \return 1 Function failed - */ -#define __STLEXB (uint32_t)__builtin_arm_stlex - - -/** - \brief Store-Release Exclusive (16 bit) - \details Executes a STLH exclusive instruction for 16 bit values. - \param [in] value Value to store - \param [in] ptr Pointer to location - \return 0 Function succeeded - \return 1 Function failed - */ -#define __STLEXH (uint32_t)__builtin_arm_stlex - - -/** - \brief Store-Release Exclusive (32 bit) - \details Executes a STL exclusive instruction for 32 bit values. - \param [in] value Value to store - \param [in] ptr Pointer to location - \return 0 Function succeeded - \return 1 Function failed - */ -#define __STLEX (uint32_t)__builtin_arm_stlex - -#endif /* (__ARM_ARCH_8M__ == 1U) */ - -/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ - - -/* ################### Compiler specific Intrinsics ########################### */ -/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics - Access to dedicated SIMD instructions - @{ -*/ - -#if (__ARM_FEATURE_DSP == 1U) /* ToDo: ARMCC_V6: This should be ARCH >= ARMv7-M + SIMD */ - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __SADD8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __QADD8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __UADD8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __USUB8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __SADD16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __QADD16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __UADD16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __USUB16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __SASX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __QASX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __SHASX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __UASX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __UQASX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __UHASX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __SSAX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __QSAX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __USAX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __USAD8(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3) -{ - uint32_t result; - - __ASM volatile ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); - return(result); -} - -#define __SSAT16(ARG1,ARG2) \ -({ \ - uint32_t __RES, __ARG1 = (ARG1); \ - __ASM ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ - __RES; \ - }) - -#define __USAT16(ARG1,ARG2) \ -({ \ - uint32_t __RES, __ARG1 = (ARG1); \ - __ASM ("usat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) ); \ - __RES; \ - }) - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __UXTB16(uint32_t op1) -{ - uint32_t result; - - __ASM volatile ("uxtb16 %0, %1" : "=r" (result) : "r" (op1)); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __SXTB16(uint32_t op1) -{ - uint32_t result; - - __ASM volatile ("sxtb16 %0, %1" : "=r" (result) : "r" (op1)); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __SMUAD (uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3) -{ - uint32_t result; - - __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3) -{ - uint32_t result; - - __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint64_t acc) -{ - union llreg_u{ - uint32_t w32[2]; - uint64_t w64; - } llr; - llr.w64 = acc; - -#ifndef __ARMEB__ /* Little endian */ - __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); -#else /* Big endian */ - __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); -#endif - - return(llr.w64); -} - -__attribute__((always_inline)) __STATIC_INLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uint64_t acc) -{ - union llreg_u{ - uint32_t w32[2]; - uint64_t w64; - } llr; - llr.w64 = acc; - -#ifndef __ARMEB__ /* Little endian */ - __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); -#else /* Big endian */ - __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); -#endif - - return(llr.w64); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __SMUSD (uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3) -{ - uint32_t result; - - __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3) -{ - uint32_t result; - - __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint64_t acc) -{ - union llreg_u{ - uint32_t w32[2]; - uint64_t w64; - } llr; - llr.w64 = acc; - -#ifndef __ARMEB__ /* Little endian */ - __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); -#else /* Big endian */ - __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); -#endif - - return(llr.w64); -} - -__attribute__((always_inline)) __STATIC_INLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uint64_t acc) -{ - union llreg_u{ - uint32_t w32[2]; - uint64_t w64; - } llr; - llr.w64 = acc; - -#ifndef __ARMEB__ /* Little endian */ - __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) ); -#else /* Big endian */ - __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) ); -#endif - - return(llr.w64); -} - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __SEL (uint32_t op1, uint32_t op2) -{ - uint32_t result; - - __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE int32_t __QADD( int32_t op1, int32_t op2) -{ - int32_t result; - - __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -__attribute__((always_inline)) __STATIC_INLINE int32_t __QSUB( int32_t op1, int32_t op2) -{ - int32_t result; - - __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) ); - return(result); -} - -#define __PKHBT(ARG1,ARG2,ARG3) \ -({ \ - uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ - __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ - __RES; \ - }) - -#define __PKHTB(ARG1,ARG2,ARG3) \ -({ \ - uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \ - if (ARG3 == 0) \ - __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2) ); \ - else \ - __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \ - __RES; \ - }) - -__attribute__((always_inline)) __STATIC_INLINE uint32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3) -{ - int32_t result; - - __ASM volatile ("smmla %0, %1, %2, %3" : "=r" (result): "r" (op1), "r" (op2), "r" (op3) ); - return(result); -} - -#endif /* (__ARM_FEATURE_DSP == 1U) */ -/*@} end of group CMSIS_SIMD_intrinsics */ - - -#endif /* __CMSIS_ARMCC_V6_H */ diff --git a/Drivers/CMSIS/Include/core_cmFunc.h b/Drivers/CMSIS/Include/core_cmFunc.h deleted file mode 100644 index ca319a55..00000000 --- a/Drivers/CMSIS/Include/core_cmFunc.h +++ /dev/null @@ -1,87 +0,0 @@ -/**************************************************************************//** - * @file core_cmFunc.h - * @brief CMSIS Cortex-M Core Function Access Header File - * @version V4.30 - * @date 20. October 2015 - ******************************************************************************/ -/* Copyright (c) 2009 - 2015 ARM LIMITED - - All rights reserved. - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of ARM nor the names of its contributors may be used - to endorse or promote products derived from this software without - specific prior written permission. - * - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - ---------------------------------------------------------------------------*/ - - -#if defined ( __ICCARM__ ) - #pragma system_include /* treat file as system include file for MISRA check */ -#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #pragma clang system_header /* treat file as system include file */ -#endif - -#ifndef __CORE_CMFUNC_H -#define __CORE_CMFUNC_H - - -/* ########################### Core Function Access ########################### */ -/** \ingroup CMSIS_Core_FunctionInterface - \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions - @{ -*/ - -/*------------------ RealView Compiler -----------------*/ -#if defined ( __CC_ARM ) - #include "cmsis_armcc.h" - -/*------------------ ARM Compiler V6 -------------------*/ -#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #include "cmsis_armcc_V6.h" - -/*------------------ GNU Compiler ----------------------*/ -#elif defined ( __GNUC__ ) - #include "cmsis_gcc.h" - -/*------------------ ICC Compiler ----------------------*/ -#elif defined ( __ICCARM__ ) - #include - -/*------------------ TI CCS Compiler -------------------*/ -#elif defined ( __TMS470__ ) - #include - -/*------------------ TASKING Compiler ------------------*/ -#elif defined ( __TASKING__ ) - /* - * The CMSIS functions have been implemented as intrinsics in the compiler. - * Please use "carm -?i" to get an up to date list of all intrinsics, - * Including the CMSIS ones. - */ - -/*------------------ COSMIC Compiler -------------------*/ -#elif defined ( __CSMC__ ) - #include - -#endif - -/*@} end of CMSIS_Core_RegAccFunctions */ - -#endif /* __CORE_CMFUNC_H */ diff --git a/Drivers/CMSIS/Include/core_cmInstr.h b/Drivers/CMSIS/Include/core_cmInstr.h deleted file mode 100644 index a0a50645..00000000 --- a/Drivers/CMSIS/Include/core_cmInstr.h +++ /dev/null @@ -1,87 +0,0 @@ -/**************************************************************************//** - * @file core_cmInstr.h - * @brief CMSIS Cortex-M Core Instruction Access Header File - * @version V4.30 - * @date 20. October 2015 - ******************************************************************************/ -/* Copyright (c) 2009 - 2015 ARM LIMITED - - All rights reserved. - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of ARM nor the names of its contributors may be used - to endorse or promote products derived from this software without - specific prior written permission. - * - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - ---------------------------------------------------------------------------*/ - - -#if defined ( __ICCARM__ ) - #pragma system_include /* treat file as system include file for MISRA check */ -#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #pragma clang system_header /* treat file as system include file */ -#endif - -#ifndef __CORE_CMINSTR_H -#define __CORE_CMINSTR_H - - -/* ########################## Core Instruction Access ######################### */ -/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface - Access to dedicated instructions - @{ -*/ - -/*------------------ RealView Compiler -----------------*/ -#if defined ( __CC_ARM ) - #include "cmsis_armcc.h" - -/*------------------ ARM Compiler V6 -------------------*/ -#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #include "cmsis_armcc_V6.h" - -/*------------------ GNU Compiler ----------------------*/ -#elif defined ( __GNUC__ ) - #include "cmsis_gcc.h" - -/*------------------ ICC Compiler ----------------------*/ -#elif defined ( __ICCARM__ ) - #include - -/*------------------ TI CCS Compiler -------------------*/ -#elif defined ( __TMS470__ ) - #include - -/*------------------ TASKING Compiler ------------------*/ -#elif defined ( __TASKING__ ) - /* - * The CMSIS functions have been implemented as intrinsics in the compiler. - * Please use "carm -?i" to get an up to date list of all intrinsics, - * Including the CMSIS ones. - */ - -/*------------------ COSMIC Compiler -------------------*/ -#elif defined ( __CSMC__ ) - #include - -#endif - -/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ - -#endif /* __CORE_CMINSTR_H */ diff --git a/Drivers/CMSIS/Include/core_cmSimd.h b/Drivers/CMSIS/Include/core_cmSimd.h deleted file mode 100644 index 4d76bf90..00000000 --- a/Drivers/CMSIS/Include/core_cmSimd.h +++ /dev/null @@ -1,96 +0,0 @@ -/**************************************************************************//** - * @file core_cmSimd.h - * @brief CMSIS Cortex-M SIMD Header File - * @version V4.30 - * @date 20. October 2015 - ******************************************************************************/ -/* Copyright (c) 2009 - 2015 ARM LIMITED - - All rights reserved. - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - Neither the name of ARM nor the names of its contributors may be used - to endorse or promote products derived from this software without - specific prior written permission. - * - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - ---------------------------------------------------------------------------*/ - - -#if defined ( __ICCARM__ ) - #pragma system_include /* treat file as system include file for MISRA check */ -#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #pragma clang system_header /* treat file as system include file */ -#endif - -#ifndef __CORE_CMSIMD_H -#define __CORE_CMSIMD_H - -#ifdef __cplusplus - extern "C" { -#endif - - -/* ################### Compiler specific Intrinsics ########################### */ -/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics - Access to dedicated SIMD instructions - @{ -*/ - -/*------------------ RealView Compiler -----------------*/ -#if defined ( __CC_ARM ) - #include "cmsis_armcc.h" - -/*------------------ ARM Compiler V6 -------------------*/ -#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #include "cmsis_armcc_V6.h" - -/*------------------ GNU Compiler ----------------------*/ -#elif defined ( __GNUC__ ) - #include "cmsis_gcc.h" - -/*------------------ ICC Compiler ----------------------*/ -#elif defined ( __ICCARM__ ) - #include - -/*------------------ TI CCS Compiler -------------------*/ -#elif defined ( __TMS470__ ) - #include - -/*------------------ TASKING Compiler ------------------*/ -#elif defined ( __TASKING__ ) - /* - * The CMSIS functions have been implemented as intrinsics in the compiler. - * Please use "carm -?i" to get an up to date list of all intrinsics, - * Including the CMSIS ones. - */ - -/*------------------ COSMIC Compiler -------------------*/ -#elif defined ( __CSMC__ ) - #include - -#endif - -/*@} end of group CMSIS_SIMD_intrinsics */ - - -#ifdef __cplusplus -} -#endif - -#endif /* __CORE_CMSIMD_H */ diff --git a/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_tim.h b/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_tim.h deleted file mode 100644 index 952d232c..00000000 --- a/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_tim.h +++ /dev/null @@ -1,3832 +0,0 @@ -/** - ****************************************************************************** - * @file stm32f1xx_ll_tim.h - * @author MCD Application Team - * @brief Header file of TIM LL module. - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2016 STMicroelectronics. - * All rights reserved.

- * - * This software component is licensed by ST under BSD 3-Clause license, - * the "License"; You may not use this file except in compliance with the - * License. You may obtain a copy of the License at: - * opensource.org/licenses/BSD-3-Clause - * - ****************************************************************************** - */ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __STM32F1xx_LL_TIM_H -#define __STM32F1xx_LL_TIM_H - -#ifdef __cplusplus -extern "C" { -#endif - -/* Includes ------------------------------------------------------------------*/ -#include "stm32f1xx.h" - -/** @addtogroup STM32F1xx_LL_Driver - * @{ - */ - -#if defined (TIM1) || defined (TIM2) || defined (TIM3) || defined (TIM4) || defined (TIM5) || defined (TIM6) || defined (TIM7) || defined (TIM8) || defined (TIM9) || defined (TIM10) || defined (TIM11) || defined (TIM12) || defined (TIM13) || defined (TIM14) || defined (TIM15) || defined (TIM16) || defined (TIM17) - -/** @defgroup TIM_LL TIM - * @{ - */ - -/* Private types -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -/** @defgroup TIM_LL_Private_Variables TIM Private Variables - * @{ - */ -static const uint8_t OFFSET_TAB_CCMRx[] = -{ - 0x00U, /* 0: TIMx_CH1 */ - 0x00U, /* 1: TIMx_CH1N */ - 0x00U, /* 2: TIMx_CH2 */ - 0x00U, /* 3: TIMx_CH2N */ - 0x04U, /* 4: TIMx_CH3 */ - 0x04U, /* 5: TIMx_CH3N */ - 0x04U /* 6: TIMx_CH4 */ -}; - -static const uint8_t SHIFT_TAB_OCxx[] = -{ - 0U, /* 0: OC1M, OC1FE, OC1PE */ - 0U, /* 1: - NA */ - 8U, /* 2: OC2M, OC2FE, OC2PE */ - 0U, /* 3: - NA */ - 0U, /* 4: OC3M, OC3FE, OC3PE */ - 0U, /* 5: - NA */ - 8U /* 6: OC4M, OC4FE, OC4PE */ -}; - -static const uint8_t SHIFT_TAB_ICxx[] = -{ - 0U, /* 0: CC1S, IC1PSC, IC1F */ - 0U, /* 1: - NA */ - 8U, /* 2: CC2S, IC2PSC, IC2F */ - 0U, /* 3: - NA */ - 0U, /* 4: CC3S, IC3PSC, IC3F */ - 0U, /* 5: - NA */ - 8U /* 6: CC4S, IC4PSC, IC4F */ -}; - -static const uint8_t SHIFT_TAB_CCxP[] = -{ - 0U, /* 0: CC1P */ - 2U, /* 1: CC1NP */ - 4U, /* 2: CC2P */ - 6U, /* 3: CC2NP */ - 8U, /* 4: CC3P */ - 10U, /* 5: CC3NP */ - 12U /* 6: CC4P */ -}; - -static const uint8_t SHIFT_TAB_OISx[] = -{ - 0U, /* 0: OIS1 */ - 1U, /* 1: OIS1N */ - 2U, /* 2: OIS2 */ - 3U, /* 3: OIS2N */ - 4U, /* 4: OIS3 */ - 5U, /* 5: OIS3N */ - 6U /* 6: OIS4 */ -}; -/** - * @} - */ - -/* Private constants ---------------------------------------------------------*/ -/** @defgroup TIM_LL_Private_Constants TIM Private Constants - * @{ - */ - - - -/* Mask used to set the TDG[x:0] of the DTG bits of the TIMx_BDTR register */ -#define DT_DELAY_1 ((uint8_t)0x7F) -#define DT_DELAY_2 ((uint8_t)0x3F) -#define DT_DELAY_3 ((uint8_t)0x1F) -#define DT_DELAY_4 ((uint8_t)0x1F) - -/* Mask used to set the DTG[7:5] bits of the DTG bits of the TIMx_BDTR register */ -#define DT_RANGE_1 ((uint8_t)0x00) -#define DT_RANGE_2 ((uint8_t)0x80) -#define DT_RANGE_3 ((uint8_t)0xC0) -#define DT_RANGE_4 ((uint8_t)0xE0) - - -/** - * @} - */ - -/* Private macros ------------------------------------------------------------*/ -/** @defgroup TIM_LL_Private_Macros TIM Private Macros - * @{ - */ -/** @brief Convert channel id into channel index. - * @param __CHANNEL__ This parameter can be one of the following values: - * @arg @ref LL_TIM_CHANNEL_CH1 - * @arg @ref LL_TIM_CHANNEL_CH1N - * @arg @ref LL_TIM_CHANNEL_CH2 - * @arg @ref LL_TIM_CHANNEL_CH2N - * @arg @ref LL_TIM_CHANNEL_CH3 - * @arg @ref LL_TIM_CHANNEL_CH3N - * @arg @ref LL_TIM_CHANNEL_CH4 - * @retval none - */ -#define TIM_GET_CHANNEL_INDEX( __CHANNEL__) \ - (((__CHANNEL__) == LL_TIM_CHANNEL_CH1) ? 0U :\ - ((__CHANNEL__) == LL_TIM_CHANNEL_CH1N) ? 1U :\ - ((__CHANNEL__) == LL_TIM_CHANNEL_CH2) ? 2U :\ - ((__CHANNEL__) == LL_TIM_CHANNEL_CH2N) ? 3U :\ - ((__CHANNEL__) == LL_TIM_CHANNEL_CH3) ? 4U :\ - ((__CHANNEL__) == LL_TIM_CHANNEL_CH3N) ? 5U : 6U) - -/** @brief Calculate the deadtime sampling period(in ps). - * @param __TIMCLK__ timer input clock frequency (in Hz). - * @param __CKD__ This parameter can be one of the following values: - * @arg @ref LL_TIM_CLOCKDIVISION_DIV1 - * @arg @ref LL_TIM_CLOCKDIVISION_DIV2 - * @arg @ref LL_TIM_CLOCKDIVISION_DIV4 - * @retval none - */ -#define TIM_CALC_DTS(__TIMCLK__, __CKD__) \ - (((__CKD__) == LL_TIM_CLOCKDIVISION_DIV1) ? ((uint64_t)1000000000000U/(__TIMCLK__)) : \ - ((__CKD__) == LL_TIM_CLOCKDIVISION_DIV2) ? ((uint64_t)1000000000000U/((__TIMCLK__) >> 1U)) : \ - ((uint64_t)1000000000000U/((__TIMCLK__) >> 2U))) -/** - * @} - */ - - -/* Exported types ------------------------------------------------------------*/ -#if defined(USE_FULL_LL_DRIVER) -/** @defgroup TIM_LL_ES_INIT TIM Exported Init structure - * @{ - */ - -/** - * @brief TIM Time Base configuration structure definition. - */ -typedef struct -{ - uint16_t Prescaler; /*!< Specifies the prescaler value used to divide the TIM clock. - This parameter can be a number between Min_Data=0x0000 and Max_Data=0xFFFF. - - This feature can be modified afterwards using unitary function @ref LL_TIM_SetPrescaler().*/ - - uint32_t CounterMode; /*!< Specifies the counter mode. - This parameter can be a value of @ref TIM_LL_EC_COUNTERMODE. - - This feature can be modified afterwards using unitary function @ref LL_TIM_SetCounterMode().*/ - - uint32_t Autoreload; /*!< Specifies the auto reload value to be loaded into the active - Auto-Reload Register at the next update event. - This parameter must be a number between Min_Data=0x0000 and Max_Data=0xFFFF. - Some timer instances may support 32 bits counters. In that case this parameter must be a number between 0x0000 and 0xFFFFFFFF. - - This feature can be modified afterwards using unitary function @ref LL_TIM_SetAutoReload().*/ - - uint32_t ClockDivision; /*!< Specifies the clock division. - This parameter can be a value of @ref TIM_LL_EC_CLOCKDIVISION. - - This feature can be modified afterwards using unitary function @ref LL_TIM_SetClockDivision().*/ - - uint32_t RepetitionCounter; /*!< Specifies the repetition counter value. Each time the RCR downcounter - reaches zero, an update event is generated and counting restarts - from the RCR value (N). - This means in PWM mode that (N+1) corresponds to: - - the number of PWM periods in edge-aligned mode - - the number of half PWM period in center-aligned mode - GP timers: this parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFF. - Advanced timers: this parameter must be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF. - - This feature can be modified afterwards using unitary function @ref LL_TIM_SetRepetitionCounter().*/ -} LL_TIM_InitTypeDef; - -/** - * @brief TIM Output Compare configuration structure definition. - */ -typedef struct -{ - uint32_t OCMode; /*!< Specifies the output mode. - This parameter can be a value of @ref TIM_LL_EC_OCMODE. - - This feature can be modified afterwards using unitary function @ref LL_TIM_OC_SetMode().*/ - - uint32_t OCState; /*!< Specifies the TIM Output Compare state. - This parameter can be a value of @ref TIM_LL_EC_OCSTATE. - - This feature can be modified afterwards using unitary functions @ref LL_TIM_CC_EnableChannel() or @ref LL_TIM_CC_DisableChannel().*/ - - uint32_t OCNState; /*!< Specifies the TIM complementary Output Compare state. - This parameter can be a value of @ref TIM_LL_EC_OCSTATE. - - This feature can be modified afterwards using unitary functions @ref LL_TIM_CC_EnableChannel() or @ref LL_TIM_CC_DisableChannel().*/ - - uint32_t CompareValue; /*!< Specifies the Compare value to be loaded into the Capture Compare Register. - This parameter can be a number between Min_Data=0x0000 and Max_Data=0xFFFF. - - This feature can be modified afterwards using unitary function LL_TIM_OC_SetCompareCHx (x=1..6).*/ - - uint32_t OCPolarity; /*!< Specifies the output polarity. - This parameter can be a value of @ref TIM_LL_EC_OCPOLARITY. - - This feature can be modified afterwards using unitary function @ref LL_TIM_OC_SetPolarity().*/ - - uint32_t OCNPolarity; /*!< Specifies the complementary output polarity. - This parameter can be a value of @ref TIM_LL_EC_OCPOLARITY. - - This feature can be modified afterwards using unitary function @ref LL_TIM_OC_SetPolarity().*/ - - - uint32_t OCIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state. - This parameter can be a value of @ref TIM_LL_EC_OCIDLESTATE. - - This feature can be modified afterwards using unitary function @ref LL_TIM_OC_SetIdleState().*/ - - uint32_t OCNIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state. - This parameter can be a value of @ref TIM_LL_EC_OCIDLESTATE. - - This feature can be modified afterwards using unitary function @ref LL_TIM_OC_SetIdleState().*/ -} LL_TIM_OC_InitTypeDef; - -/** - * @brief TIM Input Capture configuration structure definition. - */ - -typedef struct -{ - - uint32_t ICPolarity; /*!< Specifies the active edge of the input signal. - This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY. - - This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPolarity().*/ - - uint32_t ICActiveInput; /*!< Specifies the input. - This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT. - - This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetActiveInput().*/ - - uint32_t ICPrescaler; /*!< Specifies the Input Capture Prescaler. - This parameter can be a value of @ref TIM_LL_EC_ICPSC. - - This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPrescaler().*/ - - uint32_t ICFilter; /*!< Specifies the input capture filter. - This parameter can be a value of @ref TIM_LL_EC_IC_FILTER. - - This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetFilter().*/ -} LL_TIM_IC_InitTypeDef; - - -/** - * @brief TIM Encoder interface configuration structure definition. - */ -typedef struct -{ - uint32_t EncoderMode; /*!< Specifies the encoder resolution (x2 or x4). - This parameter can be a value of @ref TIM_LL_EC_ENCODERMODE. - - This feature can be modified afterwards using unitary function @ref LL_TIM_SetEncoderMode().*/ - - uint32_t IC1Polarity; /*!< Specifies the active edge of TI1 input. - This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY. - - This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPolarity().*/ - - uint32_t IC1ActiveInput; /*!< Specifies the TI1 input source - This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT. - - This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetActiveInput().*/ - - uint32_t IC1Prescaler; /*!< Specifies the TI1 input prescaler value. - This parameter can be a value of @ref TIM_LL_EC_ICPSC. - - This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPrescaler().*/ - - uint32_t IC1Filter; /*!< Specifies the TI1 input filter. - This parameter can be a value of @ref TIM_LL_EC_IC_FILTER. - - This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetFilter().*/ - - uint32_t IC2Polarity; /*!< Specifies the active edge of TI2 input. - This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY. - - This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPolarity().*/ - - uint32_t IC2ActiveInput; /*!< Specifies the TI2 input source - This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT. - - This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetActiveInput().*/ - - uint32_t IC2Prescaler; /*!< Specifies the TI2 input prescaler value. - This parameter can be a value of @ref TIM_LL_EC_ICPSC. - - This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPrescaler().*/ - - uint32_t IC2Filter; /*!< Specifies the TI2 input filter. - This parameter can be a value of @ref TIM_LL_EC_IC_FILTER. - - This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetFilter().*/ - -} LL_TIM_ENCODER_InitTypeDef; - -/** - * @brief TIM Hall sensor interface configuration structure definition. - */ -typedef struct -{ - - uint32_t IC1Polarity; /*!< Specifies the active edge of TI1 input. - This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY. - - This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPolarity().*/ - - uint32_t IC1Prescaler; /*!< Specifies the TI1 input prescaler value. - Prescaler must be set to get a maximum counter period longer than the - time interval between 2 consecutive changes on the Hall inputs. - This parameter can be a value of @ref TIM_LL_EC_ICPSC. - - This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPrescaler().*/ - - uint32_t IC1Filter; /*!< Specifies the TI1 input filter. - This parameter can be a value of @ref TIM_LL_EC_IC_FILTER. - - This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetFilter().*/ - - uint32_t CommutationDelay; /*!< Specifies the compare value to be loaded into the Capture Compare Register. - A positive pulse (TRGO event) is generated with a programmable delay every time - a change occurs on the Hall inputs. - This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF. - - This feature can be modified afterwards using unitary function @ref LL_TIM_OC_SetCompareCH2().*/ -} LL_TIM_HALLSENSOR_InitTypeDef; - -/** - * @brief BDTR (Break and Dead Time) structure definition - */ -typedef struct -{ - uint32_t OSSRState; /*!< Specifies the Off-State selection used in Run mode. - This parameter can be a value of @ref TIM_LL_EC_OSSR - - This feature can be modified afterwards using unitary function @ref LL_TIM_SetOffStates() - - @note This bit-field cannot be modified as long as LOCK level 2 has been programmed. */ - - uint32_t OSSIState; /*!< Specifies the Off-State used in Idle state. - This parameter can be a value of @ref TIM_LL_EC_OSSI - - This feature can be modified afterwards using unitary function @ref LL_TIM_SetOffStates() - - @note This bit-field cannot be modified as long as LOCK level 2 has been programmed. */ - - uint32_t LockLevel; /*!< Specifies the LOCK level parameters. - This parameter can be a value of @ref TIM_LL_EC_LOCKLEVEL - - @note The LOCK bits can be written only once after the reset. Once the TIMx_BDTR register - has been written, their content is frozen until the next reset.*/ - - uint8_t DeadTime; /*!< Specifies the delay time between the switching-off and the - switching-on of the outputs. - This parameter can be a number between Min_Data = 0x00 and Max_Data = 0xFF. - - This feature can be modified afterwards using unitary function @ref LL_TIM_OC_SetDeadTime() - - @note This bit-field can not be modified as long as LOCK level 1, 2 or 3 has been programmed. */ - - uint16_t BreakState; /*!< Specifies whether the TIM Break input is enabled or not. - This parameter can be a value of @ref TIM_LL_EC_BREAK_ENABLE - - This feature can be modified afterwards using unitary functions @ref LL_TIM_EnableBRK() or @ref LL_TIM_DisableBRK() - - @note This bit-field can not be modified as long as LOCK level 1 has been programmed. */ - - uint32_t BreakPolarity; /*!< Specifies the TIM Break Input pin polarity. - This parameter can be a value of @ref TIM_LL_EC_BREAK_POLARITY - - This feature can be modified afterwards using unitary function @ref LL_TIM_ConfigBRK() - - @note This bit-field can not be modified as long as LOCK level 1 has been programmed. */ - - uint32_t AutomaticOutput; /*!< Specifies whether the TIM Automatic Output feature is enabled or not. - This parameter can be a value of @ref TIM_LL_EC_AUTOMATICOUTPUT_ENABLE - - This feature can be modified afterwards using unitary functions @ref LL_TIM_EnableAutomaticOutput() or @ref LL_TIM_DisableAutomaticOutput() - - @note This bit-field can not be modified as long as LOCK level 1 has been programmed. */ -} LL_TIM_BDTR_InitTypeDef; - -/** - * @} - */ -#endif /* USE_FULL_LL_DRIVER */ - -/* Exported constants --------------------------------------------------------*/ -/** @defgroup TIM_LL_Exported_Constants TIM Exported Constants - * @{ - */ - -/** @defgroup TIM_LL_EC_GET_FLAG Get Flags Defines - * @brief Flags defines which can be used with LL_TIM_ReadReg function. - * @{ - */ -#define LL_TIM_SR_UIF TIM_SR_UIF /*!< Update interrupt flag */ -#define LL_TIM_SR_CC1IF TIM_SR_CC1IF /*!< Capture/compare 1 interrupt flag */ -#define LL_TIM_SR_CC2IF TIM_SR_CC2IF /*!< Capture/compare 2 interrupt flag */ -#define LL_TIM_SR_CC3IF TIM_SR_CC3IF /*!< Capture/compare 3 interrupt flag */ -#define LL_TIM_SR_CC4IF TIM_SR_CC4IF /*!< Capture/compare 4 interrupt flag */ -#define LL_TIM_SR_COMIF TIM_SR_COMIF /*!< COM interrupt flag */ -#define LL_TIM_SR_TIF TIM_SR_TIF /*!< Trigger interrupt flag */ -#define LL_TIM_SR_BIF TIM_SR_BIF /*!< Break interrupt flag */ -#define LL_TIM_SR_CC1OF TIM_SR_CC1OF /*!< Capture/Compare 1 overcapture flag */ -#define LL_TIM_SR_CC2OF TIM_SR_CC2OF /*!< Capture/Compare 2 overcapture flag */ -#define LL_TIM_SR_CC3OF TIM_SR_CC3OF /*!< Capture/Compare 3 overcapture flag */ -#define LL_TIM_SR_CC4OF TIM_SR_CC4OF /*!< Capture/Compare 4 overcapture flag */ -/** - * @} - */ - -#if defined(USE_FULL_LL_DRIVER) -/** @defgroup TIM_LL_EC_BREAK_ENABLE Break Enable - * @{ - */ -#define LL_TIM_BREAK_DISABLE 0x00000000U /*!< Break function disabled */ -#define LL_TIM_BREAK_ENABLE TIM_BDTR_BKE /*!< Break function enabled */ -/** - * @} - */ - -/** @defgroup TIM_LL_EC_AUTOMATICOUTPUT_ENABLE Automatic output enable - * @{ - */ -#define LL_TIM_AUTOMATICOUTPUT_DISABLE 0x00000000U /*!< MOE can be set only by software */ -#define LL_TIM_AUTOMATICOUTPUT_ENABLE TIM_BDTR_AOE /*!< MOE can be set by software or automatically at the next update event */ -/** - * @} - */ -#endif /* USE_FULL_LL_DRIVER */ - -/** @defgroup TIM_LL_EC_IT IT Defines - * @brief IT defines which can be used with LL_TIM_ReadReg and LL_TIM_WriteReg functions. - * @{ - */ -#define LL_TIM_DIER_UIE TIM_DIER_UIE /*!< Update interrupt enable */ -#define LL_TIM_DIER_CC1IE TIM_DIER_CC1IE /*!< Capture/compare 1 interrupt enable */ -#define LL_TIM_DIER_CC2IE TIM_DIER_CC2IE /*!< Capture/compare 2 interrupt enable */ -#define LL_TIM_DIER_CC3IE TIM_DIER_CC3IE /*!< Capture/compare 3 interrupt enable */ -#define LL_TIM_DIER_CC4IE TIM_DIER_CC4IE /*!< Capture/compare 4 interrupt enable */ -#define LL_TIM_DIER_COMIE TIM_DIER_COMIE /*!< COM interrupt enable */ -#define LL_TIM_DIER_TIE TIM_DIER_TIE /*!< Trigger interrupt enable */ -#define LL_TIM_DIER_BIE TIM_DIER_BIE /*!< Break interrupt enable */ -/** - * @} - */ - -/** @defgroup TIM_LL_EC_UPDATESOURCE Update Source - * @{ - */ -#define LL_TIM_UPDATESOURCE_REGULAR 0x00000000U /*!< Counter overflow/underflow, Setting the UG bit or Update generation through the slave mode controller generates an update request */ -#define LL_TIM_UPDATESOURCE_COUNTER TIM_CR1_URS /*!< Only counter overflow/underflow generates an update request */ -/** - * @} - */ - -/** @defgroup TIM_LL_EC_ONEPULSEMODE One Pulse Mode - * @{ - */ -#define LL_TIM_ONEPULSEMODE_SINGLE TIM_CR1_OPM /*!< Counter is not stopped at update event */ -#define LL_TIM_ONEPULSEMODE_REPETITIVE 0x00000000U /*!< Counter stops counting at the next update event */ -/** - * @} - */ - -/** @defgroup TIM_LL_EC_COUNTERMODE Counter Mode - * @{ - */ -#define LL_TIM_COUNTERMODE_UP 0x00000000U /*!TIMx_CCRy else active.*/ -#define LL_TIM_OCMODE_PWM2 (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0) /*!TIMx_CCRy else inactive*/ -/** - * @} - */ - -/** @defgroup TIM_LL_EC_OCPOLARITY Output Configuration Polarity - * @{ - */ -#define LL_TIM_OCPOLARITY_HIGH 0x00000000U /*!< OCxactive high*/ -#define LL_TIM_OCPOLARITY_LOW TIM_CCER_CC1P /*!< OCxactive low*/ -/** - * @} - */ - -/** @defgroup TIM_LL_EC_OCIDLESTATE Output Configuration Idle State - * @{ - */ -#define LL_TIM_OCIDLESTATE_LOW 0x00000000U /*!__REG__, (__VALUE__)) - -/** - * @brief Read a value in TIM register. - * @param __INSTANCE__ TIM Instance - * @param __REG__ Register to be read - * @retval Register value - */ -#define LL_TIM_ReadReg(__INSTANCE__, __REG__) READ_REG((__INSTANCE__)->__REG__) -/** - * @} - */ - -/** @defgroup TIM_LL_EM_Exported_Macros Exported_Macros - * @{ - */ - -/** - * @brief HELPER macro calculating DTG[0:7] in the TIMx_BDTR register to achieve the requested dead time duration. - * @note ex: @ref __LL_TIM_CALC_DEADTIME (80000000, @ref LL_TIM_GetClockDivision (), 120); - * @param __TIMCLK__ timer input clock frequency (in Hz) - * @param __CKD__ This parameter can be one of the following values: - * @arg @ref LL_TIM_CLOCKDIVISION_DIV1 - * @arg @ref LL_TIM_CLOCKDIVISION_DIV2 - * @arg @ref LL_TIM_CLOCKDIVISION_DIV4 - * @param __DT__ deadtime duration (in ns) - * @retval DTG[0:7] - */ -#define __LL_TIM_CALC_DEADTIME(__TIMCLK__, __CKD__, __DT__) \ - ( (((uint64_t)((__DT__)*1000U)) < ((DT_DELAY_1+1U) * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))) ? (uint8_t)(((uint64_t)((__DT__)*1000U) / TIM_CALC_DTS((__TIMCLK__), (__CKD__))) & DT_DELAY_1) : \ - (((uint64_t)((__DT__)*1000U)) < ((64U + (DT_DELAY_2+1U)) * 2U * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))) ? (uint8_t)(DT_RANGE_2 | ((uint8_t)((uint8_t)((((uint64_t)((__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__), (__CKD__))) >> 1U) - (uint8_t) 64) & DT_DELAY_2)) :\ - (((uint64_t)((__DT__)*1000U)) < ((32U + (DT_DELAY_3+1U)) * 8U * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))) ? (uint8_t)(DT_RANGE_3 | ((uint8_t)((uint8_t)(((((uint64_t)(__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__), (__CKD__))) >> 3U) - (uint8_t) 32) & DT_DELAY_3)) :\ - (((uint64_t)((__DT__)*1000U)) < ((32U + (DT_DELAY_4+1U)) * 16U * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))) ? (uint8_t)(DT_RANGE_4 | ((uint8_t)((uint8_t)(((((uint64_t)(__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__), (__CKD__))) >> 4U) - (uint8_t) 32) & DT_DELAY_4)) :\ - 0U) - -/** - * @brief HELPER macro calculating the prescaler value to achieve the required counter clock frequency. - * @note ex: @ref __LL_TIM_CALC_PSC (80000000, 1000000); - * @param __TIMCLK__ timer input clock frequency (in Hz) - * @param __CNTCLK__ counter clock frequency (in Hz) - * @retval Prescaler value (between Min_Data=0 and Max_Data=65535) - */ -#define __LL_TIM_CALC_PSC(__TIMCLK__, __CNTCLK__) \ - (((__TIMCLK__) >= (__CNTCLK__)) ? (uint32_t)(((__TIMCLK__)/(__CNTCLK__)) - 1U) : 0U) - -/** - * @brief HELPER macro calculating the auto-reload value to achieve the required output signal frequency. - * @note ex: @ref __LL_TIM_CALC_ARR (1000000, @ref LL_TIM_GetPrescaler (), 10000); - * @param __TIMCLK__ timer input clock frequency (in Hz) - * @param __PSC__ prescaler - * @param __FREQ__ output signal frequency (in Hz) - * @retval Auto-reload value (between Min_Data=0 and Max_Data=65535) - */ -#define __LL_TIM_CALC_ARR(__TIMCLK__, __PSC__, __FREQ__) \ - ((((__TIMCLK__)/((__PSC__) + 1U)) >= (__FREQ__)) ? (((__TIMCLK__)/((__FREQ__) * ((__PSC__) + 1U))) - 1U) : 0U) - -/** - * @brief HELPER macro calculating the compare value required to achieve the required timer output compare active/inactive delay. - * @note ex: @ref __LL_TIM_CALC_DELAY (1000000, @ref LL_TIM_GetPrescaler (), 10); - * @param __TIMCLK__ timer input clock frequency (in Hz) - * @param __PSC__ prescaler - * @param __DELAY__ timer output compare active/inactive delay (in us) - * @retval Compare value (between Min_Data=0 and Max_Data=65535) - */ -#define __LL_TIM_CALC_DELAY(__TIMCLK__, __PSC__, __DELAY__) \ - ((uint32_t)(((uint64_t)(__TIMCLK__) * (uint64_t)(__DELAY__)) \ - / ((uint64_t)1000000U * (uint64_t)((__PSC__) + 1U)))) - -/** - * @brief HELPER macro calculating the auto-reload value to achieve the required pulse duration (when the timer operates in one pulse mode). - * @note ex: @ref __LL_TIM_CALC_PULSE (1000000, @ref LL_TIM_GetPrescaler (), 10, 20); - * @param __TIMCLK__ timer input clock frequency (in Hz) - * @param __PSC__ prescaler - * @param __DELAY__ timer output compare active/inactive delay (in us) - * @param __PULSE__ pulse duration (in us) - * @retval Auto-reload value (between Min_Data=0 and Max_Data=65535) - */ -#define __LL_TIM_CALC_PULSE(__TIMCLK__, __PSC__, __DELAY__, __PULSE__) \ - ((uint32_t)(__LL_TIM_CALC_DELAY((__TIMCLK__), (__PSC__), (__PULSE__)) \ - + __LL_TIM_CALC_DELAY((__TIMCLK__), (__PSC__), (__DELAY__)))) - -/** - * @brief HELPER macro retrieving the ratio of the input capture prescaler - * @note ex: @ref __LL_TIM_GET_ICPSC_RATIO (@ref LL_TIM_IC_GetPrescaler ()); - * @param __ICPSC__ This parameter can be one of the following values: - * @arg @ref LL_TIM_ICPSC_DIV1 - * @arg @ref LL_TIM_ICPSC_DIV2 - * @arg @ref LL_TIM_ICPSC_DIV4 - * @arg @ref LL_TIM_ICPSC_DIV8 - * @retval Input capture prescaler ratio (1, 2, 4 or 8) - */ -#define __LL_TIM_GET_ICPSC_RATIO(__ICPSC__) \ - ((uint32_t)(0x01U << (((__ICPSC__) >> 16U) >> TIM_CCMR1_IC1PSC_Pos))) - - -/** - * @} - */ - - -/** - * @} - */ - -/* Exported functions --------------------------------------------------------*/ -/** @defgroup TIM_LL_Exported_Functions TIM Exported Functions - * @{ - */ - -/** @defgroup TIM_LL_EF_Time_Base Time Base configuration - * @{ - */ -/** - * @brief Enable timer counter. - * @rmtoll CR1 CEN LL_TIM_EnableCounter - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_EnableCounter(TIM_TypeDef *TIMx) -{ - SET_BIT(TIMx->CR1, TIM_CR1_CEN); -} - -/** - * @brief Disable timer counter. - * @rmtoll CR1 CEN LL_TIM_DisableCounter - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_DisableCounter(TIM_TypeDef *TIMx) -{ - CLEAR_BIT(TIMx->CR1, TIM_CR1_CEN); -} - -/** - * @brief Indicates whether the timer counter is enabled. - * @rmtoll CR1 CEN LL_TIM_IsEnabledCounter - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsEnabledCounter(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->CR1, TIM_CR1_CEN) == (TIM_CR1_CEN)) ? 1UL : 0UL); -} - -/** - * @brief Enable update event generation. - * @rmtoll CR1 UDIS LL_TIM_EnableUpdateEvent - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_EnableUpdateEvent(TIM_TypeDef *TIMx) -{ - CLEAR_BIT(TIMx->CR1, TIM_CR1_UDIS); -} - -/** - * @brief Disable update event generation. - * @rmtoll CR1 UDIS LL_TIM_DisableUpdateEvent - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_DisableUpdateEvent(TIM_TypeDef *TIMx) -{ - SET_BIT(TIMx->CR1, TIM_CR1_UDIS); -} - -/** - * @brief Indicates whether update event generation is enabled. - * @rmtoll CR1 UDIS LL_TIM_IsEnabledUpdateEvent - * @param TIMx Timer instance - * @retval Inverted state of bit (0 or 1). - */ -__STATIC_INLINE uint32_t LL_TIM_IsEnabledUpdateEvent(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->CR1, TIM_CR1_UDIS) == (uint32_t)RESET) ? 1UL : 0UL); -} - -/** - * @brief Set update event source - * @note Update event source set to LL_TIM_UPDATESOURCE_REGULAR: any of the following events - * generate an update interrupt or DMA request if enabled: - * - Counter overflow/underflow - * - Setting the UG bit - * - Update generation through the slave mode controller - * @note Update event source set to LL_TIM_UPDATESOURCE_COUNTER: only counter - * overflow/underflow generates an update interrupt or DMA request if enabled. - * @rmtoll CR1 URS LL_TIM_SetUpdateSource - * @param TIMx Timer instance - * @param UpdateSource This parameter can be one of the following values: - * @arg @ref LL_TIM_UPDATESOURCE_REGULAR - * @arg @ref LL_TIM_UPDATESOURCE_COUNTER - * @retval None - */ -__STATIC_INLINE void LL_TIM_SetUpdateSource(TIM_TypeDef *TIMx, uint32_t UpdateSource) -{ - MODIFY_REG(TIMx->CR1, TIM_CR1_URS, UpdateSource); -} - -/** - * @brief Get actual event update source - * @rmtoll CR1 URS LL_TIM_GetUpdateSource - * @param TIMx Timer instance - * @retval Returned value can be one of the following values: - * @arg @ref LL_TIM_UPDATESOURCE_REGULAR - * @arg @ref LL_TIM_UPDATESOURCE_COUNTER - */ -__STATIC_INLINE uint32_t LL_TIM_GetUpdateSource(TIM_TypeDef *TIMx) -{ - return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_URS)); -} - -/** - * @brief Set one pulse mode (one shot v.s. repetitive). - * @rmtoll CR1 OPM LL_TIM_SetOnePulseMode - * @param TIMx Timer instance - * @param OnePulseMode This parameter can be one of the following values: - * @arg @ref LL_TIM_ONEPULSEMODE_SINGLE - * @arg @ref LL_TIM_ONEPULSEMODE_REPETITIVE - * @retval None - */ -__STATIC_INLINE void LL_TIM_SetOnePulseMode(TIM_TypeDef *TIMx, uint32_t OnePulseMode) -{ - MODIFY_REG(TIMx->CR1, TIM_CR1_OPM, OnePulseMode); -} - -/** - * @brief Get actual one pulse mode. - * @rmtoll CR1 OPM LL_TIM_GetOnePulseMode - * @param TIMx Timer instance - * @retval Returned value can be one of the following values: - * @arg @ref LL_TIM_ONEPULSEMODE_SINGLE - * @arg @ref LL_TIM_ONEPULSEMODE_REPETITIVE - */ -__STATIC_INLINE uint32_t LL_TIM_GetOnePulseMode(TIM_TypeDef *TIMx) -{ - return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_OPM)); -} - -/** - * @brief Set the timer counter counting mode. - * @note Macro IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx) can be used to - * check whether or not the counter mode selection feature is supported - * by a timer instance. - * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse) - * requires a timer reset to avoid unexpected direction - * due to DIR bit readonly in center aligned mode. - * @rmtoll CR1 DIR LL_TIM_SetCounterMode\n - * CR1 CMS LL_TIM_SetCounterMode - * @param TIMx Timer instance - * @param CounterMode This parameter can be one of the following values: - * @arg @ref LL_TIM_COUNTERMODE_UP - * @arg @ref LL_TIM_COUNTERMODE_DOWN - * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP - * @arg @ref LL_TIM_COUNTERMODE_CENTER_DOWN - * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP_DOWN - * @retval None - */ -__STATIC_INLINE void LL_TIM_SetCounterMode(TIM_TypeDef *TIMx, uint32_t CounterMode) -{ - MODIFY_REG(TIMx->CR1, (TIM_CR1_DIR | TIM_CR1_CMS), CounterMode); -} - -/** - * @brief Get actual counter mode. - * @note Macro IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx) can be used to - * check whether or not the counter mode selection feature is supported - * by a timer instance. - * @rmtoll CR1 DIR LL_TIM_GetCounterMode\n - * CR1 CMS LL_TIM_GetCounterMode - * @param TIMx Timer instance - * @retval Returned value can be one of the following values: - * @arg @ref LL_TIM_COUNTERMODE_UP - * @arg @ref LL_TIM_COUNTERMODE_DOWN - * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP - * @arg @ref LL_TIM_COUNTERMODE_CENTER_DOWN - * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP_DOWN - */ -__STATIC_INLINE uint32_t LL_TIM_GetCounterMode(TIM_TypeDef *TIMx) -{ - return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_DIR | TIM_CR1_CMS)); -} - -/** - * @brief Enable auto-reload (ARR) preload. - * @rmtoll CR1 ARPE LL_TIM_EnableARRPreload - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_EnableARRPreload(TIM_TypeDef *TIMx) -{ - SET_BIT(TIMx->CR1, TIM_CR1_ARPE); -} - -/** - * @brief Disable auto-reload (ARR) preload. - * @rmtoll CR1 ARPE LL_TIM_DisableARRPreload - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_DisableARRPreload(TIM_TypeDef *TIMx) -{ - CLEAR_BIT(TIMx->CR1, TIM_CR1_ARPE); -} - -/** - * @brief Indicates whether auto-reload (ARR) preload is enabled. - * @rmtoll CR1 ARPE LL_TIM_IsEnabledARRPreload - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsEnabledARRPreload(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->CR1, TIM_CR1_ARPE) == (TIM_CR1_ARPE)) ? 1UL : 0UL); -} - -/** - * @brief Set the division ratio between the timer clock and the sampling clock used by the dead-time generators (when supported) and the digital filters. - * @note Macro IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx) can be used to check - * whether or not the clock division feature is supported by the timer - * instance. - * @rmtoll CR1 CKD LL_TIM_SetClockDivision - * @param TIMx Timer instance - * @param ClockDivision This parameter can be one of the following values: - * @arg @ref LL_TIM_CLOCKDIVISION_DIV1 - * @arg @ref LL_TIM_CLOCKDIVISION_DIV2 - * @arg @ref LL_TIM_CLOCKDIVISION_DIV4 - * @retval None - */ -__STATIC_INLINE void LL_TIM_SetClockDivision(TIM_TypeDef *TIMx, uint32_t ClockDivision) -{ - MODIFY_REG(TIMx->CR1, TIM_CR1_CKD, ClockDivision); -} - -/** - * @brief Get the actual division ratio between the timer clock and the sampling clock used by the dead-time generators (when supported) and the digital filters. - * @note Macro IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx) can be used to check - * whether or not the clock division feature is supported by the timer - * instance. - * @rmtoll CR1 CKD LL_TIM_GetClockDivision - * @param TIMx Timer instance - * @retval Returned value can be one of the following values: - * @arg @ref LL_TIM_CLOCKDIVISION_DIV1 - * @arg @ref LL_TIM_CLOCKDIVISION_DIV2 - * @arg @ref LL_TIM_CLOCKDIVISION_DIV4 - */ -__STATIC_INLINE uint32_t LL_TIM_GetClockDivision(TIM_TypeDef *TIMx) -{ - return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_CKD)); -} - -/** - * @brief Set the counter value. - * @rmtoll CNT CNT LL_TIM_SetCounter - * @param TIMx Timer instance - * @param Counter Counter value (between Min_Data=0 and Max_Data=0xFFFF) - * @retval None - */ -__STATIC_INLINE void LL_TIM_SetCounter(TIM_TypeDef *TIMx, uint32_t Counter) -{ - WRITE_REG(TIMx->CNT, Counter); -} - -/** - * @brief Get the counter value. - * @rmtoll CNT CNT LL_TIM_GetCounter - * @param TIMx Timer instance - * @retval Counter value (between Min_Data=0 and Max_Data=0xFFFF) - */ -__STATIC_INLINE uint32_t LL_TIM_GetCounter(TIM_TypeDef *TIMx) -{ - return (uint32_t)(READ_REG(TIMx->CNT)); -} - -/** - * @brief Get the current direction of the counter - * @rmtoll CR1 DIR LL_TIM_GetDirection - * @param TIMx Timer instance - * @retval Returned value can be one of the following values: - * @arg @ref LL_TIM_COUNTERDIRECTION_UP - * @arg @ref LL_TIM_COUNTERDIRECTION_DOWN - */ -__STATIC_INLINE uint32_t LL_TIM_GetDirection(TIM_TypeDef *TIMx) -{ - return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_DIR)); -} - -/** - * @brief Set the prescaler value. - * @note The counter clock frequency CK_CNT is equal to fCK_PSC / (PSC[15:0] + 1). - * @note The prescaler can be changed on the fly as this control register is buffered. The new - * prescaler ratio is taken into account at the next update event. - * @note Helper macro @ref __LL_TIM_CALC_PSC can be used to calculate the Prescaler parameter - * @rmtoll PSC PSC LL_TIM_SetPrescaler - * @param TIMx Timer instance - * @param Prescaler between Min_Data=0 and Max_Data=65535 - * @retval None - */ -__STATIC_INLINE void LL_TIM_SetPrescaler(TIM_TypeDef *TIMx, uint32_t Prescaler) -{ - WRITE_REG(TIMx->PSC, Prescaler); -} - -/** - * @brief Get the prescaler value. - * @rmtoll PSC PSC LL_TIM_GetPrescaler - * @param TIMx Timer instance - * @retval Prescaler value between Min_Data=0 and Max_Data=65535 - */ -__STATIC_INLINE uint32_t LL_TIM_GetPrescaler(TIM_TypeDef *TIMx) -{ - return (uint32_t)(READ_REG(TIMx->PSC)); -} - -/** - * @brief Set the auto-reload value. - * @note The counter is blocked while the auto-reload value is null. - * @note Helper macro @ref __LL_TIM_CALC_ARR can be used to calculate the AutoReload parameter - * @rmtoll ARR ARR LL_TIM_SetAutoReload - * @param TIMx Timer instance - * @param AutoReload between Min_Data=0 and Max_Data=65535 - * @retval None - */ -__STATIC_INLINE void LL_TIM_SetAutoReload(TIM_TypeDef *TIMx, uint32_t AutoReload) -{ - WRITE_REG(TIMx->ARR, AutoReload); -} - -/** - * @brief Get the auto-reload value. - * @rmtoll ARR ARR LL_TIM_GetAutoReload - * @param TIMx Timer instance - * @retval Auto-reload value - */ -__STATIC_INLINE uint32_t LL_TIM_GetAutoReload(TIM_TypeDef *TIMx) -{ - return (uint32_t)(READ_REG(TIMx->ARR)); -} - -/** - * @brief Set the repetition counter value. - * @note Macro IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx) can be used to check - * whether or not a timer instance supports a repetition counter. - * @rmtoll RCR REP LL_TIM_SetRepetitionCounter - * @param TIMx Timer instance - * @param RepetitionCounter between Min_Data=0 and Max_Data=255 or 65535 for advanced timer. - * @retval None - */ -__STATIC_INLINE void LL_TIM_SetRepetitionCounter(TIM_TypeDef *TIMx, uint32_t RepetitionCounter) -{ - WRITE_REG(TIMx->RCR, RepetitionCounter); -} - -/** - * @brief Get the repetition counter value. - * @note Macro IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx) can be used to check - * whether or not a timer instance supports a repetition counter. - * @rmtoll RCR REP LL_TIM_GetRepetitionCounter - * @param TIMx Timer instance - * @retval Repetition counter value - */ -__STATIC_INLINE uint32_t LL_TIM_GetRepetitionCounter(TIM_TypeDef *TIMx) -{ - return (uint32_t)(READ_REG(TIMx->RCR)); -} - -/** - * @} - */ - -/** @defgroup TIM_LL_EF_Capture_Compare Capture Compare configuration - * @{ - */ -/** - * @brief Enable the capture/compare control bits (CCxE, CCxNE and OCxM) preload. - * @note CCxE, CCxNE and OCxM bits are preloaded, after having been written, - * they are updated only when a commutation event (COM) occurs. - * @note Only on channels that have a complementary output. - * @note Macro IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check - * whether or not a timer instance is able to generate a commutation event. - * @rmtoll CR2 CCPC LL_TIM_CC_EnablePreload - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_CC_EnablePreload(TIM_TypeDef *TIMx) -{ - SET_BIT(TIMx->CR2, TIM_CR2_CCPC); -} - -/** - * @brief Disable the capture/compare control bits (CCxE, CCxNE and OCxM) preload. - * @note Macro IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check - * whether or not a timer instance is able to generate a commutation event. - * @rmtoll CR2 CCPC LL_TIM_CC_DisablePreload - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_CC_DisablePreload(TIM_TypeDef *TIMx) -{ - CLEAR_BIT(TIMx->CR2, TIM_CR2_CCPC); -} - -/** - * @brief Set the updated source of the capture/compare control bits (CCxE, CCxNE and OCxM). - * @note Macro IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check - * whether or not a timer instance is able to generate a commutation event. - * @rmtoll CR2 CCUS LL_TIM_CC_SetUpdate - * @param TIMx Timer instance - * @param CCUpdateSource This parameter can be one of the following values: - * @arg @ref LL_TIM_CCUPDATESOURCE_COMG_ONLY - * @arg @ref LL_TIM_CCUPDATESOURCE_COMG_AND_TRGI - * @retval None - */ -__STATIC_INLINE void LL_TIM_CC_SetUpdate(TIM_TypeDef *TIMx, uint32_t CCUpdateSource) -{ - MODIFY_REG(TIMx->CR2, TIM_CR2_CCUS, CCUpdateSource); -} - -/** - * @brief Set the trigger of the capture/compare DMA request. - * @rmtoll CR2 CCDS LL_TIM_CC_SetDMAReqTrigger - * @param TIMx Timer instance - * @param DMAReqTrigger This parameter can be one of the following values: - * @arg @ref LL_TIM_CCDMAREQUEST_CC - * @arg @ref LL_TIM_CCDMAREQUEST_UPDATE - * @retval None - */ -__STATIC_INLINE void LL_TIM_CC_SetDMAReqTrigger(TIM_TypeDef *TIMx, uint32_t DMAReqTrigger) -{ - MODIFY_REG(TIMx->CR2, TIM_CR2_CCDS, DMAReqTrigger); -} - -/** - * @brief Get actual trigger of the capture/compare DMA request. - * @rmtoll CR2 CCDS LL_TIM_CC_GetDMAReqTrigger - * @param TIMx Timer instance - * @retval Returned value can be one of the following values: - * @arg @ref LL_TIM_CCDMAREQUEST_CC - * @arg @ref LL_TIM_CCDMAREQUEST_UPDATE - */ -__STATIC_INLINE uint32_t LL_TIM_CC_GetDMAReqTrigger(TIM_TypeDef *TIMx) -{ - return (uint32_t)(READ_BIT(TIMx->CR2, TIM_CR2_CCDS)); -} - -/** - * @brief Set the lock level to freeze the - * configuration of several capture/compare parameters. - * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not - * the lock mechanism is supported by a timer instance. - * @rmtoll BDTR LOCK LL_TIM_CC_SetLockLevel - * @param TIMx Timer instance - * @param LockLevel This parameter can be one of the following values: - * @arg @ref LL_TIM_LOCKLEVEL_OFF - * @arg @ref LL_TIM_LOCKLEVEL_1 - * @arg @ref LL_TIM_LOCKLEVEL_2 - * @arg @ref LL_TIM_LOCKLEVEL_3 - * @retval None - */ -__STATIC_INLINE void LL_TIM_CC_SetLockLevel(TIM_TypeDef *TIMx, uint32_t LockLevel) -{ - MODIFY_REG(TIMx->BDTR, TIM_BDTR_LOCK, LockLevel); -} - -/** - * @brief Enable capture/compare channels. - * @rmtoll CCER CC1E LL_TIM_CC_EnableChannel\n - * CCER CC1NE LL_TIM_CC_EnableChannel\n - * CCER CC2E LL_TIM_CC_EnableChannel\n - * CCER CC2NE LL_TIM_CC_EnableChannel\n - * CCER CC3E LL_TIM_CC_EnableChannel\n - * CCER CC3NE LL_TIM_CC_EnableChannel\n - * CCER CC4E LL_TIM_CC_EnableChannel - * @param TIMx Timer instance - * @param Channels This parameter can be a combination of the following values: - * @arg @ref LL_TIM_CHANNEL_CH1 - * @arg @ref LL_TIM_CHANNEL_CH1N - * @arg @ref LL_TIM_CHANNEL_CH2 - * @arg @ref LL_TIM_CHANNEL_CH2N - * @arg @ref LL_TIM_CHANNEL_CH3 - * @arg @ref LL_TIM_CHANNEL_CH3N - * @arg @ref LL_TIM_CHANNEL_CH4 - * @retval None - */ -__STATIC_INLINE void LL_TIM_CC_EnableChannel(TIM_TypeDef *TIMx, uint32_t Channels) -{ - SET_BIT(TIMx->CCER, Channels); -} - -/** - * @brief Disable capture/compare channels. - * @rmtoll CCER CC1E LL_TIM_CC_DisableChannel\n - * CCER CC1NE LL_TIM_CC_DisableChannel\n - * CCER CC2E LL_TIM_CC_DisableChannel\n - * CCER CC2NE LL_TIM_CC_DisableChannel\n - * CCER CC3E LL_TIM_CC_DisableChannel\n - * CCER CC3NE LL_TIM_CC_DisableChannel\n - * CCER CC4E LL_TIM_CC_DisableChannel - * @param TIMx Timer instance - * @param Channels This parameter can be a combination of the following values: - * @arg @ref LL_TIM_CHANNEL_CH1 - * @arg @ref LL_TIM_CHANNEL_CH1N - * @arg @ref LL_TIM_CHANNEL_CH2 - * @arg @ref LL_TIM_CHANNEL_CH2N - * @arg @ref LL_TIM_CHANNEL_CH3 - * @arg @ref LL_TIM_CHANNEL_CH3N - * @arg @ref LL_TIM_CHANNEL_CH4 - * @retval None - */ -__STATIC_INLINE void LL_TIM_CC_DisableChannel(TIM_TypeDef *TIMx, uint32_t Channels) -{ - CLEAR_BIT(TIMx->CCER, Channels); -} - -/** - * @brief Indicate whether channel(s) is(are) enabled. - * @rmtoll CCER CC1E LL_TIM_CC_IsEnabledChannel\n - * CCER CC1NE LL_TIM_CC_IsEnabledChannel\n - * CCER CC2E LL_TIM_CC_IsEnabledChannel\n - * CCER CC2NE LL_TIM_CC_IsEnabledChannel\n - * CCER CC3E LL_TIM_CC_IsEnabledChannel\n - * CCER CC3NE LL_TIM_CC_IsEnabledChannel\n - * CCER CC4E LL_TIM_CC_IsEnabledChannel - * @param TIMx Timer instance - * @param Channels This parameter can be a combination of the following values: - * @arg @ref LL_TIM_CHANNEL_CH1 - * @arg @ref LL_TIM_CHANNEL_CH1N - * @arg @ref LL_TIM_CHANNEL_CH2 - * @arg @ref LL_TIM_CHANNEL_CH2N - * @arg @ref LL_TIM_CHANNEL_CH3 - * @arg @ref LL_TIM_CHANNEL_CH3N - * @arg @ref LL_TIM_CHANNEL_CH4 - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_CC_IsEnabledChannel(TIM_TypeDef *TIMx, uint32_t Channels) -{ - return ((READ_BIT(TIMx->CCER, Channels) == (Channels)) ? 1UL : 0UL); -} - -/** - * @} - */ - -/** @defgroup TIM_LL_EF_Output_Channel Output channel configuration - * @{ - */ -/** - * @brief Configure an output channel. - * @rmtoll CCMR1 CC1S LL_TIM_OC_ConfigOutput\n - * CCMR1 CC2S LL_TIM_OC_ConfigOutput\n - * CCMR2 CC3S LL_TIM_OC_ConfigOutput\n - * CCMR2 CC4S LL_TIM_OC_ConfigOutput\n - * CCER CC1P LL_TIM_OC_ConfigOutput\n - * CCER CC2P LL_TIM_OC_ConfigOutput\n - * CCER CC3P LL_TIM_OC_ConfigOutput\n - * CCER CC4P LL_TIM_OC_ConfigOutput\n - * CR2 OIS1 LL_TIM_OC_ConfigOutput\n - * CR2 OIS2 LL_TIM_OC_ConfigOutput\n - * CR2 OIS3 LL_TIM_OC_ConfigOutput\n - * CR2 OIS4 LL_TIM_OC_ConfigOutput - * @param TIMx Timer instance - * @param Channel This parameter can be one of the following values: - * @arg @ref LL_TIM_CHANNEL_CH1 - * @arg @ref LL_TIM_CHANNEL_CH2 - * @arg @ref LL_TIM_CHANNEL_CH3 - * @arg @ref LL_TIM_CHANNEL_CH4 - * @param Configuration This parameter must be a combination of all the following values: - * @arg @ref LL_TIM_OCPOLARITY_HIGH or @ref LL_TIM_OCPOLARITY_LOW - * @arg @ref LL_TIM_OCIDLESTATE_LOW or @ref LL_TIM_OCIDLESTATE_HIGH - * @retval None - */ -__STATIC_INLINE void LL_TIM_OC_ConfigOutput(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Configuration) -{ - uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); - __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); - CLEAR_BIT(*pReg, (TIM_CCMR1_CC1S << SHIFT_TAB_OCxx[iChannel])); - MODIFY_REG(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel]), - (Configuration & TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]); - MODIFY_REG(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel]), - (Configuration & TIM_CR2_OIS1) << SHIFT_TAB_OISx[iChannel]); -} - -/** - * @brief Define the behavior of the output reference signal OCxREF from which - * OCx and OCxN (when relevant) are derived. - * @rmtoll CCMR1 OC1M LL_TIM_OC_SetMode\n - * CCMR1 OC2M LL_TIM_OC_SetMode\n - * CCMR2 OC3M LL_TIM_OC_SetMode\n - * CCMR2 OC4M LL_TIM_OC_SetMode - * @param TIMx Timer instance - * @param Channel This parameter can be one of the following values: - * @arg @ref LL_TIM_CHANNEL_CH1 - * @arg @ref LL_TIM_CHANNEL_CH2 - * @arg @ref LL_TIM_CHANNEL_CH3 - * @arg @ref LL_TIM_CHANNEL_CH4 - * @param Mode This parameter can be one of the following values: - * @arg @ref LL_TIM_OCMODE_FROZEN - * @arg @ref LL_TIM_OCMODE_ACTIVE - * @arg @ref LL_TIM_OCMODE_INACTIVE - * @arg @ref LL_TIM_OCMODE_TOGGLE - * @arg @ref LL_TIM_OCMODE_FORCED_INACTIVE - * @arg @ref LL_TIM_OCMODE_FORCED_ACTIVE - * @arg @ref LL_TIM_OCMODE_PWM1 - * @arg @ref LL_TIM_OCMODE_PWM2 - * @retval None - */ -__STATIC_INLINE void LL_TIM_OC_SetMode(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Mode) -{ - uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); - __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); - MODIFY_REG(*pReg, ((TIM_CCMR1_OC1M | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel]), Mode << SHIFT_TAB_OCxx[iChannel]); -} - -/** - * @brief Get the output compare mode of an output channel. - * @rmtoll CCMR1 OC1M LL_TIM_OC_GetMode\n - * CCMR1 OC2M LL_TIM_OC_GetMode\n - * CCMR2 OC3M LL_TIM_OC_GetMode\n - * CCMR2 OC4M LL_TIM_OC_GetMode - * @param TIMx Timer instance - * @param Channel This parameter can be one of the following values: - * @arg @ref LL_TIM_CHANNEL_CH1 - * @arg @ref LL_TIM_CHANNEL_CH2 - * @arg @ref LL_TIM_CHANNEL_CH3 - * @arg @ref LL_TIM_CHANNEL_CH4 - * @retval Returned value can be one of the following values: - * @arg @ref LL_TIM_OCMODE_FROZEN - * @arg @ref LL_TIM_OCMODE_ACTIVE - * @arg @ref LL_TIM_OCMODE_INACTIVE - * @arg @ref LL_TIM_OCMODE_TOGGLE - * @arg @ref LL_TIM_OCMODE_FORCED_INACTIVE - * @arg @ref LL_TIM_OCMODE_FORCED_ACTIVE - * @arg @ref LL_TIM_OCMODE_PWM1 - * @arg @ref LL_TIM_OCMODE_PWM2 - */ -__STATIC_INLINE uint32_t LL_TIM_OC_GetMode(TIM_TypeDef *TIMx, uint32_t Channel) -{ - uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); - const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); - return (READ_BIT(*pReg, ((TIM_CCMR1_OC1M | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel])) >> SHIFT_TAB_OCxx[iChannel]); -} - -/** - * @brief Set the polarity of an output channel. - * @rmtoll CCER CC1P LL_TIM_OC_SetPolarity\n - * CCER CC1NP LL_TIM_OC_SetPolarity\n - * CCER CC2P LL_TIM_OC_SetPolarity\n - * CCER CC2NP LL_TIM_OC_SetPolarity\n - * CCER CC3P LL_TIM_OC_SetPolarity\n - * CCER CC3NP LL_TIM_OC_SetPolarity\n - * CCER CC4P LL_TIM_OC_SetPolarity - * @param TIMx Timer instance - * @param Channel This parameter can be one of the following values: - * @arg @ref LL_TIM_CHANNEL_CH1 - * @arg @ref LL_TIM_CHANNEL_CH1N - * @arg @ref LL_TIM_CHANNEL_CH2 - * @arg @ref LL_TIM_CHANNEL_CH2N - * @arg @ref LL_TIM_CHANNEL_CH3 - * @arg @ref LL_TIM_CHANNEL_CH3N - * @arg @ref LL_TIM_CHANNEL_CH4 - * @param Polarity This parameter can be one of the following values: - * @arg @ref LL_TIM_OCPOLARITY_HIGH - * @arg @ref LL_TIM_OCPOLARITY_LOW - * @retval None - */ -__STATIC_INLINE void LL_TIM_OC_SetPolarity(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Polarity) -{ - uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); - MODIFY_REG(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel]), Polarity << SHIFT_TAB_CCxP[iChannel]); -} - -/** - * @brief Get the polarity of an output channel. - * @rmtoll CCER CC1P LL_TIM_OC_GetPolarity\n - * CCER CC1NP LL_TIM_OC_GetPolarity\n - * CCER CC2P LL_TIM_OC_GetPolarity\n - * CCER CC2NP LL_TIM_OC_GetPolarity\n - * CCER CC3P LL_TIM_OC_GetPolarity\n - * CCER CC3NP LL_TIM_OC_GetPolarity\n - * CCER CC4P LL_TIM_OC_GetPolarity - * @param TIMx Timer instance - * @param Channel This parameter can be one of the following values: - * @arg @ref LL_TIM_CHANNEL_CH1 - * @arg @ref LL_TIM_CHANNEL_CH1N - * @arg @ref LL_TIM_CHANNEL_CH2 - * @arg @ref LL_TIM_CHANNEL_CH2N - * @arg @ref LL_TIM_CHANNEL_CH3 - * @arg @ref LL_TIM_CHANNEL_CH3N - * @arg @ref LL_TIM_CHANNEL_CH4 - * @retval Returned value can be one of the following values: - * @arg @ref LL_TIM_OCPOLARITY_HIGH - * @arg @ref LL_TIM_OCPOLARITY_LOW - */ -__STATIC_INLINE uint32_t LL_TIM_OC_GetPolarity(TIM_TypeDef *TIMx, uint32_t Channel) -{ - uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); - return (READ_BIT(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel])) >> SHIFT_TAB_CCxP[iChannel]); -} - -/** - * @brief Set the IDLE state of an output channel - * @note This function is significant only for the timer instances - * supporting the break feature. Macro IS_TIM_BREAK_INSTANCE(TIMx) - * can be used to check whether or not a timer instance provides - * a break input. - * @rmtoll CR2 OIS1 LL_TIM_OC_SetIdleState\n - * CR2 OIS1N LL_TIM_OC_SetIdleState\n - * CR2 OIS2 LL_TIM_OC_SetIdleState\n - * CR2 OIS2N LL_TIM_OC_SetIdleState\n - * CR2 OIS3 LL_TIM_OC_SetIdleState\n - * CR2 OIS3N LL_TIM_OC_SetIdleState\n - * CR2 OIS4 LL_TIM_OC_SetIdleState - * @param TIMx Timer instance - * @param Channel This parameter can be one of the following values: - * @arg @ref LL_TIM_CHANNEL_CH1 - * @arg @ref LL_TIM_CHANNEL_CH1N - * @arg @ref LL_TIM_CHANNEL_CH2 - * @arg @ref LL_TIM_CHANNEL_CH2N - * @arg @ref LL_TIM_CHANNEL_CH3 - * @arg @ref LL_TIM_CHANNEL_CH3N - * @arg @ref LL_TIM_CHANNEL_CH4 - * @param IdleState This parameter can be one of the following values: - * @arg @ref LL_TIM_OCIDLESTATE_LOW - * @arg @ref LL_TIM_OCIDLESTATE_HIGH - * @retval None - */ -__STATIC_INLINE void LL_TIM_OC_SetIdleState(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t IdleState) -{ - uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); - MODIFY_REG(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel]), IdleState << SHIFT_TAB_OISx[iChannel]); -} - -/** - * @brief Get the IDLE state of an output channel - * @rmtoll CR2 OIS1 LL_TIM_OC_GetIdleState\n - * CR2 OIS1N LL_TIM_OC_GetIdleState\n - * CR2 OIS2 LL_TIM_OC_GetIdleState\n - * CR2 OIS2N LL_TIM_OC_GetIdleState\n - * CR2 OIS3 LL_TIM_OC_GetIdleState\n - * CR2 OIS3N LL_TIM_OC_GetIdleState\n - * CR2 OIS4 LL_TIM_OC_GetIdleState - * @param TIMx Timer instance - * @param Channel This parameter can be one of the following values: - * @arg @ref LL_TIM_CHANNEL_CH1 - * @arg @ref LL_TIM_CHANNEL_CH1N - * @arg @ref LL_TIM_CHANNEL_CH2 - * @arg @ref LL_TIM_CHANNEL_CH2N - * @arg @ref LL_TIM_CHANNEL_CH3 - * @arg @ref LL_TIM_CHANNEL_CH3N - * @arg @ref LL_TIM_CHANNEL_CH4 - * @retval Returned value can be one of the following values: - * @arg @ref LL_TIM_OCIDLESTATE_LOW - * @arg @ref LL_TIM_OCIDLESTATE_HIGH - */ -__STATIC_INLINE uint32_t LL_TIM_OC_GetIdleState(TIM_TypeDef *TIMx, uint32_t Channel) -{ - uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); - return (READ_BIT(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel])) >> SHIFT_TAB_OISx[iChannel]); -} - -/** - * @brief Enable fast mode for the output channel. - * @note Acts only if the channel is configured in PWM1 or PWM2 mode. - * @rmtoll CCMR1 OC1FE LL_TIM_OC_EnableFast\n - * CCMR1 OC2FE LL_TIM_OC_EnableFast\n - * CCMR2 OC3FE LL_TIM_OC_EnableFast\n - * CCMR2 OC4FE LL_TIM_OC_EnableFast - * @param TIMx Timer instance - * @param Channel This parameter can be one of the following values: - * @arg @ref LL_TIM_CHANNEL_CH1 - * @arg @ref LL_TIM_CHANNEL_CH2 - * @arg @ref LL_TIM_CHANNEL_CH3 - * @arg @ref LL_TIM_CHANNEL_CH4 - * @retval None - */ -__STATIC_INLINE void LL_TIM_OC_EnableFast(TIM_TypeDef *TIMx, uint32_t Channel) -{ - uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); - __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); - SET_BIT(*pReg, (TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel])); - -} - -/** - * @brief Disable fast mode for the output channel. - * @rmtoll CCMR1 OC1FE LL_TIM_OC_DisableFast\n - * CCMR1 OC2FE LL_TIM_OC_DisableFast\n - * CCMR2 OC3FE LL_TIM_OC_DisableFast\n - * CCMR2 OC4FE LL_TIM_OC_DisableFast - * @param TIMx Timer instance - * @param Channel This parameter can be one of the following values: - * @arg @ref LL_TIM_CHANNEL_CH1 - * @arg @ref LL_TIM_CHANNEL_CH2 - * @arg @ref LL_TIM_CHANNEL_CH3 - * @arg @ref LL_TIM_CHANNEL_CH4 - * @retval None - */ -__STATIC_INLINE void LL_TIM_OC_DisableFast(TIM_TypeDef *TIMx, uint32_t Channel) -{ - uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); - __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); - CLEAR_BIT(*pReg, (TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel])); - -} - -/** - * @brief Indicates whether fast mode is enabled for the output channel. - * @rmtoll CCMR1 OC1FE LL_TIM_OC_IsEnabledFast\n - * CCMR1 OC2FE LL_TIM_OC_IsEnabledFast\n - * CCMR2 OC3FE LL_TIM_OC_IsEnabledFast\n - * CCMR2 OC4FE LL_TIM_OC_IsEnabledFast\n - * @param TIMx Timer instance - * @param Channel This parameter can be one of the following values: - * @arg @ref LL_TIM_CHANNEL_CH1 - * @arg @ref LL_TIM_CHANNEL_CH2 - * @arg @ref LL_TIM_CHANNEL_CH3 - * @arg @ref LL_TIM_CHANNEL_CH4 - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledFast(TIM_TypeDef *TIMx, uint32_t Channel) -{ - uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); - const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); - uint32_t bitfield = TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel]; - return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL); -} - -/** - * @brief Enable compare register (TIMx_CCRx) preload for the output channel. - * @rmtoll CCMR1 OC1PE LL_TIM_OC_EnablePreload\n - * CCMR1 OC2PE LL_TIM_OC_EnablePreload\n - * CCMR2 OC3PE LL_TIM_OC_EnablePreload\n - * CCMR2 OC4PE LL_TIM_OC_EnablePreload - * @param TIMx Timer instance - * @param Channel This parameter can be one of the following values: - * @arg @ref LL_TIM_CHANNEL_CH1 - * @arg @ref LL_TIM_CHANNEL_CH2 - * @arg @ref LL_TIM_CHANNEL_CH3 - * @arg @ref LL_TIM_CHANNEL_CH4 - * @retval None - */ -__STATIC_INLINE void LL_TIM_OC_EnablePreload(TIM_TypeDef *TIMx, uint32_t Channel) -{ - uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); - __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); - SET_BIT(*pReg, (TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel])); -} - -/** - * @brief Disable compare register (TIMx_CCRx) preload for the output channel. - * @rmtoll CCMR1 OC1PE LL_TIM_OC_DisablePreload\n - * CCMR1 OC2PE LL_TIM_OC_DisablePreload\n - * CCMR2 OC3PE LL_TIM_OC_DisablePreload\n - * CCMR2 OC4PE LL_TIM_OC_DisablePreload - * @param TIMx Timer instance - * @param Channel This parameter can be one of the following values: - * @arg @ref LL_TIM_CHANNEL_CH1 - * @arg @ref LL_TIM_CHANNEL_CH2 - * @arg @ref LL_TIM_CHANNEL_CH3 - * @arg @ref LL_TIM_CHANNEL_CH4 - * @retval None - */ -__STATIC_INLINE void LL_TIM_OC_DisablePreload(TIM_TypeDef *TIMx, uint32_t Channel) -{ - uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); - __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); - CLEAR_BIT(*pReg, (TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel])); -} - -/** - * @brief Indicates whether compare register (TIMx_CCRx) preload is enabled for the output channel. - * @rmtoll CCMR1 OC1PE LL_TIM_OC_IsEnabledPreload\n - * CCMR1 OC2PE LL_TIM_OC_IsEnabledPreload\n - * CCMR2 OC3PE LL_TIM_OC_IsEnabledPreload\n - * CCMR2 OC4PE LL_TIM_OC_IsEnabledPreload\n - * @param TIMx Timer instance - * @param Channel This parameter can be one of the following values: - * @arg @ref LL_TIM_CHANNEL_CH1 - * @arg @ref LL_TIM_CHANNEL_CH2 - * @arg @ref LL_TIM_CHANNEL_CH3 - * @arg @ref LL_TIM_CHANNEL_CH4 - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledPreload(TIM_TypeDef *TIMx, uint32_t Channel) -{ - uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); - const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); - uint32_t bitfield = TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel]; - return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL); -} - -/** - * @brief Enable clearing the output channel on an external event. - * @note This function can only be used in Output compare and PWM modes. It does not work in Forced mode. - * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether - * or not a timer instance can clear the OCxREF signal on an external event. - * @rmtoll CCMR1 OC1CE LL_TIM_OC_EnableClear\n - * CCMR1 OC2CE LL_TIM_OC_EnableClear\n - * CCMR2 OC3CE LL_TIM_OC_EnableClear\n - * CCMR2 OC4CE LL_TIM_OC_EnableClear - * @param TIMx Timer instance - * @param Channel This parameter can be one of the following values: - * @arg @ref LL_TIM_CHANNEL_CH1 - * @arg @ref LL_TIM_CHANNEL_CH2 - * @arg @ref LL_TIM_CHANNEL_CH3 - * @arg @ref LL_TIM_CHANNEL_CH4 - * @retval None - */ -__STATIC_INLINE void LL_TIM_OC_EnableClear(TIM_TypeDef *TIMx, uint32_t Channel) -{ - uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); - __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); - SET_BIT(*pReg, (TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel])); -} - -/** - * @brief Disable clearing the output channel on an external event. - * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether - * or not a timer instance can clear the OCxREF signal on an external event. - * @rmtoll CCMR1 OC1CE LL_TIM_OC_DisableClear\n - * CCMR1 OC2CE LL_TIM_OC_DisableClear\n - * CCMR2 OC3CE LL_TIM_OC_DisableClear\n - * CCMR2 OC4CE LL_TIM_OC_DisableClear - * @param TIMx Timer instance - * @param Channel This parameter can be one of the following values: - * @arg @ref LL_TIM_CHANNEL_CH1 - * @arg @ref LL_TIM_CHANNEL_CH2 - * @arg @ref LL_TIM_CHANNEL_CH3 - * @arg @ref LL_TIM_CHANNEL_CH4 - * @retval None - */ -__STATIC_INLINE void LL_TIM_OC_DisableClear(TIM_TypeDef *TIMx, uint32_t Channel) -{ - uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); - __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); - CLEAR_BIT(*pReg, (TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel])); -} - -/** - * @brief Indicates clearing the output channel on an external event is enabled for the output channel. - * @note This function enables clearing the output channel on an external event. - * @note This function can only be used in Output compare and PWM modes. It does not work in Forced mode. - * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether - * or not a timer instance can clear the OCxREF signal on an external event. - * @rmtoll CCMR1 OC1CE LL_TIM_OC_IsEnabledClear\n - * CCMR1 OC2CE LL_TIM_OC_IsEnabledClear\n - * CCMR2 OC3CE LL_TIM_OC_IsEnabledClear\n - * CCMR2 OC4CE LL_TIM_OC_IsEnabledClear\n - * @param TIMx Timer instance - * @param Channel This parameter can be one of the following values: - * @arg @ref LL_TIM_CHANNEL_CH1 - * @arg @ref LL_TIM_CHANNEL_CH2 - * @arg @ref LL_TIM_CHANNEL_CH3 - * @arg @ref LL_TIM_CHANNEL_CH4 - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledClear(TIM_TypeDef *TIMx, uint32_t Channel) -{ - uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); - const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); - uint32_t bitfield = TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel]; - return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL); -} - -/** - * @brief Set the dead-time delay (delay inserted between the rising edge of the OCxREF signal and the rising edge of the Ocx and OCxN signals). - * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not - * dead-time insertion feature is supported by a timer instance. - * @note Helper macro @ref __LL_TIM_CALC_DEADTIME can be used to calculate the DeadTime parameter - * @rmtoll BDTR DTG LL_TIM_OC_SetDeadTime - * @param TIMx Timer instance - * @param DeadTime between Min_Data=0 and Max_Data=255 - * @retval None - */ -__STATIC_INLINE void LL_TIM_OC_SetDeadTime(TIM_TypeDef *TIMx, uint32_t DeadTime) -{ - MODIFY_REG(TIMx->BDTR, TIM_BDTR_DTG, DeadTime); -} - -/** - * @brief Set compare value for output channel 1 (TIMx_CCR1). - * @note Macro IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not - * output channel 1 is supported by a timer instance. - * @rmtoll CCR1 CCR1 LL_TIM_OC_SetCompareCH1 - * @param TIMx Timer instance - * @param CompareValue between Min_Data=0 and Max_Data=65535 - * @retval None - */ -__STATIC_INLINE void LL_TIM_OC_SetCompareCH1(TIM_TypeDef *TIMx, uint32_t CompareValue) -{ - WRITE_REG(TIMx->CCR1, CompareValue); -} - -/** - * @brief Set compare value for output channel 2 (TIMx_CCR2). - * @note Macro IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not - * output channel 2 is supported by a timer instance. - * @rmtoll CCR2 CCR2 LL_TIM_OC_SetCompareCH2 - * @param TIMx Timer instance - * @param CompareValue between Min_Data=0 and Max_Data=65535 - * @retval None - */ -__STATIC_INLINE void LL_TIM_OC_SetCompareCH2(TIM_TypeDef *TIMx, uint32_t CompareValue) -{ - WRITE_REG(TIMx->CCR2, CompareValue); -} - -/** - * @brief Set compare value for output channel 3 (TIMx_CCR3). - * @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not - * output channel is supported by a timer instance. - * @rmtoll CCR3 CCR3 LL_TIM_OC_SetCompareCH3 - * @param TIMx Timer instance - * @param CompareValue between Min_Data=0 and Max_Data=65535 - * @retval None - */ -__STATIC_INLINE void LL_TIM_OC_SetCompareCH3(TIM_TypeDef *TIMx, uint32_t CompareValue) -{ - WRITE_REG(TIMx->CCR3, CompareValue); -} - -/** - * @brief Set compare value for output channel 4 (TIMx_CCR4). - * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not - * output channel 4 is supported by a timer instance. - * @rmtoll CCR4 CCR4 LL_TIM_OC_SetCompareCH4 - * @param TIMx Timer instance - * @param CompareValue between Min_Data=0 and Max_Data=65535 - * @retval None - */ -__STATIC_INLINE void LL_TIM_OC_SetCompareCH4(TIM_TypeDef *TIMx, uint32_t CompareValue) -{ - WRITE_REG(TIMx->CCR4, CompareValue); -} - -/** - * @brief Get compare value (TIMx_CCR1) set for output channel 1. - * @note Macro IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not - * output channel 1 is supported by a timer instance. - * @rmtoll CCR1 CCR1 LL_TIM_OC_GetCompareCH1 - * @param TIMx Timer instance - * @retval CompareValue (between Min_Data=0 and Max_Data=65535) - */ -__STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH1(TIM_TypeDef *TIMx) -{ - return (uint32_t)(READ_REG(TIMx->CCR1)); -} - -/** - * @brief Get compare value (TIMx_CCR2) set for output channel 2. - * @note Macro IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not - * output channel 2 is supported by a timer instance. - * @rmtoll CCR2 CCR2 LL_TIM_OC_GetCompareCH2 - * @param TIMx Timer instance - * @retval CompareValue (between Min_Data=0 and Max_Data=65535) - */ -__STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH2(TIM_TypeDef *TIMx) -{ - return (uint32_t)(READ_REG(TIMx->CCR2)); -} - -/** - * @brief Get compare value (TIMx_CCR3) set for output channel 3. - * @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not - * output channel 3 is supported by a timer instance. - * @rmtoll CCR3 CCR3 LL_TIM_OC_GetCompareCH3 - * @param TIMx Timer instance - * @retval CompareValue (between Min_Data=0 and Max_Data=65535) - */ -__STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH3(TIM_TypeDef *TIMx) -{ - return (uint32_t)(READ_REG(TIMx->CCR3)); -} - -/** - * @brief Get compare value (TIMx_CCR4) set for output channel 4. - * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not - * output channel 4 is supported by a timer instance. - * @rmtoll CCR4 CCR4 LL_TIM_OC_GetCompareCH4 - * @param TIMx Timer instance - * @retval CompareValue (between Min_Data=0 and Max_Data=65535) - */ -__STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH4(TIM_TypeDef *TIMx) -{ - return (uint32_t)(READ_REG(TIMx->CCR4)); -} - -/** - * @} - */ - -/** @defgroup TIM_LL_EF_Input_Channel Input channel configuration - * @{ - */ -/** - * @brief Configure input channel. - * @rmtoll CCMR1 CC1S LL_TIM_IC_Config\n - * CCMR1 IC1PSC LL_TIM_IC_Config\n - * CCMR1 IC1F LL_TIM_IC_Config\n - * CCMR1 CC2S LL_TIM_IC_Config\n - * CCMR1 IC2PSC LL_TIM_IC_Config\n - * CCMR1 IC2F LL_TIM_IC_Config\n - * CCMR2 CC3S LL_TIM_IC_Config\n - * CCMR2 IC3PSC LL_TIM_IC_Config\n - * CCMR2 IC3F LL_TIM_IC_Config\n - * CCMR2 CC4S LL_TIM_IC_Config\n - * CCMR2 IC4PSC LL_TIM_IC_Config\n - * CCMR2 IC4F LL_TIM_IC_Config\n - * CCER CC1P LL_TIM_IC_Config\n - * CCER CC1NP LL_TIM_IC_Config\n - * CCER CC2P LL_TIM_IC_Config\n - * CCER CC2NP LL_TIM_IC_Config\n - * CCER CC3P LL_TIM_IC_Config\n - * CCER CC3NP LL_TIM_IC_Config\n - * CCER CC4P LL_TIM_IC_Config\n - * @param TIMx Timer instance - * @param Channel This parameter can be one of the following values: - * @arg @ref LL_TIM_CHANNEL_CH1 - * @arg @ref LL_TIM_CHANNEL_CH2 - * @arg @ref LL_TIM_CHANNEL_CH3 - * @arg @ref LL_TIM_CHANNEL_CH4 - * @param Configuration This parameter must be a combination of all the following values: - * @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI or @ref LL_TIM_ACTIVEINPUT_INDIRECTTI or @ref LL_TIM_ACTIVEINPUT_TRC - * @arg @ref LL_TIM_ICPSC_DIV1 or ... or @ref LL_TIM_ICPSC_DIV8 - * @arg @ref LL_TIM_IC_FILTER_FDIV1 or ... or @ref LL_TIM_IC_FILTER_FDIV32_N8 - * @arg @ref LL_TIM_IC_POLARITY_RISING or @ref LL_TIM_IC_POLARITY_FALLING - * @retval None - */ -__STATIC_INLINE void LL_TIM_IC_Config(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Configuration) -{ - uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); - __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); - MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel]), - ((Configuration >> 16U) & (TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S)) << SHIFT_TAB_ICxx[iChannel]); - MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]), - (Configuration & (TIM_CCER_CC1NP | TIM_CCER_CC1P)) << SHIFT_TAB_CCxP[iChannel]); -} - -/** - * @brief Set the active input. - * @rmtoll CCMR1 CC1S LL_TIM_IC_SetActiveInput\n - * CCMR1 CC2S LL_TIM_IC_SetActiveInput\n - * CCMR2 CC3S LL_TIM_IC_SetActiveInput\n - * CCMR2 CC4S LL_TIM_IC_SetActiveInput - * @param TIMx Timer instance - * @param Channel This parameter can be one of the following values: - * @arg @ref LL_TIM_CHANNEL_CH1 - * @arg @ref LL_TIM_CHANNEL_CH2 - * @arg @ref LL_TIM_CHANNEL_CH3 - * @arg @ref LL_TIM_CHANNEL_CH4 - * @param ICActiveInput This parameter can be one of the following values: - * @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI - * @arg @ref LL_TIM_ACTIVEINPUT_INDIRECTTI - * @arg @ref LL_TIM_ACTIVEINPUT_TRC - * @retval None - */ -__STATIC_INLINE void LL_TIM_IC_SetActiveInput(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICActiveInput) -{ - uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); - __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); - MODIFY_REG(*pReg, ((TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel]), (ICActiveInput >> 16U) << SHIFT_TAB_ICxx[iChannel]); -} - -/** - * @brief Get the current active input. - * @rmtoll CCMR1 CC1S LL_TIM_IC_GetActiveInput\n - * CCMR1 CC2S LL_TIM_IC_GetActiveInput\n - * CCMR2 CC3S LL_TIM_IC_GetActiveInput\n - * CCMR2 CC4S LL_TIM_IC_GetActiveInput - * @param TIMx Timer instance - * @param Channel This parameter can be one of the following values: - * @arg @ref LL_TIM_CHANNEL_CH1 - * @arg @ref LL_TIM_CHANNEL_CH2 - * @arg @ref LL_TIM_CHANNEL_CH3 - * @arg @ref LL_TIM_CHANNEL_CH4 - * @retval Returned value can be one of the following values: - * @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI - * @arg @ref LL_TIM_ACTIVEINPUT_INDIRECTTI - * @arg @ref LL_TIM_ACTIVEINPUT_TRC - */ -__STATIC_INLINE uint32_t LL_TIM_IC_GetActiveInput(TIM_TypeDef *TIMx, uint32_t Channel) -{ - uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); - const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); - return ((READ_BIT(*pReg, ((TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U); -} - -/** - * @brief Set the prescaler of input channel. - * @rmtoll CCMR1 IC1PSC LL_TIM_IC_SetPrescaler\n - * CCMR1 IC2PSC LL_TIM_IC_SetPrescaler\n - * CCMR2 IC3PSC LL_TIM_IC_SetPrescaler\n - * CCMR2 IC4PSC LL_TIM_IC_SetPrescaler - * @param TIMx Timer instance - * @param Channel This parameter can be one of the following values: - * @arg @ref LL_TIM_CHANNEL_CH1 - * @arg @ref LL_TIM_CHANNEL_CH2 - * @arg @ref LL_TIM_CHANNEL_CH3 - * @arg @ref LL_TIM_CHANNEL_CH4 - * @param ICPrescaler This parameter can be one of the following values: - * @arg @ref LL_TIM_ICPSC_DIV1 - * @arg @ref LL_TIM_ICPSC_DIV2 - * @arg @ref LL_TIM_ICPSC_DIV4 - * @arg @ref LL_TIM_ICPSC_DIV8 - * @retval None - */ -__STATIC_INLINE void LL_TIM_IC_SetPrescaler(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICPrescaler) -{ - uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); - __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); - MODIFY_REG(*pReg, ((TIM_CCMR1_IC1PSC) << SHIFT_TAB_ICxx[iChannel]), (ICPrescaler >> 16U) << SHIFT_TAB_ICxx[iChannel]); -} - -/** - * @brief Get the current prescaler value acting on an input channel. - * @rmtoll CCMR1 IC1PSC LL_TIM_IC_GetPrescaler\n - * CCMR1 IC2PSC LL_TIM_IC_GetPrescaler\n - * CCMR2 IC3PSC LL_TIM_IC_GetPrescaler\n - * CCMR2 IC4PSC LL_TIM_IC_GetPrescaler - * @param TIMx Timer instance - * @param Channel This parameter can be one of the following values: - * @arg @ref LL_TIM_CHANNEL_CH1 - * @arg @ref LL_TIM_CHANNEL_CH2 - * @arg @ref LL_TIM_CHANNEL_CH3 - * @arg @ref LL_TIM_CHANNEL_CH4 - * @retval Returned value can be one of the following values: - * @arg @ref LL_TIM_ICPSC_DIV1 - * @arg @ref LL_TIM_ICPSC_DIV2 - * @arg @ref LL_TIM_ICPSC_DIV4 - * @arg @ref LL_TIM_ICPSC_DIV8 - */ -__STATIC_INLINE uint32_t LL_TIM_IC_GetPrescaler(TIM_TypeDef *TIMx, uint32_t Channel) -{ - uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); - const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); - return ((READ_BIT(*pReg, ((TIM_CCMR1_IC1PSC) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U); -} - -/** - * @brief Set the input filter duration. - * @rmtoll CCMR1 IC1F LL_TIM_IC_SetFilter\n - * CCMR1 IC2F LL_TIM_IC_SetFilter\n - * CCMR2 IC3F LL_TIM_IC_SetFilter\n - * CCMR2 IC4F LL_TIM_IC_SetFilter - * @param TIMx Timer instance - * @param Channel This parameter can be one of the following values: - * @arg @ref LL_TIM_CHANNEL_CH1 - * @arg @ref LL_TIM_CHANNEL_CH2 - * @arg @ref LL_TIM_CHANNEL_CH3 - * @arg @ref LL_TIM_CHANNEL_CH4 - * @param ICFilter This parameter can be one of the following values: - * @arg @ref LL_TIM_IC_FILTER_FDIV1 - * @arg @ref LL_TIM_IC_FILTER_FDIV1_N2 - * @arg @ref LL_TIM_IC_FILTER_FDIV1_N4 - * @arg @ref LL_TIM_IC_FILTER_FDIV1_N8 - * @arg @ref LL_TIM_IC_FILTER_FDIV2_N6 - * @arg @ref LL_TIM_IC_FILTER_FDIV2_N8 - * @arg @ref LL_TIM_IC_FILTER_FDIV4_N6 - * @arg @ref LL_TIM_IC_FILTER_FDIV4_N8 - * @arg @ref LL_TIM_IC_FILTER_FDIV8_N6 - * @arg @ref LL_TIM_IC_FILTER_FDIV8_N8 - * @arg @ref LL_TIM_IC_FILTER_FDIV16_N5 - * @arg @ref LL_TIM_IC_FILTER_FDIV16_N6 - * @arg @ref LL_TIM_IC_FILTER_FDIV16_N8 - * @arg @ref LL_TIM_IC_FILTER_FDIV32_N5 - * @arg @ref LL_TIM_IC_FILTER_FDIV32_N6 - * @arg @ref LL_TIM_IC_FILTER_FDIV32_N8 - * @retval None - */ -__STATIC_INLINE void LL_TIM_IC_SetFilter(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICFilter) -{ - uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); - __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); - MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F) << SHIFT_TAB_ICxx[iChannel]), (ICFilter >> 16U) << SHIFT_TAB_ICxx[iChannel]); -} - -/** - * @brief Get the input filter duration. - * @rmtoll CCMR1 IC1F LL_TIM_IC_GetFilter\n - * CCMR1 IC2F LL_TIM_IC_GetFilter\n - * CCMR2 IC3F LL_TIM_IC_GetFilter\n - * CCMR2 IC4F LL_TIM_IC_GetFilter - * @param TIMx Timer instance - * @param Channel This parameter can be one of the following values: - * @arg @ref LL_TIM_CHANNEL_CH1 - * @arg @ref LL_TIM_CHANNEL_CH2 - * @arg @ref LL_TIM_CHANNEL_CH3 - * @arg @ref LL_TIM_CHANNEL_CH4 - * @retval Returned value can be one of the following values: - * @arg @ref LL_TIM_IC_FILTER_FDIV1 - * @arg @ref LL_TIM_IC_FILTER_FDIV1_N2 - * @arg @ref LL_TIM_IC_FILTER_FDIV1_N4 - * @arg @ref LL_TIM_IC_FILTER_FDIV1_N8 - * @arg @ref LL_TIM_IC_FILTER_FDIV2_N6 - * @arg @ref LL_TIM_IC_FILTER_FDIV2_N8 - * @arg @ref LL_TIM_IC_FILTER_FDIV4_N6 - * @arg @ref LL_TIM_IC_FILTER_FDIV4_N8 - * @arg @ref LL_TIM_IC_FILTER_FDIV8_N6 - * @arg @ref LL_TIM_IC_FILTER_FDIV8_N8 - * @arg @ref LL_TIM_IC_FILTER_FDIV16_N5 - * @arg @ref LL_TIM_IC_FILTER_FDIV16_N6 - * @arg @ref LL_TIM_IC_FILTER_FDIV16_N8 - * @arg @ref LL_TIM_IC_FILTER_FDIV32_N5 - * @arg @ref LL_TIM_IC_FILTER_FDIV32_N6 - * @arg @ref LL_TIM_IC_FILTER_FDIV32_N8 - */ -__STATIC_INLINE uint32_t LL_TIM_IC_GetFilter(TIM_TypeDef *TIMx, uint32_t Channel) -{ - uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); - const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); - return ((READ_BIT(*pReg, ((TIM_CCMR1_IC1F) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U); -} - -/** - * @brief Set the input channel polarity. - * @rmtoll CCER CC1P LL_TIM_IC_SetPolarity\n - * CCER CC1NP LL_TIM_IC_SetPolarity\n - * CCER CC2P LL_TIM_IC_SetPolarity\n - * CCER CC2NP LL_TIM_IC_SetPolarity\n - * CCER CC3P LL_TIM_IC_SetPolarity\n - * CCER CC3NP LL_TIM_IC_SetPolarity\n - * CCER CC4P LL_TIM_IC_SetPolarity\n - * @param TIMx Timer instance - * @param Channel This parameter can be one of the following values: - * @arg @ref LL_TIM_CHANNEL_CH1 - * @arg @ref LL_TIM_CHANNEL_CH2 - * @arg @ref LL_TIM_CHANNEL_CH3 - * @arg @ref LL_TIM_CHANNEL_CH4 - * @param ICPolarity This parameter can be one of the following values: - * @arg @ref LL_TIM_IC_POLARITY_RISING - * @arg @ref LL_TIM_IC_POLARITY_FALLING - * @retval None - */ -__STATIC_INLINE void LL_TIM_IC_SetPolarity(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICPolarity) -{ - uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); - MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]), - ICPolarity << SHIFT_TAB_CCxP[iChannel]); -} - -/** - * @brief Get the current input channel polarity. - * @rmtoll CCER CC1P LL_TIM_IC_GetPolarity\n - * CCER CC1NP LL_TIM_IC_GetPolarity\n - * CCER CC2P LL_TIM_IC_GetPolarity\n - * CCER CC2NP LL_TIM_IC_GetPolarity\n - * CCER CC3P LL_TIM_IC_GetPolarity\n - * CCER CC3NP LL_TIM_IC_GetPolarity\n - * CCER CC4P LL_TIM_IC_GetPolarity\n - * @param TIMx Timer instance - * @param Channel This parameter can be one of the following values: - * @arg @ref LL_TIM_CHANNEL_CH1 - * @arg @ref LL_TIM_CHANNEL_CH2 - * @arg @ref LL_TIM_CHANNEL_CH3 - * @arg @ref LL_TIM_CHANNEL_CH4 - * @retval Returned value can be one of the following values: - * @arg @ref LL_TIM_IC_POLARITY_RISING - * @arg @ref LL_TIM_IC_POLARITY_FALLING - */ -__STATIC_INLINE uint32_t LL_TIM_IC_GetPolarity(TIM_TypeDef *TIMx, uint32_t Channel) -{ - uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); - return (READ_BIT(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel])) >> - SHIFT_TAB_CCxP[iChannel]); -} - -/** - * @brief Connect the TIMx_CH1, CH2 and CH3 pins to the TI1 input (XOR combination). - * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not - * a timer instance provides an XOR input. - * @rmtoll CR2 TI1S LL_TIM_IC_EnableXORCombination - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_IC_EnableXORCombination(TIM_TypeDef *TIMx) -{ - SET_BIT(TIMx->CR2, TIM_CR2_TI1S); -} - -/** - * @brief Disconnect the TIMx_CH1, CH2 and CH3 pins from the TI1 input. - * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not - * a timer instance provides an XOR input. - * @rmtoll CR2 TI1S LL_TIM_IC_DisableXORCombination - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_IC_DisableXORCombination(TIM_TypeDef *TIMx) -{ - CLEAR_BIT(TIMx->CR2, TIM_CR2_TI1S); -} - -/** - * @brief Indicates whether the TIMx_CH1, CH2 and CH3 pins are connectected to the TI1 input. - * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not - * a timer instance provides an XOR input. - * @rmtoll CR2 TI1S LL_TIM_IC_IsEnabledXORCombination - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IC_IsEnabledXORCombination(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->CR2, TIM_CR2_TI1S) == (TIM_CR2_TI1S)) ? 1UL : 0UL); -} - -/** - * @brief Get captured value for input channel 1. - * @note Macro IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not - * input channel 1 is supported by a timer instance. - * @rmtoll CCR1 CCR1 LL_TIM_IC_GetCaptureCH1 - * @param TIMx Timer instance - * @retval CapturedValue (between Min_Data=0 and Max_Data=65535) - */ -__STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH1(TIM_TypeDef *TIMx) -{ - return (uint32_t)(READ_REG(TIMx->CCR1)); -} - -/** - * @brief Get captured value for input channel 2. - * @note Macro IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not - * input channel 2 is supported by a timer instance. - * @rmtoll CCR2 CCR2 LL_TIM_IC_GetCaptureCH2 - * @param TIMx Timer instance - * @retval CapturedValue (between Min_Data=0 and Max_Data=65535) - */ -__STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH2(TIM_TypeDef *TIMx) -{ - return (uint32_t)(READ_REG(TIMx->CCR2)); -} - -/** - * @brief Get captured value for input channel 3. - * @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not - * input channel 3 is supported by a timer instance. - * @rmtoll CCR3 CCR3 LL_TIM_IC_GetCaptureCH3 - * @param TIMx Timer instance - * @retval CapturedValue (between Min_Data=0 and Max_Data=65535) - */ -__STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH3(TIM_TypeDef *TIMx) -{ - return (uint32_t)(READ_REG(TIMx->CCR3)); -} - -/** - * @brief Get captured value for input channel 4. - * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not - * input channel 4 is supported by a timer instance. - * @rmtoll CCR4 CCR4 LL_TIM_IC_GetCaptureCH4 - * @param TIMx Timer instance - * @retval CapturedValue (between Min_Data=0 and Max_Data=65535) - */ -__STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH4(TIM_TypeDef *TIMx) -{ - return (uint32_t)(READ_REG(TIMx->CCR4)); -} - -/** - * @} - */ - -/** @defgroup TIM_LL_EF_Clock_Selection Counter clock selection - * @{ - */ -/** - * @brief Enable external clock mode 2. - * @note When external clock mode 2 is enabled the counter is clocked by any active edge on the ETRF signal. - * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check - * whether or not a timer instance supports external clock mode2. - * @rmtoll SMCR ECE LL_TIM_EnableExternalClock - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_EnableExternalClock(TIM_TypeDef *TIMx) -{ - SET_BIT(TIMx->SMCR, TIM_SMCR_ECE); -} - -/** - * @brief Disable external clock mode 2. - * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check - * whether or not a timer instance supports external clock mode2. - * @rmtoll SMCR ECE LL_TIM_DisableExternalClock - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_DisableExternalClock(TIM_TypeDef *TIMx) -{ - CLEAR_BIT(TIMx->SMCR, TIM_SMCR_ECE); -} - -/** - * @brief Indicate whether external clock mode 2 is enabled. - * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check - * whether or not a timer instance supports external clock mode2. - * @rmtoll SMCR ECE LL_TIM_IsEnabledExternalClock - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsEnabledExternalClock(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->SMCR, TIM_SMCR_ECE) == (TIM_SMCR_ECE)) ? 1UL : 0UL); -} - -/** - * @brief Set the clock source of the counter clock. - * @note when selected clock source is external clock mode 1, the timer input - * the external clock is applied is selected by calling the @ref LL_TIM_SetTriggerInput() - * function. This timer input must be configured by calling - * the @ref LL_TIM_IC_Config() function. - * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(TIMx) can be used to check - * whether or not a timer instance supports external clock mode1. - * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check - * whether or not a timer instance supports external clock mode2. - * @rmtoll SMCR SMS LL_TIM_SetClockSource\n - * SMCR ECE LL_TIM_SetClockSource - * @param TIMx Timer instance - * @param ClockSource This parameter can be one of the following values: - * @arg @ref LL_TIM_CLOCKSOURCE_INTERNAL - * @arg @ref LL_TIM_CLOCKSOURCE_EXT_MODE1 - * @arg @ref LL_TIM_CLOCKSOURCE_EXT_MODE2 - * @retval None - */ -__STATIC_INLINE void LL_TIM_SetClockSource(TIM_TypeDef *TIMx, uint32_t ClockSource) -{ - MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS | TIM_SMCR_ECE, ClockSource); -} - -/** - * @brief Set the encoder interface mode. - * @note Macro IS_TIM_ENCODER_INTERFACE_INSTANCE(TIMx) can be used to check - * whether or not a timer instance supports the encoder mode. - * @rmtoll SMCR SMS LL_TIM_SetEncoderMode - * @param TIMx Timer instance - * @param EncoderMode This parameter can be one of the following values: - * @arg @ref LL_TIM_ENCODERMODE_X2_TI1 - * @arg @ref LL_TIM_ENCODERMODE_X2_TI2 - * @arg @ref LL_TIM_ENCODERMODE_X4_TI12 - * @retval None - */ -__STATIC_INLINE void LL_TIM_SetEncoderMode(TIM_TypeDef *TIMx, uint32_t EncoderMode) -{ - MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS, EncoderMode); -} - -/** - * @} - */ - -/** @defgroup TIM_LL_EF_Timer_Synchronization Timer synchronisation configuration - * @{ - */ -/** - * @brief Set the trigger output (TRGO) used for timer synchronization . - * @note Macro IS_TIM_MASTER_INSTANCE(TIMx) can be used to check - * whether or not a timer instance can operate as a master timer. - * @rmtoll CR2 MMS LL_TIM_SetTriggerOutput - * @param TIMx Timer instance - * @param TimerSynchronization This parameter can be one of the following values: - * @arg @ref LL_TIM_TRGO_RESET - * @arg @ref LL_TIM_TRGO_ENABLE - * @arg @ref LL_TIM_TRGO_UPDATE - * @arg @ref LL_TIM_TRGO_CC1IF - * @arg @ref LL_TIM_TRGO_OC1REF - * @arg @ref LL_TIM_TRGO_OC2REF - * @arg @ref LL_TIM_TRGO_OC3REF - * @arg @ref LL_TIM_TRGO_OC4REF - * @retval None - */ -__STATIC_INLINE void LL_TIM_SetTriggerOutput(TIM_TypeDef *TIMx, uint32_t TimerSynchronization) -{ - MODIFY_REG(TIMx->CR2, TIM_CR2_MMS, TimerSynchronization); -} - -/** - * @brief Set the synchronization mode of a slave timer. - * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not - * a timer instance can operate as a slave timer. - * @rmtoll SMCR SMS LL_TIM_SetSlaveMode - * @param TIMx Timer instance - * @param SlaveMode This parameter can be one of the following values: - * @arg @ref LL_TIM_SLAVEMODE_DISABLED - * @arg @ref LL_TIM_SLAVEMODE_RESET - * @arg @ref LL_TIM_SLAVEMODE_GATED - * @arg @ref LL_TIM_SLAVEMODE_TRIGGER - * @retval None - */ -__STATIC_INLINE void LL_TIM_SetSlaveMode(TIM_TypeDef *TIMx, uint32_t SlaveMode) -{ - MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS, SlaveMode); -} - -/** - * @brief Set the selects the trigger input to be used to synchronize the counter. - * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not - * a timer instance can operate as a slave timer. - * @rmtoll SMCR TS LL_TIM_SetTriggerInput - * @param TIMx Timer instance - * @param TriggerInput This parameter can be one of the following values: - * @arg @ref LL_TIM_TS_ITR0 - * @arg @ref LL_TIM_TS_ITR1 - * @arg @ref LL_TIM_TS_ITR2 - * @arg @ref LL_TIM_TS_ITR3 - * @arg @ref LL_TIM_TS_TI1F_ED - * @arg @ref LL_TIM_TS_TI1FP1 - * @arg @ref LL_TIM_TS_TI2FP2 - * @arg @ref LL_TIM_TS_ETRF - * @retval None - */ -__STATIC_INLINE void LL_TIM_SetTriggerInput(TIM_TypeDef *TIMx, uint32_t TriggerInput) -{ - MODIFY_REG(TIMx->SMCR, TIM_SMCR_TS, TriggerInput); -} - -/** - * @brief Enable the Master/Slave mode. - * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not - * a timer instance can operate as a slave timer. - * @rmtoll SMCR MSM LL_TIM_EnableMasterSlaveMode - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_EnableMasterSlaveMode(TIM_TypeDef *TIMx) -{ - SET_BIT(TIMx->SMCR, TIM_SMCR_MSM); -} - -/** - * @brief Disable the Master/Slave mode. - * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not - * a timer instance can operate as a slave timer. - * @rmtoll SMCR MSM LL_TIM_DisableMasterSlaveMode - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_DisableMasterSlaveMode(TIM_TypeDef *TIMx) -{ - CLEAR_BIT(TIMx->SMCR, TIM_SMCR_MSM); -} - -/** - * @brief Indicates whether the Master/Slave mode is enabled. - * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not - * a timer instance can operate as a slave timer. - * @rmtoll SMCR MSM LL_TIM_IsEnabledMasterSlaveMode - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsEnabledMasterSlaveMode(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->SMCR, TIM_SMCR_MSM) == (TIM_SMCR_MSM)) ? 1UL : 0UL); -} - -/** - * @brief Configure the external trigger (ETR) input. - * @note Macro IS_TIM_ETR_INSTANCE(TIMx) can be used to check whether or not - * a timer instance provides an external trigger input. - * @rmtoll SMCR ETP LL_TIM_ConfigETR\n - * SMCR ETPS LL_TIM_ConfigETR\n - * SMCR ETF LL_TIM_ConfigETR - * @param TIMx Timer instance - * @param ETRPolarity This parameter can be one of the following values: - * @arg @ref LL_TIM_ETR_POLARITY_NONINVERTED - * @arg @ref LL_TIM_ETR_POLARITY_INVERTED - * @param ETRPrescaler This parameter can be one of the following values: - * @arg @ref LL_TIM_ETR_PRESCALER_DIV1 - * @arg @ref LL_TIM_ETR_PRESCALER_DIV2 - * @arg @ref LL_TIM_ETR_PRESCALER_DIV4 - * @arg @ref LL_TIM_ETR_PRESCALER_DIV8 - * @param ETRFilter This parameter can be one of the following values: - * @arg @ref LL_TIM_ETR_FILTER_FDIV1 - * @arg @ref LL_TIM_ETR_FILTER_FDIV1_N2 - * @arg @ref LL_TIM_ETR_FILTER_FDIV1_N4 - * @arg @ref LL_TIM_ETR_FILTER_FDIV1_N8 - * @arg @ref LL_TIM_ETR_FILTER_FDIV2_N6 - * @arg @ref LL_TIM_ETR_FILTER_FDIV2_N8 - * @arg @ref LL_TIM_ETR_FILTER_FDIV4_N6 - * @arg @ref LL_TIM_ETR_FILTER_FDIV4_N8 - * @arg @ref LL_TIM_ETR_FILTER_FDIV8_N6 - * @arg @ref LL_TIM_ETR_FILTER_FDIV8_N8 - * @arg @ref LL_TIM_ETR_FILTER_FDIV16_N5 - * @arg @ref LL_TIM_ETR_FILTER_FDIV16_N6 - * @arg @ref LL_TIM_ETR_FILTER_FDIV16_N8 - * @arg @ref LL_TIM_ETR_FILTER_FDIV32_N5 - * @arg @ref LL_TIM_ETR_FILTER_FDIV32_N6 - * @arg @ref LL_TIM_ETR_FILTER_FDIV32_N8 - * @retval None - */ -__STATIC_INLINE void LL_TIM_ConfigETR(TIM_TypeDef *TIMx, uint32_t ETRPolarity, uint32_t ETRPrescaler, - uint32_t ETRFilter) -{ - MODIFY_REG(TIMx->SMCR, TIM_SMCR_ETP | TIM_SMCR_ETPS | TIM_SMCR_ETF, ETRPolarity | ETRPrescaler | ETRFilter); -} - -/** - * @} - */ - -/** @defgroup TIM_LL_EF_Break_Function Break function configuration - * @{ - */ -/** - * @brief Enable the break function. - * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not - * a timer instance provides a break input. - * @rmtoll BDTR BKE LL_TIM_EnableBRK - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_EnableBRK(TIM_TypeDef *TIMx) -{ - __IO uint32_t tmpreg; - SET_BIT(TIMx->BDTR, TIM_BDTR_BKE); - /* Note: Any write operation to this bit takes a delay of 1 APB clock cycle to become effective. */ - tmpreg = READ_REG(TIMx->BDTR); - (void)(tmpreg); -} - -/** - * @brief Disable the break function. - * @rmtoll BDTR BKE LL_TIM_DisableBRK - * @param TIMx Timer instance - * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not - * a timer instance provides a break input. - * @retval None - */ -__STATIC_INLINE void LL_TIM_DisableBRK(TIM_TypeDef *TIMx) -{ - __IO uint32_t tmpreg; - CLEAR_BIT(TIMx->BDTR, TIM_BDTR_BKE); - /* Note: Any write operation to this bit takes a delay of 1 APB clock cycle to become effective. */ - tmpreg = READ_REG(TIMx->BDTR); - (void)(tmpreg); -} - -/** - * @brief Configure the break input. - * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not - * a timer instance provides a break input. - * @rmtoll BDTR BKP LL_TIM_ConfigBRK - * @param TIMx Timer instance - * @param BreakPolarity This parameter can be one of the following values: - * @arg @ref LL_TIM_BREAK_POLARITY_LOW - * @arg @ref LL_TIM_BREAK_POLARITY_HIGH - * @retval None - */ -__STATIC_INLINE void LL_TIM_ConfigBRK(TIM_TypeDef *TIMx, uint32_t BreakPolarity) -{ - __IO uint32_t tmpreg; - MODIFY_REG(TIMx->BDTR, TIM_BDTR_BKP, BreakPolarity); - /* Note: Any write operation to BKP bit takes a delay of 1 APB clock cycle to become effective. */ - tmpreg = READ_REG(TIMx->BDTR); - (void)(tmpreg); -} - -/** - * @brief Select the outputs off state (enabled v.s. disabled) in Idle and Run modes. - * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not - * a timer instance provides a break input. - * @rmtoll BDTR OSSI LL_TIM_SetOffStates\n - * BDTR OSSR LL_TIM_SetOffStates - * @param TIMx Timer instance - * @param OffStateIdle This parameter can be one of the following values: - * @arg @ref LL_TIM_OSSI_DISABLE - * @arg @ref LL_TIM_OSSI_ENABLE - * @param OffStateRun This parameter can be one of the following values: - * @arg @ref LL_TIM_OSSR_DISABLE - * @arg @ref LL_TIM_OSSR_ENABLE - * @retval None - */ -__STATIC_INLINE void LL_TIM_SetOffStates(TIM_TypeDef *TIMx, uint32_t OffStateIdle, uint32_t OffStateRun) -{ - MODIFY_REG(TIMx->BDTR, TIM_BDTR_OSSI | TIM_BDTR_OSSR, OffStateIdle | OffStateRun); -} - -/** - * @brief Enable automatic output (MOE can be set by software or automatically when a break input is active). - * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not - * a timer instance provides a break input. - * @rmtoll BDTR AOE LL_TIM_EnableAutomaticOutput - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_EnableAutomaticOutput(TIM_TypeDef *TIMx) -{ - SET_BIT(TIMx->BDTR, TIM_BDTR_AOE); -} - -/** - * @brief Disable automatic output (MOE can be set only by software). - * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not - * a timer instance provides a break input. - * @rmtoll BDTR AOE LL_TIM_DisableAutomaticOutput - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_DisableAutomaticOutput(TIM_TypeDef *TIMx) -{ - CLEAR_BIT(TIMx->BDTR, TIM_BDTR_AOE); -} - -/** - * @brief Indicate whether automatic output is enabled. - * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not - * a timer instance provides a break input. - * @rmtoll BDTR AOE LL_TIM_IsEnabledAutomaticOutput - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsEnabledAutomaticOutput(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->BDTR, TIM_BDTR_AOE) == (TIM_BDTR_AOE)) ? 1UL : 0UL); -} - -/** - * @brief Enable the outputs (set the MOE bit in TIMx_BDTR register). - * @note The MOE bit in TIMx_BDTR register allows to enable /disable the outputs by - * software and is reset in case of break or break2 event - * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not - * a timer instance provides a break input. - * @rmtoll BDTR MOE LL_TIM_EnableAllOutputs - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_EnableAllOutputs(TIM_TypeDef *TIMx) -{ - SET_BIT(TIMx->BDTR, TIM_BDTR_MOE); -} - -/** - * @brief Disable the outputs (reset the MOE bit in TIMx_BDTR register). - * @note The MOE bit in TIMx_BDTR register allows to enable /disable the outputs by - * software and is reset in case of break or break2 event. - * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not - * a timer instance provides a break input. - * @rmtoll BDTR MOE LL_TIM_DisableAllOutputs - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_DisableAllOutputs(TIM_TypeDef *TIMx) -{ - CLEAR_BIT(TIMx->BDTR, TIM_BDTR_MOE); -} - -/** - * @brief Indicates whether outputs are enabled. - * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not - * a timer instance provides a break input. - * @rmtoll BDTR MOE LL_TIM_IsEnabledAllOutputs - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsEnabledAllOutputs(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->BDTR, TIM_BDTR_MOE) == (TIM_BDTR_MOE)) ? 1UL : 0UL); -} - -/** - * @} - */ - -/** @defgroup TIM_LL_EF_DMA_Burst_Mode DMA burst mode configuration - * @{ - */ -/** - * @brief Configures the timer DMA burst feature. - * @note Macro IS_TIM_DMABURST_INSTANCE(TIMx) can be used to check whether or - * not a timer instance supports the DMA burst mode. - * @rmtoll DCR DBL LL_TIM_ConfigDMABurst\n - * DCR DBA LL_TIM_ConfigDMABurst - * @param TIMx Timer instance - * @param DMABurstBaseAddress This parameter can be one of the following values: - * @arg @ref LL_TIM_DMABURST_BASEADDR_CR1 - * @arg @ref LL_TIM_DMABURST_BASEADDR_CR2 - * @arg @ref LL_TIM_DMABURST_BASEADDR_SMCR - * @arg @ref LL_TIM_DMABURST_BASEADDR_DIER - * @arg @ref LL_TIM_DMABURST_BASEADDR_SR - * @arg @ref LL_TIM_DMABURST_BASEADDR_EGR - * @arg @ref LL_TIM_DMABURST_BASEADDR_CCMR1 - * @arg @ref LL_TIM_DMABURST_BASEADDR_CCMR2 - * @arg @ref LL_TIM_DMABURST_BASEADDR_CCER - * @arg @ref LL_TIM_DMABURST_BASEADDR_CNT - * @arg @ref LL_TIM_DMABURST_BASEADDR_PSC - * @arg @ref LL_TIM_DMABURST_BASEADDR_ARR - * @arg @ref LL_TIM_DMABURST_BASEADDR_RCR - * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR1 - * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR2 - * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR3 - * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR4 - * @arg @ref LL_TIM_DMABURST_BASEADDR_BDTR - * @param DMABurstLength This parameter can be one of the following values: - * @arg @ref LL_TIM_DMABURST_LENGTH_1TRANSFER - * @arg @ref LL_TIM_DMABURST_LENGTH_2TRANSFERS - * @arg @ref LL_TIM_DMABURST_LENGTH_3TRANSFERS - * @arg @ref LL_TIM_DMABURST_LENGTH_4TRANSFERS - * @arg @ref LL_TIM_DMABURST_LENGTH_5TRANSFERS - * @arg @ref LL_TIM_DMABURST_LENGTH_6TRANSFERS - * @arg @ref LL_TIM_DMABURST_LENGTH_7TRANSFERS - * @arg @ref LL_TIM_DMABURST_LENGTH_8TRANSFERS - * @arg @ref LL_TIM_DMABURST_LENGTH_9TRANSFERS - * @arg @ref LL_TIM_DMABURST_LENGTH_10TRANSFERS - * @arg @ref LL_TIM_DMABURST_LENGTH_11TRANSFERS - * @arg @ref LL_TIM_DMABURST_LENGTH_12TRANSFERS - * @arg @ref LL_TIM_DMABURST_LENGTH_13TRANSFERS - * @arg @ref LL_TIM_DMABURST_LENGTH_14TRANSFERS - * @arg @ref LL_TIM_DMABURST_LENGTH_15TRANSFERS - * @arg @ref LL_TIM_DMABURST_LENGTH_16TRANSFERS - * @arg @ref LL_TIM_DMABURST_LENGTH_17TRANSFERS - * @arg @ref LL_TIM_DMABURST_LENGTH_18TRANSFERS - * @retval None - */ -__STATIC_INLINE void LL_TIM_ConfigDMABurst(TIM_TypeDef *TIMx, uint32_t DMABurstBaseAddress, uint32_t DMABurstLength) -{ - MODIFY_REG(TIMx->DCR, (TIM_DCR_DBL | TIM_DCR_DBA), (DMABurstBaseAddress | DMABurstLength)); -} - -/** - * @} - */ - - -/** - * @} - */ - -/** @defgroup TIM_LL_EF_FLAG_Management FLAG-Management - * @{ - */ -/** - * @brief Clear the update interrupt flag (UIF). - * @rmtoll SR UIF LL_TIM_ClearFlag_UPDATE - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_ClearFlag_UPDATE(TIM_TypeDef *TIMx) -{ - WRITE_REG(TIMx->SR, ~(TIM_SR_UIF)); -} - -/** - * @brief Indicate whether update interrupt flag (UIF) is set (update interrupt is pending). - * @rmtoll SR UIF LL_TIM_IsActiveFlag_UPDATE - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_UPDATE(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->SR, TIM_SR_UIF) == (TIM_SR_UIF)) ? 1UL : 0UL); -} - -/** - * @brief Clear the Capture/Compare 1 interrupt flag (CC1F). - * @rmtoll SR CC1IF LL_TIM_ClearFlag_CC1 - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_ClearFlag_CC1(TIM_TypeDef *TIMx) -{ - WRITE_REG(TIMx->SR, ~(TIM_SR_CC1IF)); -} - -/** - * @brief Indicate whether Capture/Compare 1 interrupt flag (CC1F) is set (Capture/Compare 1 interrupt is pending). - * @rmtoll SR CC1IF LL_TIM_IsActiveFlag_CC1 - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC1(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->SR, TIM_SR_CC1IF) == (TIM_SR_CC1IF)) ? 1UL : 0UL); -} - -/** - * @brief Clear the Capture/Compare 2 interrupt flag (CC2F). - * @rmtoll SR CC2IF LL_TIM_ClearFlag_CC2 - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_ClearFlag_CC2(TIM_TypeDef *TIMx) -{ - WRITE_REG(TIMx->SR, ~(TIM_SR_CC2IF)); -} - -/** - * @brief Indicate whether Capture/Compare 2 interrupt flag (CC2F) is set (Capture/Compare 2 interrupt is pending). - * @rmtoll SR CC2IF LL_TIM_IsActiveFlag_CC2 - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC2(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->SR, TIM_SR_CC2IF) == (TIM_SR_CC2IF)) ? 1UL : 0UL); -} - -/** - * @brief Clear the Capture/Compare 3 interrupt flag (CC3F). - * @rmtoll SR CC3IF LL_TIM_ClearFlag_CC3 - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_ClearFlag_CC3(TIM_TypeDef *TIMx) -{ - WRITE_REG(TIMx->SR, ~(TIM_SR_CC3IF)); -} - -/** - * @brief Indicate whether Capture/Compare 3 interrupt flag (CC3F) is set (Capture/Compare 3 interrupt is pending). - * @rmtoll SR CC3IF LL_TIM_IsActiveFlag_CC3 - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC3(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->SR, TIM_SR_CC3IF) == (TIM_SR_CC3IF)) ? 1UL : 0UL); -} - -/** - * @brief Clear the Capture/Compare 4 interrupt flag (CC4F). - * @rmtoll SR CC4IF LL_TIM_ClearFlag_CC4 - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_ClearFlag_CC4(TIM_TypeDef *TIMx) -{ - WRITE_REG(TIMx->SR, ~(TIM_SR_CC4IF)); -} - -/** - * @brief Indicate whether Capture/Compare 4 interrupt flag (CC4F) is set (Capture/Compare 4 interrupt is pending). - * @rmtoll SR CC4IF LL_TIM_IsActiveFlag_CC4 - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC4(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->SR, TIM_SR_CC4IF) == (TIM_SR_CC4IF)) ? 1UL : 0UL); -} - -/** - * @brief Clear the commutation interrupt flag (COMIF). - * @rmtoll SR COMIF LL_TIM_ClearFlag_COM - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_ClearFlag_COM(TIM_TypeDef *TIMx) -{ - WRITE_REG(TIMx->SR, ~(TIM_SR_COMIF)); -} - -/** - * @brief Indicate whether commutation interrupt flag (COMIF) is set (commutation interrupt is pending). - * @rmtoll SR COMIF LL_TIM_IsActiveFlag_COM - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_COM(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->SR, TIM_SR_COMIF) == (TIM_SR_COMIF)) ? 1UL : 0UL); -} - -/** - * @brief Clear the trigger interrupt flag (TIF). - * @rmtoll SR TIF LL_TIM_ClearFlag_TRIG - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_ClearFlag_TRIG(TIM_TypeDef *TIMx) -{ - WRITE_REG(TIMx->SR, ~(TIM_SR_TIF)); -} - -/** - * @brief Indicate whether trigger interrupt flag (TIF) is set (trigger interrupt is pending). - * @rmtoll SR TIF LL_TIM_IsActiveFlag_TRIG - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_TRIG(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->SR, TIM_SR_TIF) == (TIM_SR_TIF)) ? 1UL : 0UL); -} - -/** - * @brief Clear the break interrupt flag (BIF). - * @rmtoll SR BIF LL_TIM_ClearFlag_BRK - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_ClearFlag_BRK(TIM_TypeDef *TIMx) -{ - WRITE_REG(TIMx->SR, ~(TIM_SR_BIF)); -} - -/** - * @brief Indicate whether break interrupt flag (BIF) is set (break interrupt is pending). - * @rmtoll SR BIF LL_TIM_IsActiveFlag_BRK - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_BRK(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->SR, TIM_SR_BIF) == (TIM_SR_BIF)) ? 1UL : 0UL); -} - -/** - * @brief Clear the Capture/Compare 1 over-capture interrupt flag (CC1OF). - * @rmtoll SR CC1OF LL_TIM_ClearFlag_CC1OVR - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_ClearFlag_CC1OVR(TIM_TypeDef *TIMx) -{ - WRITE_REG(TIMx->SR, ~(TIM_SR_CC1OF)); -} - -/** - * @brief Indicate whether Capture/Compare 1 over-capture interrupt flag (CC1OF) is set (Capture/Compare 1 interrupt is pending). - * @rmtoll SR CC1OF LL_TIM_IsActiveFlag_CC1OVR - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC1OVR(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->SR, TIM_SR_CC1OF) == (TIM_SR_CC1OF)) ? 1UL : 0UL); -} - -/** - * @brief Clear the Capture/Compare 2 over-capture interrupt flag (CC2OF). - * @rmtoll SR CC2OF LL_TIM_ClearFlag_CC2OVR - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_ClearFlag_CC2OVR(TIM_TypeDef *TIMx) -{ - WRITE_REG(TIMx->SR, ~(TIM_SR_CC2OF)); -} - -/** - * @brief Indicate whether Capture/Compare 2 over-capture interrupt flag (CC2OF) is set (Capture/Compare 2 over-capture interrupt is pending). - * @rmtoll SR CC2OF LL_TIM_IsActiveFlag_CC2OVR - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC2OVR(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->SR, TIM_SR_CC2OF) == (TIM_SR_CC2OF)) ? 1UL : 0UL); -} - -/** - * @brief Clear the Capture/Compare 3 over-capture interrupt flag (CC3OF). - * @rmtoll SR CC3OF LL_TIM_ClearFlag_CC3OVR - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_ClearFlag_CC3OVR(TIM_TypeDef *TIMx) -{ - WRITE_REG(TIMx->SR, ~(TIM_SR_CC3OF)); -} - -/** - * @brief Indicate whether Capture/Compare 3 over-capture interrupt flag (CC3OF) is set (Capture/Compare 3 over-capture interrupt is pending). - * @rmtoll SR CC3OF LL_TIM_IsActiveFlag_CC3OVR - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC3OVR(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->SR, TIM_SR_CC3OF) == (TIM_SR_CC3OF)) ? 1UL : 0UL); -} - -/** - * @brief Clear the Capture/Compare 4 over-capture interrupt flag (CC4OF). - * @rmtoll SR CC4OF LL_TIM_ClearFlag_CC4OVR - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_ClearFlag_CC4OVR(TIM_TypeDef *TIMx) -{ - WRITE_REG(TIMx->SR, ~(TIM_SR_CC4OF)); -} - -/** - * @brief Indicate whether Capture/Compare 4 over-capture interrupt flag (CC4OF) is set (Capture/Compare 4 over-capture interrupt is pending). - * @rmtoll SR CC4OF LL_TIM_IsActiveFlag_CC4OVR - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC4OVR(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->SR, TIM_SR_CC4OF) == (TIM_SR_CC4OF)) ? 1UL : 0UL); -} - -/** - * @} - */ - -/** @defgroup TIM_LL_EF_IT_Management IT-Management - * @{ - */ -/** - * @brief Enable update interrupt (UIE). - * @rmtoll DIER UIE LL_TIM_EnableIT_UPDATE - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_EnableIT_UPDATE(TIM_TypeDef *TIMx) -{ - SET_BIT(TIMx->DIER, TIM_DIER_UIE); -} - -/** - * @brief Disable update interrupt (UIE). - * @rmtoll DIER UIE LL_TIM_DisableIT_UPDATE - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_DisableIT_UPDATE(TIM_TypeDef *TIMx) -{ - CLEAR_BIT(TIMx->DIER, TIM_DIER_UIE); -} - -/** - * @brief Indicates whether the update interrupt (UIE) is enabled. - * @rmtoll DIER UIE LL_TIM_IsEnabledIT_UPDATE - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_UPDATE(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->DIER, TIM_DIER_UIE) == (TIM_DIER_UIE)) ? 1UL : 0UL); -} - -/** - * @brief Enable capture/compare 1 interrupt (CC1IE). - * @rmtoll DIER CC1IE LL_TIM_EnableIT_CC1 - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_EnableIT_CC1(TIM_TypeDef *TIMx) -{ - SET_BIT(TIMx->DIER, TIM_DIER_CC1IE); -} - -/** - * @brief Disable capture/compare 1 interrupt (CC1IE). - * @rmtoll DIER CC1IE LL_TIM_DisableIT_CC1 - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_DisableIT_CC1(TIM_TypeDef *TIMx) -{ - CLEAR_BIT(TIMx->DIER, TIM_DIER_CC1IE); -} - -/** - * @brief Indicates whether the capture/compare 1 interrupt (CC1IE) is enabled. - * @rmtoll DIER CC1IE LL_TIM_IsEnabledIT_CC1 - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC1(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->DIER, TIM_DIER_CC1IE) == (TIM_DIER_CC1IE)) ? 1UL : 0UL); -} - -/** - * @brief Enable capture/compare 2 interrupt (CC2IE). - * @rmtoll DIER CC2IE LL_TIM_EnableIT_CC2 - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_EnableIT_CC2(TIM_TypeDef *TIMx) -{ - SET_BIT(TIMx->DIER, TIM_DIER_CC2IE); -} - -/** - * @brief Disable capture/compare 2 interrupt (CC2IE). - * @rmtoll DIER CC2IE LL_TIM_DisableIT_CC2 - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_DisableIT_CC2(TIM_TypeDef *TIMx) -{ - CLEAR_BIT(TIMx->DIER, TIM_DIER_CC2IE); -} - -/** - * @brief Indicates whether the capture/compare 2 interrupt (CC2IE) is enabled. - * @rmtoll DIER CC2IE LL_TIM_IsEnabledIT_CC2 - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC2(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->DIER, TIM_DIER_CC2IE) == (TIM_DIER_CC2IE)) ? 1UL : 0UL); -} - -/** - * @brief Enable capture/compare 3 interrupt (CC3IE). - * @rmtoll DIER CC3IE LL_TIM_EnableIT_CC3 - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_EnableIT_CC3(TIM_TypeDef *TIMx) -{ - SET_BIT(TIMx->DIER, TIM_DIER_CC3IE); -} - -/** - * @brief Disable capture/compare 3 interrupt (CC3IE). - * @rmtoll DIER CC3IE LL_TIM_DisableIT_CC3 - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_DisableIT_CC3(TIM_TypeDef *TIMx) -{ - CLEAR_BIT(TIMx->DIER, TIM_DIER_CC3IE); -} - -/** - * @brief Indicates whether the capture/compare 3 interrupt (CC3IE) is enabled. - * @rmtoll DIER CC3IE LL_TIM_IsEnabledIT_CC3 - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC3(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->DIER, TIM_DIER_CC3IE) == (TIM_DIER_CC3IE)) ? 1UL : 0UL); -} - -/** - * @brief Enable capture/compare 4 interrupt (CC4IE). - * @rmtoll DIER CC4IE LL_TIM_EnableIT_CC4 - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_EnableIT_CC4(TIM_TypeDef *TIMx) -{ - SET_BIT(TIMx->DIER, TIM_DIER_CC4IE); -} - -/** - * @brief Disable capture/compare 4 interrupt (CC4IE). - * @rmtoll DIER CC4IE LL_TIM_DisableIT_CC4 - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_DisableIT_CC4(TIM_TypeDef *TIMx) -{ - CLEAR_BIT(TIMx->DIER, TIM_DIER_CC4IE); -} - -/** - * @brief Indicates whether the capture/compare 4 interrupt (CC4IE) is enabled. - * @rmtoll DIER CC4IE LL_TIM_IsEnabledIT_CC4 - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC4(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->DIER, TIM_DIER_CC4IE) == (TIM_DIER_CC4IE)) ? 1UL : 0UL); -} - -/** - * @brief Enable commutation interrupt (COMIE). - * @rmtoll DIER COMIE LL_TIM_EnableIT_COM - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_EnableIT_COM(TIM_TypeDef *TIMx) -{ - SET_BIT(TIMx->DIER, TIM_DIER_COMIE); -} - -/** - * @brief Disable commutation interrupt (COMIE). - * @rmtoll DIER COMIE LL_TIM_DisableIT_COM - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_DisableIT_COM(TIM_TypeDef *TIMx) -{ - CLEAR_BIT(TIMx->DIER, TIM_DIER_COMIE); -} - -/** - * @brief Indicates whether the commutation interrupt (COMIE) is enabled. - * @rmtoll DIER COMIE LL_TIM_IsEnabledIT_COM - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_COM(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->DIER, TIM_DIER_COMIE) == (TIM_DIER_COMIE)) ? 1UL : 0UL); -} - -/** - * @brief Enable trigger interrupt (TIE). - * @rmtoll DIER TIE LL_TIM_EnableIT_TRIG - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_EnableIT_TRIG(TIM_TypeDef *TIMx) -{ - SET_BIT(TIMx->DIER, TIM_DIER_TIE); -} - -/** - * @brief Disable trigger interrupt (TIE). - * @rmtoll DIER TIE LL_TIM_DisableIT_TRIG - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_DisableIT_TRIG(TIM_TypeDef *TIMx) -{ - CLEAR_BIT(TIMx->DIER, TIM_DIER_TIE); -} - -/** - * @brief Indicates whether the trigger interrupt (TIE) is enabled. - * @rmtoll DIER TIE LL_TIM_IsEnabledIT_TRIG - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_TRIG(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->DIER, TIM_DIER_TIE) == (TIM_DIER_TIE)) ? 1UL : 0UL); -} - -/** - * @brief Enable break interrupt (BIE). - * @rmtoll DIER BIE LL_TIM_EnableIT_BRK - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_EnableIT_BRK(TIM_TypeDef *TIMx) -{ - SET_BIT(TIMx->DIER, TIM_DIER_BIE); -} - -/** - * @brief Disable break interrupt (BIE). - * @rmtoll DIER BIE LL_TIM_DisableIT_BRK - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_DisableIT_BRK(TIM_TypeDef *TIMx) -{ - CLEAR_BIT(TIMx->DIER, TIM_DIER_BIE); -} - -/** - * @brief Indicates whether the break interrupt (BIE) is enabled. - * @rmtoll DIER BIE LL_TIM_IsEnabledIT_BRK - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_BRK(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->DIER, TIM_DIER_BIE) == (TIM_DIER_BIE)) ? 1UL : 0UL); -} - -/** - * @} - */ - -/** @defgroup TIM_LL_EF_DMA_Management DMA-Management - * @{ - */ -/** - * @brief Enable update DMA request (UDE). - * @rmtoll DIER UDE LL_TIM_EnableDMAReq_UPDATE - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_EnableDMAReq_UPDATE(TIM_TypeDef *TIMx) -{ - SET_BIT(TIMx->DIER, TIM_DIER_UDE); -} - -/** - * @brief Disable update DMA request (UDE). - * @rmtoll DIER UDE LL_TIM_DisableDMAReq_UPDATE - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_DisableDMAReq_UPDATE(TIM_TypeDef *TIMx) -{ - CLEAR_BIT(TIMx->DIER, TIM_DIER_UDE); -} - -/** - * @brief Indicates whether the update DMA request (UDE) is enabled. - * @rmtoll DIER UDE LL_TIM_IsEnabledDMAReq_UPDATE - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_UPDATE(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->DIER, TIM_DIER_UDE) == (TIM_DIER_UDE)) ? 1UL : 0UL); -} - -/** - * @brief Enable capture/compare 1 DMA request (CC1DE). - * @rmtoll DIER CC1DE LL_TIM_EnableDMAReq_CC1 - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_EnableDMAReq_CC1(TIM_TypeDef *TIMx) -{ - SET_BIT(TIMx->DIER, TIM_DIER_CC1DE); -} - -/** - * @brief Disable capture/compare 1 DMA request (CC1DE). - * @rmtoll DIER CC1DE LL_TIM_DisableDMAReq_CC1 - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_DisableDMAReq_CC1(TIM_TypeDef *TIMx) -{ - CLEAR_BIT(TIMx->DIER, TIM_DIER_CC1DE); -} - -/** - * @brief Indicates whether the capture/compare 1 DMA request (CC1DE) is enabled. - * @rmtoll DIER CC1DE LL_TIM_IsEnabledDMAReq_CC1 - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC1(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->DIER, TIM_DIER_CC1DE) == (TIM_DIER_CC1DE)) ? 1UL : 0UL); -} - -/** - * @brief Enable capture/compare 2 DMA request (CC2DE). - * @rmtoll DIER CC2DE LL_TIM_EnableDMAReq_CC2 - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_EnableDMAReq_CC2(TIM_TypeDef *TIMx) -{ - SET_BIT(TIMx->DIER, TIM_DIER_CC2DE); -} - -/** - * @brief Disable capture/compare 2 DMA request (CC2DE). - * @rmtoll DIER CC2DE LL_TIM_DisableDMAReq_CC2 - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_DisableDMAReq_CC2(TIM_TypeDef *TIMx) -{ - CLEAR_BIT(TIMx->DIER, TIM_DIER_CC2DE); -} - -/** - * @brief Indicates whether the capture/compare 2 DMA request (CC2DE) is enabled. - * @rmtoll DIER CC2DE LL_TIM_IsEnabledDMAReq_CC2 - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC2(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->DIER, TIM_DIER_CC2DE) == (TIM_DIER_CC2DE)) ? 1UL : 0UL); -} - -/** - * @brief Enable capture/compare 3 DMA request (CC3DE). - * @rmtoll DIER CC3DE LL_TIM_EnableDMAReq_CC3 - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_EnableDMAReq_CC3(TIM_TypeDef *TIMx) -{ - SET_BIT(TIMx->DIER, TIM_DIER_CC3DE); -} - -/** - * @brief Disable capture/compare 3 DMA request (CC3DE). - * @rmtoll DIER CC3DE LL_TIM_DisableDMAReq_CC3 - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_DisableDMAReq_CC3(TIM_TypeDef *TIMx) -{ - CLEAR_BIT(TIMx->DIER, TIM_DIER_CC3DE); -} - -/** - * @brief Indicates whether the capture/compare 3 DMA request (CC3DE) is enabled. - * @rmtoll DIER CC3DE LL_TIM_IsEnabledDMAReq_CC3 - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC3(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->DIER, TIM_DIER_CC3DE) == (TIM_DIER_CC3DE)) ? 1UL : 0UL); -} - -/** - * @brief Enable capture/compare 4 DMA request (CC4DE). - * @rmtoll DIER CC4DE LL_TIM_EnableDMAReq_CC4 - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_EnableDMAReq_CC4(TIM_TypeDef *TIMx) -{ - SET_BIT(TIMx->DIER, TIM_DIER_CC4DE); -} - -/** - * @brief Disable capture/compare 4 DMA request (CC4DE). - * @rmtoll DIER CC4DE LL_TIM_DisableDMAReq_CC4 - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_DisableDMAReq_CC4(TIM_TypeDef *TIMx) -{ - CLEAR_BIT(TIMx->DIER, TIM_DIER_CC4DE); -} - -/** - * @brief Indicates whether the capture/compare 4 DMA request (CC4DE) is enabled. - * @rmtoll DIER CC4DE LL_TIM_IsEnabledDMAReq_CC4 - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC4(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->DIER, TIM_DIER_CC4DE) == (TIM_DIER_CC4DE)) ? 1UL : 0UL); -} - -/** - * @brief Enable commutation DMA request (COMDE). - * @rmtoll DIER COMDE LL_TIM_EnableDMAReq_COM - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_EnableDMAReq_COM(TIM_TypeDef *TIMx) -{ - SET_BIT(TIMx->DIER, TIM_DIER_COMDE); -} - -/** - * @brief Disable commutation DMA request (COMDE). - * @rmtoll DIER COMDE LL_TIM_DisableDMAReq_COM - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_DisableDMAReq_COM(TIM_TypeDef *TIMx) -{ - CLEAR_BIT(TIMx->DIER, TIM_DIER_COMDE); -} - -/** - * @brief Indicates whether the commutation DMA request (COMDE) is enabled. - * @rmtoll DIER COMDE LL_TIM_IsEnabledDMAReq_COM - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_COM(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->DIER, TIM_DIER_COMDE) == (TIM_DIER_COMDE)) ? 1UL : 0UL); -} - -/** - * @brief Enable trigger interrupt (TDE). - * @rmtoll DIER TDE LL_TIM_EnableDMAReq_TRIG - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_EnableDMAReq_TRIG(TIM_TypeDef *TIMx) -{ - SET_BIT(TIMx->DIER, TIM_DIER_TDE); -} - -/** - * @brief Disable trigger interrupt (TDE). - * @rmtoll DIER TDE LL_TIM_DisableDMAReq_TRIG - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_DisableDMAReq_TRIG(TIM_TypeDef *TIMx) -{ - CLEAR_BIT(TIMx->DIER, TIM_DIER_TDE); -} - -/** - * @brief Indicates whether the trigger interrupt (TDE) is enabled. - * @rmtoll DIER TDE LL_TIM_IsEnabledDMAReq_TRIG - * @param TIMx Timer instance - * @retval State of bit (1 or 0). - */ -__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_TRIG(TIM_TypeDef *TIMx) -{ - return ((READ_BIT(TIMx->DIER, TIM_DIER_TDE) == (TIM_DIER_TDE)) ? 1UL : 0UL); -} - -/** - * @} - */ - -/** @defgroup TIM_LL_EF_EVENT_Management EVENT-Management - * @{ - */ -/** - * @brief Generate an update event. - * @rmtoll EGR UG LL_TIM_GenerateEvent_UPDATE - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_GenerateEvent_UPDATE(TIM_TypeDef *TIMx) -{ - SET_BIT(TIMx->EGR, TIM_EGR_UG); -} - -/** - * @brief Generate Capture/Compare 1 event. - * @rmtoll EGR CC1G LL_TIM_GenerateEvent_CC1 - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_GenerateEvent_CC1(TIM_TypeDef *TIMx) -{ - SET_BIT(TIMx->EGR, TIM_EGR_CC1G); -} - -/** - * @brief Generate Capture/Compare 2 event. - * @rmtoll EGR CC2G LL_TIM_GenerateEvent_CC2 - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_GenerateEvent_CC2(TIM_TypeDef *TIMx) -{ - SET_BIT(TIMx->EGR, TIM_EGR_CC2G); -} - -/** - * @brief Generate Capture/Compare 3 event. - * @rmtoll EGR CC3G LL_TIM_GenerateEvent_CC3 - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_GenerateEvent_CC3(TIM_TypeDef *TIMx) -{ - SET_BIT(TIMx->EGR, TIM_EGR_CC3G); -} - -/** - * @brief Generate Capture/Compare 4 event. - * @rmtoll EGR CC4G LL_TIM_GenerateEvent_CC4 - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_GenerateEvent_CC4(TIM_TypeDef *TIMx) -{ - SET_BIT(TIMx->EGR, TIM_EGR_CC4G); -} - -/** - * @brief Generate commutation event. - * @rmtoll EGR COMG LL_TIM_GenerateEvent_COM - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_GenerateEvent_COM(TIM_TypeDef *TIMx) -{ - SET_BIT(TIMx->EGR, TIM_EGR_COMG); -} - -/** - * @brief Generate trigger event. - * @rmtoll EGR TG LL_TIM_GenerateEvent_TRIG - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_GenerateEvent_TRIG(TIM_TypeDef *TIMx) -{ - SET_BIT(TIMx->EGR, TIM_EGR_TG); -} - -/** - * @brief Generate break event. - * @rmtoll EGR BG LL_TIM_GenerateEvent_BRK - * @param TIMx Timer instance - * @retval None - */ -__STATIC_INLINE void LL_TIM_GenerateEvent_BRK(TIM_TypeDef *TIMx) -{ - SET_BIT(TIMx->EGR, TIM_EGR_BG); -} - -/** - * @} - */ - -#if defined(USE_FULL_LL_DRIVER) -/** @defgroup TIM_LL_EF_Init Initialisation and deinitialisation functions - * @{ - */ - -ErrorStatus LL_TIM_DeInit(TIM_TypeDef *TIMx); -void LL_TIM_StructInit(LL_TIM_InitTypeDef *TIM_InitStruct); -ErrorStatus LL_TIM_Init(TIM_TypeDef *TIMx, LL_TIM_InitTypeDef *TIM_InitStruct); -void LL_TIM_OC_StructInit(LL_TIM_OC_InitTypeDef *TIM_OC_InitStruct); -ErrorStatus LL_TIM_OC_Init(TIM_TypeDef *TIMx, uint32_t Channel, LL_TIM_OC_InitTypeDef *TIM_OC_InitStruct); -void LL_TIM_IC_StructInit(LL_TIM_IC_InitTypeDef *TIM_ICInitStruct); -ErrorStatus LL_TIM_IC_Init(TIM_TypeDef *TIMx, uint32_t Channel, LL_TIM_IC_InitTypeDef *TIM_IC_InitStruct); -void LL_TIM_ENCODER_StructInit(LL_TIM_ENCODER_InitTypeDef *TIM_EncoderInitStruct); -ErrorStatus LL_TIM_ENCODER_Init(TIM_TypeDef *TIMx, LL_TIM_ENCODER_InitTypeDef *TIM_EncoderInitStruct); -void LL_TIM_HALLSENSOR_StructInit(LL_TIM_HALLSENSOR_InitTypeDef *TIM_HallSensorInitStruct); -ErrorStatus LL_TIM_HALLSENSOR_Init(TIM_TypeDef *TIMx, LL_TIM_HALLSENSOR_InitTypeDef *TIM_HallSensorInitStruct); -void LL_TIM_BDTR_StructInit(LL_TIM_BDTR_InitTypeDef *TIM_BDTRInitStruct); -ErrorStatus LL_TIM_BDTR_Init(TIM_TypeDef *TIMx, LL_TIM_BDTR_InitTypeDef *TIM_BDTRInitStruct); -/** - * @} - */ -#endif /* USE_FULL_LL_DRIVER */ - -/** - * @} - */ - -/** - * @} - */ - -#endif /* TIM1 || TIM2 || TIM3 || TIM4 || TIM5 || TIM6 || TIM7 || TIM8 || TIM9 || TIM10 || TIM11 || TIM12 || TIM13 || TIM14 || TIM15 || TIM16 || TIM17 */ - -/** - * @} - */ - -#ifdef __cplusplus -} -#endif - -#endif /* __STM32F1xx_LL_TIM_H */ -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/Inc/config.h b/Inc/config.h deleted file mode 100644 index 59f6a113..00000000 --- a/Inc/config.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * config.h - * - * Automatically created by Lishui Parameter Configurator - * Author: stancecoke - */ - -#ifndef CONFIG_H_ -#define CONFIG_H_ -#include "stdint.h" -#define DISPLAY_TYPE_EBiCS (1<<5) // King-Meter 618U protocol (KM5s, EBS-LCD2, J-LCD, SW-LCD) -#define DISPLAY_TYPE_KINGMETER_618U (1<<3) // King-Meter 618U protocol (KM5s, EBS-LCD2, J-LCD, SW-LCD) -#define DISPLAY_TYPE_KINGMETER_901U (1<<4) // King-Meter 901U protocol (KM5s) -#define DISPLAY_TYPE_KINGMETER (DISPLAY_TYPE_KINGMETER_618U|DISPLAY_TYPE_KINGMETER_901U) -#define DISPLAY_TYPE_BAFANG (1<<2) // For 'Blaupunkt' Display of Prophete Entdecker -#define DISPLAY_TYPE_KUNTENG (1<<1) // For ASCII-Output in Debug mode -#define DISPLAY_TYPE_DEBUG (1<<0) // For ASCII-Output in Debug mode); - -#define TRIGGER_OFFSET_ADC 50 -#define _T 2028 -#define TRIGGER_DEFAULT 2020 -#define CAL_BAT_V 256 -#define CAL_V 15LL<<8 -#define CAL_I 38LL<<8 -#define INDUCTANCE 6LL -#define RESISTANCE 40LL -#define FLUX_LINKAGE 1200LL -#define GAMMA 9LL -#define BATTERY_LEVEL_1 323000 -#define BATTERY_LEVEL_2 329000 -#define BATTERY_LEVEL_3 344000 -#define BATTERY_LEVEL_4 368000 -#define BATTERY_LEVEL_5 380000 -#define P_FACTOR_I_Q 1 -#define I_FACTOR_I_Q 0.01 -#define P_FACTOR_I_D 1 -#define I_FACTOR_I_D 0.01 -#define TS_COEF 30000 -#define PAS_TIMEOUT 8000 -#define RAMP_END 1600 -#define THROTTLE_OFFSET 1250 -#define THROTTLE_MAX 3100 -#define WHEEL_CIRCUMFERENCE 2200 -#define GEAR_RATIO 60 -#define SPEEDLIMIT 25 -#define PULSES_PER_REVOLUTION 1 -#define PH_CURRENT_MAX 500 -#define SPEC_ANGLE -167026406L //BionX IGH3 -143165476 -//#define DIRDET -#define FRAC_HIGH 30 -#define FRAC_LOW 15 -//#define TS_MODE -#define DISPLAY_TYPE DISPLAY_TYPE_DEBUG -#define REVERSE 0 -//#define FAST_LOOP_LOG -//#define DISABLE_DYNAMIC_ADC -#endif /* CONFIG_H_ */ diff --git a/Inc/display_bafang.h b/Inc/display_bafang.h deleted file mode 100644 index 18932432..00000000 --- a/Inc/display_bafang.h +++ /dev/null @@ -1,116 +0,0 @@ -/* -Library for Bafang BBS01/BBS02 Displays (C965) - -Copyright © 2016 Jens Kießling (jenskiessling@gmail.com) -inspired by Kingmeter Library (Michael Fabry) - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . - -*/ - - -#ifndef BAFANG_H -#define BAFANG_H - - -// Includes -#include "config.h" - -#if (DISPLAY_TYPE == DISPLAY_TYPE_BAFANG) - - - -// Definitions -#define BF_CMD_STARTREQUEST 17 -#define BF_CMD_STARTINFO 22 -#define BF_CMD_LEVEL 11 -#define BF_CMD_LIGHT 26 -#define BF_CMD_WHEELDIAM 31 -#define BF_CMD_GETSPEED 32 -#define BF_CMD_GETERROR 8 -#define BF_CMD_GETBAT 17 -#define BF_CMD_GETPOWER 10 -#define BF_CMD_GET2 49 - -#define BF_LIGHTON 241 - -#define BF_MAX_RXBUFF 6 -#define BF_MAX_TXBUFF 3 - -#define BF_LEVEL0 0 -#define BF_LEVEL1 11 //1 -#define BF_LEVEL2 13 //11 -#define BF_LEVEL3 21 //12 -#define BF_LEVEL4 23 //13 -#define BF_LEVEL5 3 //2 -#define BF_LEVEL6 27 //21 -#define BF_LEVEL7 28//22 -#define BF_LEVEL8 29 //23 -#define BF_LEVEL9 30 //3 -#define BF_PUSHASSIST 6 - -#define BF_DISPLAYTIMEOUT 160 - -typedef struct -{ - // Parameters received from display in operation mode: - uint8_t AssistLevel; // 0..9 Power Assist Level - uint8_t Headlight; // BF_HEADLIGHT_OFF / BF_HEADLIGHT_ON - uint8_t PushAssist; // BF_PUSHASSIST_OFF / BF_PUSHASSIST_ON - uint16_t Wheeldiameter; // Wheel Diameter -}RX_PARAM_t; - -typedef struct -{ - // Parameters to be send to display in operation mode: - uint8_t Battery; // - uint16_t Wheeltime_ms; // Unit:1ms - uint8_t Error; // - uint16_t Power; // Unit: 0.1A - -}TX_PARAM_t; - - -typedef struct -{ - - - uint8_t RxState; - uint8_t ByteReceived[1]; - uint32_t LastRx; - - uint8_t RxBuff[BF_MAX_RXBUFF]; - uint8_t RxCnt; - uint8_t InfoLength; - - RX_PARAM_t Rx; - TX_PARAM_t Tx; - -}BAFANG_t; - - - - -// Public function prototypes - -void Bafang_Init (BAFANG_t* BF_ctx); - - -void Bafang_Service(BAFANG_t* BF_ctx, uint8_t rx); - - - - -#endif // BAFANG -#endif // (DISPLAY_TYPE & DISPLAY_TYPE_BAFANG) diff --git a/Inc/display_ebics.h b/Inc/display_ebics.h deleted file mode 100644 index 6a364c35..00000000 --- a/Inc/display_ebics.h +++ /dev/null @@ -1,15 +0,0 @@ -/* - * display_ebics.h - * - * Created on: 11.11.2020 - * Author: Gaswerke - */ - -#ifndef DISPLAY_EBICS_H_ -#define DISPLAY_EBICS_H_ - -void ebics_init(); -void process_ant_page(MotorState_t* MS, MotorParams_t* MP); -void send_ant_page(uint8_t page, MotorState_t* MS, MotorParams_t* MP); - -#endif /* DISPLAY_EBICS_H_ */ diff --git a/Inc/display_kingmeter.h b/Inc/display_kingmeter.h deleted file mode 100644 index c3b3714b..00000000 --- a/Inc/display_kingmeter.h +++ /dev/null @@ -1,178 +0,0 @@ -/* -Library for King-Meter displays - -Copyright © 2015 Michael Fabry (Michael@Fabry.de) - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . - -*/ - - -#ifndef KINGMETER_H -#define KINGMETER_H - - -// Includes -#include "config.h" -#include "stdint.h" - -#if (DISPLAY_TYPE & DISPLAY_TYPE_KINGMETER) - -// Definitions -#define KM_MAX_WHEELTIME 0x0DAC // Maximum Wheeltime reported to the display (e.g. when wheel is stopped) - -#define KM_PASDIR_FORWARD 0x00 -#define KM_PASDIR_BACKWARD 0x01 - -#define KM_HND_HL_NO 0x00 -#define KM_HND_HL_YES 0x01 - -#define KM_HND_HF_NO 0x00 -#define KM_HND_HF_YES 0x01 - - -#define KM_WHEELSIZE_8 638 -#define KM_WHEELSIZE_10 798 -#define KM_WHEELSIZE_12 958 -#define KM_WHEELSIZE_14 1117 - -#define KM_WHEELSIZE_16 1277 -#define KM_WHEELSIZE_18 1436 -#define KM_WHEELSIZE_20 1596 -#define KM_WHEELSIZE_22 1756 -#define KM_WHEELSIZE_24 1915 -#define KM_WHEELSIZE_26 2075 -#define KM_WHEELSIZE_700 2154 -#define KM_WHEELSIZE_28 2234 - -#define KM_WHEELSIZE_29 2294 - - - - -typedef struct -{ - // Parameters received from display in setting mode: - uint16_t WheelSize_mm; // Unit: 1mm - uint8_t PAS_RUN_Direction; // KM_PASDIR_FORWARD / KM_PASDIR_BACKWARD - uint8_t PAS_SCN_Tolerance; // Number of PAS signals to start the motor - uint8_t PAS_N_Ratio; // 0..255 PAS ratio - uint8_t HND_HL_ThrParam; // KM_HND_HL_NO / KM_HND_HL_YES - uint8_t HND_HF_ThrParam; // KM_HND_HF_NO / KM_HND_HF_YES - uint8_t SYS_SSP_SlowStart; // 1..4 Level of soft ramping at start - uint8_t SPS_SpdMagnets; // Number of magnets of speedsensor - uint16_t VOL_1_UnderVolt_x10; // Unit: 0.1V - -}RX_SETTINGS_t; - - - -#define KM_HEADLIGHT_OFF 0x00 -#define KM_HEADLIGHT_ON 0x01 -#define KM_HEADLIGHT_LOW 0x02 -#define KM_HEADLIGHT_HIGH 0x03 - -#define KM_BATTERY_NORMAL 0x00 -#define KM_BATTERY_LOW 0x01 - -#define KM_PUSHASSIST_OFF 0x00 -#define KM_PUSHASSIST_ON 0x01 - -#define KM_POWERASSIST_OFF 0x00 -#define KM_POWERASSIST_ON 0x01 - -#define KM_THROTTLE_OFF 0x00 -#define KM_THROTTLE_ON 0x01 - -#define KM_CRUISE_OFF 0x00 -#define KM_CRUISE_ON 0x01 - -#define KM_OVERSPEED_NO 0x00 // Speed below limit -#define KM_OVERSPEED_YES 0x01 // Overspeed detected - - -typedef struct -{ - // Parameters received from display in operation mode: - uint8_t AssistLevel; // 0..255 Power Assist Level - uint8_t Headlight; // KM_HEADLIGHT_OFF / KM_HEADLIGHT_ON / KM_HEADLIGHT_LOW / KM_HEADLIGHT_HIGH - uint8_t Battery; // KM_BATTERY_NORMAL / KM_BATTERY_LOW - uint8_t PushAssist; // KM_PUSHASSIST_OFF / KM_PUSHASSIST_ON - uint8_t PowerAssist; // KM_POWERASSIST_OFF / KM_POWERASSIST_ON - uint8_t Throttle; // KM_THROTTLE_OFF / KM_THROTTLE_ON - uint8_t CruiseControl; // KM_CRUISE_OFF / KM_CRUISE_ON - uint8_t OverSpeed; // KM_OVERSPEED_OFF / KM_OVERSPEED_ON - uint16_t SPEEDMAX_Limit_x10; // Unit: 0.1km/h - uint16_t CUR_Limit_x10; // Unit: 0.1A - -}RX_PARAM_t; - - - -#define KM_ERROR_NONE 0x00 -#define KM_ERROR_COMM 0x30 - -typedef struct -{ - // Parameters to be send to display in operation mode: - uint8_t Battery; // KM_BATTERY_NORMAL / KM_BATTERY_LOW - uint16_t Wheeltime_ms; // Unit:1ms - uint8_t Error; // KM_ERROR_NONE, .. - uint16_t Current_x10; // Unit: 0.1A - -}TX_PARAM_t; - -#if (DISPLAY_TYPE == DISPLAY_TYPE_KINGMETER_618U) - #define KM_MAX_RXBUFF 6 - #define KM_MAX_TXBUFF 8 -#endif - - -#if (DISPLAY_TYPE == DISPLAY_TYPE_KINGMETER_901U) - #define KM_MAX_RXBUFF 20 - #define KM5S_NM_RXBUFF 15 // KM5S RX-Buffer length for normal mode - #define KM_MAX_TXBUFF 13 -#endif - -typedef struct -{ - uint8_t RxState; - uint32_t LastRx; - - uint8_t RxBuff[KM_MAX_RXBUFF]; - uint8_t RxCnt; - - RX_SETTINGS_t Settings; - RX_PARAM_t Rx; - TX_PARAM_t Tx; - -}KINGMETER_t; - - - - -// Public function prototypes - -void KingMeter_Init (KINGMETER_t* KM_ctx); - - -void KingMeter_Service(KINGMETER_t* KM_ctx); - - - - -#endif // Display Type Kingmeter - -#endif // KINGMETER_H - diff --git a/Inc/display_kunteng.h b/Inc/display_kunteng.h deleted file mode 100644 index 72e60562..00000000 --- a/Inc/display_kunteng.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * display_kunteng.h - * - * Created on: 25.09.2019 - * Author: Admin - */ - -#ifndef DISPLAY_KUNTENG_H_ -#define DISPLAY_KUNTENG_H_ - -#include "config.h" - -void kunteng_init(); -void display_update(MotorState_t* MS_U); -void check_message(MotorState_t* MS_D); - -typedef struct _lcd_configuration_variables -{ - uint8_t ui8_assist_level; - uint8_t ui8_light; - uint8_t ui8_motor_characteristic; - uint8_t ui8_wheel_size; - uint8_t ui8_max_speed; - uint8_t ui8_power_assist_control_mode; - uint8_t ui8_controller_max_current; -} struc_lcd_configuration_variables; - -#define COMMUNICATIONS_BATTERY_VOLTAGE (BATTERY_LI_ION_CELLS_NUMBER * 3.45) // example: 7S battery, should be = 24 - -// Considering the follow voltage values for each li-ion battery cell -// State of charge | voltage -#define LI_ION_CELL_VOLTS_MAX 4.20 -#define LI_ION_CELL_VOLTS_100 4.20 -#define LI_ION_CELL_VOLTS_80 3.86 // 4.02 -#define LI_ION_CELL_VOLTS_60 3.68 // 3.87 -#define LI_ION_CELL_VOLTS_40 3.46 // 3.80 -#define LI_ION_CELL_VOLTS_20 3.28 // 3.73 -#define LI_ION_CELL_VOLTS_0 3.10 // 3.27 -#define LI_ION_CELL_VOLTS_MIN 3.10 - -#define BATTERY_PACK_VOLTS_100 (LI_ION_CELL_VOLTS_100 * BATTERY_LI_ION_CELLS_NUMBER) * 256 -#define BATTERY_PACK_VOLTS_80 (LI_ION_CELL_VOLTS_80 * BATTERY_LI_ION_CELLS_NUMBER) * 256 -#define BATTERY_PACK_VOLTS_60 (LI_ION_CELL_VOLTS_60 * BATTERY_LI_ION_CELLS_NUMBER) * 256 -#define BATTERY_PACK_VOLTS_40 (LI_ION_CELL_VOLTS_40 * BATTERY_LI_ION_CELLS_NUMBER) * 256 -#define BATTERY_PACK_VOLTS_20 (LI_ION_CELL_VOLTS_20 * BATTERY_LI_ION_CELLS_NUMBER) * 256 -#define BATTERY_PACK_VOLTS_0 (LI_ION_CELL_VOLTS_0 * BATTERY_LI_ION_CELLS_NUMBER) * 256 - -#define ADC_BATTERY_VOLTAGE_K 73 // 0.272 << 8 -#define BATTERY_LI_ION_CELLS_NUMBER 10 - -#endif /* DISPLAY_KUNTENG_H_ */ diff --git a/JavaConfigurator.jar b/JavaConfigurator.jar deleted file mode 100644 index b214c0aa..00000000 Binary files a/JavaConfigurator.jar and /dev/null differ diff --git a/JavaConfigurator/build.xml b/JavaConfigurator/build.xml deleted file mode 100644 index f452ba96..00000000 --- a/JavaConfigurator/build.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - Builds, tests, and runs the project JavaConfigurator. - - - diff --git a/JavaConfigurator/nbproject/build-impl.xml b/JavaConfigurator/nbproject/build-impl.xml deleted file mode 100644 index 06057557..00000000 --- a/JavaConfigurator/nbproject/build-impl.xml +++ /dev/null @@ -1,1770 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Must set src.dir - Must set test.src.dir - Must set build.dir - Must set dist.dir - Must set build.classes.dir - Must set dist.javadoc.dir - Must set build.test.classes.dir - Must set build.test.results.dir - Must set build.classes.excludes - Must set dist.jar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Must set javac.includes - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - No tests executed. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Must set JVM to use for profiling in profiler.info.jvm - Must set profiler agent JVM arguments in profiler.info.jvmargs.agent - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Must select some files in the IDE or set javac.includes - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - To run this application from the command line without Ant, try: - - java -jar "${dist.jar.resolved}" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Must select one file in the IDE or set run.class - - - - Must select one file in the IDE or set run.class - - - - - - - - - - - - - - - - - - - - - - - Must select one file in the IDE or set debug.class - - - - - Must select one file in the IDE or set debug.class - - - - - Must set fix.includes - - - - - - - - - - This target only works when run from inside the NetBeans IDE. - - - - - - - - - Must select one file in the IDE or set profile.class - This target only works when run from inside the NetBeans IDE. - - - - - - - - - This target only works when run from inside the NetBeans IDE. - - - - - - - - - - - - - This target only works when run from inside the NetBeans IDE. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Must select one file in the IDE or set run.class - - - - - - Must select some files in the IDE or set test.includes - - - - - Must select one file in the IDE or set run.class - - - - - Must select one file in the IDE or set applet.url - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Must select some files in the IDE or set javac.includes - - - - - - - - - - - - - - - - - - - - - - - - Some tests failed; see details above. - - - - - - - - - Must select some files in the IDE or set test.includes - - - - Some tests failed; see details above. - - - - Must select some files in the IDE or set test.class - Must select some method in the IDE or set test.method - - - - Some tests failed; see details above. - - - - - Must select one file in the IDE or set test.class - - - - Must select one file in the IDE or set test.class - Must select some method in the IDE or set test.method - - - - - - - - - - - - - - Must select one file in the IDE or set applet.url - - - - - - - - - Must select one file in the IDE or set applet.url - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/JavaConfigurator/nbproject/genfiles.properties b/JavaConfigurator/nbproject/genfiles.properties deleted file mode 100644 index 568ed1f7..00000000 --- a/JavaConfigurator/nbproject/genfiles.properties +++ /dev/null @@ -1,8 +0,0 @@ -build.xml.data.CRC32=d21f578f -build.xml.script.CRC32=c094a861 -build.xml.stylesheet.CRC32=f85dc8f2@1.93.0.48 -# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. -# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. -nbproject/build-impl.xml.data.CRC32=d21f578f -nbproject/build-impl.xml.script.CRC32=a8eea5a9 -nbproject/build-impl.xml.stylesheet.CRC32=f89f7d21@1.93.0.48 diff --git a/JavaConfigurator/nbproject/project.properties b/JavaConfigurator/nbproject/project.properties deleted file mode 100644 index f0e1ed7b..00000000 --- a/JavaConfigurator/nbproject/project.properties +++ /dev/null @@ -1,91 +0,0 @@ -annotation.processing.enabled=true -annotation.processing.enabled.in.editor=false -annotation.processing.processors.list= -annotation.processing.run.all.processors=true -annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output -application.title=JavaConfigurator -application.vendor=Gaswerke -build.classes.dir=${build.dir}/classes -build.classes.excludes=**/*.java,**/*.form -# This directory is removed when the project is cleaned: -build.dir=build -build.generated.dir=${build.dir}/generated -build.generated.sources.dir=${build.dir}/generated-sources -# Only compile against the classpath explicitly listed here: -build.sysclasspath=ignore -build.test.classes.dir=${build.dir}/test/classes -build.test.results.dir=${build.dir}/test/results -# Uncomment to specify the preferred debugger connection transport: -#debug.transport=dt_socket -debug.classpath=\ - ${run.classpath} -debug.modulepath=\ - ${run.modulepath} -debug.test.classpath=\ - ${run.test.classpath} -debug.test.modulepath=\ - ${run.test.modulepath} -# Files in build.classes.dir which should be excluded from distribution jar -dist.archive.excludes= -# This directory is removed when the project is cleaned: -dist.dir=dist -dist.jar=${dist.dir}/JavaConfigurator.jar -dist.javadoc.dir=${dist.dir}/javadoc -endorsed.classpath= -excludes= -includes=** -jar.compress=false -javac.classpath= -# Space-separated list of extra javac options -javac.compilerargs= -javac.deprecation=false -javac.external.vm=true -javac.modulepath= -javac.processormodulepath= -javac.processorpath=\ - ${javac.classpath} -javac.source=1.8 -javac.target=1.8 -javac.test.classpath=\ - ${javac.classpath}:\ - ${build.classes.dir} -javac.test.modulepath=\ - ${javac.modulepath} -javac.test.processorpath=\ - ${javac.test.classpath} -javadoc.additionalparam= -javadoc.author=false -javadoc.encoding=${source.encoding} -javadoc.html5=false -javadoc.noindex=false -javadoc.nonavbar=false -javadoc.notree=false -javadoc.private=false -javadoc.splitindex=true -javadoc.use=true -javadoc.version=false -javadoc.windowtitle= -jlink.launcher=false -jlink.launcher.name=JavaConfigurator -main.class=Lishui_Parameter_Configurator -manifest.file=manifest.mf -meta.inf.dir=${src.dir}/META-INF -mkdist.disabled=false -platform.active=default_platform -run.classpath=\ - ${javac.classpath}:\ - ${build.classes.dir} -# Space-separated list of JVM arguments used when running the project. -# You may also define separate properties like run-sys-prop.name=value instead of -Dname=value. -# To set system properties for unit tests define test-sys-prop.name=value: -run.jvmargs= -run.modulepath=\ - ${javac.modulepath} -run.test.classpath=\ - ${javac.test.classpath}:\ - ${build.test.classes.dir} -run.test.modulepath=\ - ${javac.test.modulepath} -source.encoding=UTF-8 -src.dir=src -test.src.dir=test diff --git a/JavaConfigurator/nbproject/project.xml b/JavaConfigurator/nbproject/project.xml deleted file mode 100644 index 5f96edef..00000000 --- a/JavaConfigurator/nbproject/project.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - org.netbeans.modules.java.j2seproject - - - JavaConfigurator - - - - - - - - - diff --git a/JavaConfigurator/src/Lishui_Parameter_Configurator.form b/JavaConfigurator/src/Lishui_Parameter_Configurator.form deleted file mode 100644 index 76a3e53d..00000000 --- a/JavaConfigurator/src/Lishui_Parameter_Configurator.form +++ /dev/null @@ -1,1221 +0,0 @@ - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/JavaConfigurator/src/Lishui_Parameter_Configurator.java b/JavaConfigurator/src/Lishui_Parameter_Configurator.java deleted file mode 100644 index 4b8e0bc2..00000000 --- a/JavaConfigurator/src/Lishui_Parameter_Configurator.java +++ /dev/null @@ -1,1516 +0,0 @@ -/* -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 3 of the License, or -(at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software Foundation, -Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * - * @author stancecoke - */ - - -import java.io.*; -import java.awt.Desktop; -import java.net.URI; -import java.net.URISyntaxException; -import java.text.SimpleDateFormat; -import java.util.Date; -import javax.swing.JFrame; -import javax.swing.JPanel; -import javax.swing.border.EmptyBorder; -import javax.swing.text.JTextComponent; -import javax.swing.JTextField; -import javax.swing.JButton; -import javax.swing.ListSelectionModel; -import javax.swing.JLabel; -import javax.swing.ImageIcon; -import javax.imageio.ImageIO; -import javax.swing.AbstractAction; -import java.awt.event.ActionEvent; -import javax.swing.Action; -import java.awt.event.ActionListener; -import java.awt.GridLayout; -import java.awt.Font; -import java.awt.Color; -import java.io.BufferedWriter; -import java.io.FileWriter; -import java.io.IOException; -import java.io.PrintWriter; -import javax.swing.SwingConstants; -import javax.swing.JOptionPane; -import javax.swing.JRadioButton; -import javax.swing.ButtonGroup; -import javax.swing.JList; -import javax.swing.JScrollPane; -import java.awt.Dimension; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; -import java.util.List; -import java.util.ArrayList; -import java.io.File; -import java.util.logging.Level; -import java.util.logging.Logger; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; -import javax.swing.DefaultListModel; -import javax.swing.event.ListDataListener; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.awt.image.BufferedImage; -import java.nio.file.Paths; -import java.util.Arrays; -import javax.swing.JCheckBox; -import javax.swing.ListModel; - -public class Lishui_Parameter_Configurator extends javax.swing.JFrame { - - /** - * Creates new form TSDZ2_Configurator - */ - - private File experimentalSettingsDir; - private File lastSettingsFile = null; - - DefaultListModel provenSettingsFilesModel = new DefaultListModel(); - DefaultListModel experimentalSettingsFilesModel = new DefaultListModel(); - JList experimentalSettingsList = new JList(experimentalSettingsFilesModel); - - public class FileContainer { - - public FileContainer(File file) { - this.file = file; - } - public File file; - - @Override - public String toString() { - return file.getName(); - } - } - - - - -public void loadSettings(File f) throws IOException { - - BufferedReader in = new BufferedReader(new FileReader(f)); - - TF_TRIGGER_OFFSET.setText(in.readLine()); - TF_TRIGGER_DEFAULT.setText(in.readLine()); - TF_TIMER_PERIOD.setText(in.readLine()); - TF_CAL_BAT_V.setText(in.readLine()); - TF_CAL_V.setText(in.readLine()); - TF_CAL_I.setText(in.readLine()); - TF_INDUCTANCE.setText(in.readLine()); - TF_RESISTANCE.setText(in.readLine()); - TF_FLUX_LINKAGE.setText(in.readLine()); - TF_GAMMA.setText(in.readLine()); - TF_BATTERY_LEVEL_1.setText(in.readLine()); - TF_BATTERY_LEVEL_2.setText(in.readLine()); - TF_BATTERY_LEVEL_3.setText(in.readLine()); - TF_BATTERY_LEVEL_4.setText(in.readLine()); - TF_BATTERY_LEVEL_5.setText(in.readLine()); - TF_P_FACTOR_I_Q.setText(in.readLine()); - TF_I_FACTOR_I_Q.setText(in.readLine()); - TF_P_FACTOR_I_D.setText(in.readLine()); - TF_I_FACTOR_I_D.setText(in.readLine()); - TF_TS_COEF.setText(in.readLine()); - TF_PAS_TIMEOUT.setText(in.readLine()); - TF_PAS_RAMP_END.setText(in.readLine()); - TF_FRAC_HIGH.setText(in.readLine()); - TF_FRAC_LOW.setText(in.readLine()); - TF_THROTTLE_OFFSET.setText(in.readLine()); - TF_THROTTLE_MAX.setText(in.readLine()); - TF_WHEEL_CIRC.setText(in.readLine()); - TF_GEAR_RATIO.setText(in.readLine()); - TF_SPEED_LIMIT.setText(in.readLine()); - TF_PULSES_PER_REVOLUTION.setText(in.readLine()); - TF_PH_CURRENT_MAX.setText(in.readLine()); - TF_SPEC_ANGLE.setText(in.readLine()); - RB_DIRDET.setSelected(Boolean.parseBoolean(in.readLine())); - RB_TORQUESENSOR.setSelected(Boolean.parseBoolean(in.readLine())); - RB_JLCD.setSelected(Boolean.parseBoolean(in.readLine())); - RB_KM5S.setSelected(Boolean.parseBoolean(in.readLine())); - RB_KUNTENG.setSelected(Boolean.parseBoolean(in.readLine())); - RB_BAFANG.setSelected(Boolean.parseBoolean(in.readLine())); - RB_DEBUG.setSelected(Boolean.parseBoolean(in.readLine())); - RB_DISABLE_DYN_ADC.setSelected(Boolean.parseBoolean(in.readLine())); - RB_FAST_LOOP_LOG.setSelected(Boolean.parseBoolean(in.readLine())); - RB_REVERSE.setSelected(Boolean.parseBoolean(in.readLine())); - TF_PATH_ECLIPSE.setText(in.readLine()); - TF_PATH_STM32_UTILITY.setText(in.readLine()); - in.close(); - } - -public void AddListItem(File newFile) { - - experimentalSettingsFilesModel.add(0, new FileContainer(newFile)); - - // ListModel Liste = expSet.getModel(); - expSet.repaint(); - JOptionPane.showMessageDialog(null,experimentalSettingsFilesModel.toString(),"Titel", JOptionPane.PLAIN_MESSAGE); -} - - public Lishui_Parameter_Configurator() { - initComponents(); - BufferedImage image; - try { - image = ImageIO.read (new File ("src/ImageFiles/stancecoke.png")); - ImageIcon icon = new ImageIcon(image); - jLabel43.setIcon(icon); - } catch (IOException ex) { - Logger.getLogger(Lishui_Parameter_Configurator.class.getName()).log(Level.SEVERE, null, ex); - } - - // update lists - - experimentalSettingsDir = new File(Paths.get(".").toAbsolutePath().normalize().toString()); - while (!Arrays.asList(experimentalSettingsDir.list()).contains("experimental settings")) { - experimentalSettingsDir = experimentalSettingsDir.getParentFile(); - } - File provenSettingsDir = new File(experimentalSettingsDir.getAbsolutePath() + File.separator + "proven settings"); - experimentalSettingsDir = new File(experimentalSettingsDir.getAbsolutePath() + File.separator + "experimental settings"); - - - - for (File file : provenSettingsDir.listFiles()) { - provenSettingsFilesModel.addElement(new Lishui_Parameter_Configurator.FileContainer(file)); - - if (lastSettingsFile == null) { - lastSettingsFile = file; - } else { - if(file.lastModified()>lastSettingsFile.lastModified()){ - lastSettingsFile = file; - } - } - } - - - for (File file : experimentalSettingsDir.listFiles()) { - experimentalSettingsFilesModel.addElement(new Lishui_Parameter_Configurator.FileContainer(file)); - } - experimentalSettingsList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - experimentalSettingsList.setLayoutOrientation(JList.VERTICAL); - experimentalSettingsList.setVisibleRowCount(-1); - - expSet.setModel(experimentalSettingsFilesModel); - - JList provenSettingsList = new JList(provenSettingsFilesModel); - provenSettingsList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - provenSettingsList.setLayoutOrientation(JList.VERTICAL); - provenSettingsList.setVisibleRowCount(-1); - - provSet.setModel(provenSettingsFilesModel); - jScrollPane2.setViewportView(provSet); - - - expSet.addMouseListener(new MouseAdapter() { - @Override - public void mouseClicked(MouseEvent e) { - try { - int selectedIndex = expSet.getSelectedIndex(); - experimentalSettingsList.setSelectedIndex(selectedIndex); - loadSettings(((FileContainer) experimentalSettingsList.getSelectedValue()).file); - experimentalSettingsList.clearSelection(); - } catch (IOException ex) { - Logger.getLogger(Lishui_Parameter_Configurator.class.getName()).log(Level.SEVERE, null, ex); - } - experimentalSettingsList.clearSelection(); - - //updateDependiencies(false); - } - }); - - provSet.addMouseListener(new MouseAdapter() { - @Override - public void mouseClicked(MouseEvent e) { - try { - int selectedIndex = provSet.getSelectedIndex(); - provenSettingsList.setSelectedIndex(selectedIndex); - loadSettings(((FileContainer) provenSettingsList.getSelectedValue()).file); - provenSettingsList.clearSelection(); - } catch (IOException ex) { - Logger.getLogger(Lishui_Parameter_Configurator.class.getName()).log(Level.SEVERE, null, ex); - } - provenSettingsList.clearSelection(); - //updateDependiencies(false); - } - }); - - - jButton2.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent arg0) { - { - - int n = JOptionPane.showConfirmDialog( - null, - "If you run this function with a brand new controller, the original firmware will be erased. This can't be undone. Are you sure?", - "", - JOptionPane.YES_NO_OPTION); - - if (n == JOptionPane.YES_OPTION) { - try { - Process process = Runtime.getRuntime().exec("cmd /c start WriteOptionBytes " + TF_PATH_STM32_UTILITY.getText()); - } catch (IOException e1) { - TF_TS_COEF.setText("Error"); - e1.printStackTrace(); - } - } else { - JOptionPane.showMessageDialog(null, "Goodbye"); - } - - // Saving code here - } - } - }); - - - - jButton1.addActionListener(new ActionListener() { - - public void actionPerformed(ActionEvent arg0) { - PrintWriter iWriter = null; - PrintWriter pWriter = null; - try { - //FileWriter fw = new FileWriter("settings.ini"); - //BufferedWriter bw = new BufferedWriter(fw); - - - File newFile = new File(experimentalSettingsDir + File.separator + new SimpleDateFormat("yyyyMMdd-HHmmssz").format(new Date()) + ".ini"); - //TSDZ2_Configurator ConfiguratorObject = new TSDZ2_Configurator(); - //ConfiguratorObject.AddListItem(newFile); - experimentalSettingsFilesModel.add(0, new FileContainer(newFile)); //hier wird nur die neue Datei in die Liste geschrieben... - - iWriter = new PrintWriter(new BufferedWriter(new FileWriter(newFile))); - pWriter = new PrintWriter(new BufferedWriter(new FileWriter("inc/config.h"))); - pWriter.println("/*\r\n" - + " * config.h\r\n" - + " *\r\n" - + " * Automatically created by Lishui Parameter Configurator\r\n" - + " * Author: stancecoke\r\n" - + " */\r\n" - + "\r\n" - + "#ifndef CONFIG_H_\r\n" - + "#define CONFIG_H_\r\n" - + "#include \"stdint.h\"\r\n" - + "#define DISPLAY_TYPE_KINGMETER_618U (1<<4) // King-Meter 618U protocol (KM5s, EBS-LCD2, J-LCD, SW-LCD)\r\n" - + "#define DISPLAY_TYPE_KINGMETER_901U (1<<8) // King-Meter 901U protocol (KM5s)\r\n" - + "#define DISPLAY_TYPE_KINGMETER (DISPLAY_TYPE_KINGMETER_618U|DISPLAY_TYPE_KINGMETER_901U)\r\n" - + "#define DISPLAY_TYPE_BAFANG (1<<2) // For 'Blaupunkt' Display of Prophete Entdecker\r\n" - + "#define DISPLAY_TYPE_KUNTENG (1<<1) // For ASCII-Output in Debug mode\r\n" - + "#define DISPLAY_TYPE_DEBUG (1<<0) // For ASCII-Output in Debug mode);\r\n" - ); - - - String text_to_save = "#define TRIGGER_OFFSET_ADC " + TF_TRIGGER_OFFSET.getText(); - iWriter.println(TF_TRIGGER_OFFSET.getText()); - pWriter.println(text_to_save); - - text_to_save = "#define TRIGGER_DEFAULT " + TF_TRIGGER_DEFAULT.getText(); - iWriter.println(TF_TRIGGER_DEFAULT.getText()); - pWriter.println(text_to_save); - - text_to_save = "#define _T " + TF_TIMER_PERIOD.getText(); - iWriter.println(TF_TIMER_PERIOD.getText()); - pWriter.println(text_to_save); - - text_to_save = "#define CAL_BAT_V " + TF_CAL_BAT_V.getText(); - iWriter.println(TF_CAL_BAT_V.getText()); - pWriter.println(text_to_save); - - text_to_save = "#define CAL_V " + TF_CAL_V.getText(); - iWriter.println(TF_CAL_V.getText()); - pWriter.println(text_to_save); - - text_to_save = "#define CAL_I " + TF_CAL_I.getText(); - iWriter.println(TF_CAL_I.getText()); - pWriter.println(text_to_save); - - text_to_save = "#define INDUCTANCE " + TF_INDUCTANCE.getText(); - iWriter.println(TF_INDUCTANCE.getText()); - pWriter.println(text_to_save); - - text_to_save = "#define RESISTANCE " + TF_RESISTANCE.getText(); - iWriter.println(TF_RESISTANCE.getText()); - pWriter.println(text_to_save); - - text_to_save = "#define FLUX_LINKAGE " + TF_FLUX_LINKAGE.getText(); - iWriter.println(TF_FLUX_LINKAGE.getText()); - pWriter.println(text_to_save); - - text_to_save = "#define GAMMA " + TF_GAMMA.getText(); - iWriter.println(TF_GAMMA.getText()); - pWriter.println(text_to_save); - - text_to_save = "#define BATTERY_LEVEL_1 " + TF_BATTERY_LEVEL_1.getText(); - iWriter.println(TF_BATTERY_LEVEL_1.getText()); - pWriter.println(text_to_save); - - text_to_save = "#define BATTERY_LEVEL_2 " + TF_BATTERY_LEVEL_2.getText(); - iWriter.println(TF_BATTERY_LEVEL_2.getText()); - pWriter.println(text_to_save); - - text_to_save = "#define BATTERY_LEVEL_3 " + TF_BATTERY_LEVEL_3.getText(); - iWriter.println(TF_BATTERY_LEVEL_3.getText()); - pWriter.println(text_to_save); - - text_to_save = "#define BATTERY_LEVEL_4 " + TF_BATTERY_LEVEL_4.getText(); - iWriter.println(TF_BATTERY_LEVEL_4.getText()); - pWriter.println(text_to_save); - - text_to_save = "#define BATTERY_LEVEL_5 " + TF_BATTERY_LEVEL_5.getText(); - iWriter.println(TF_BATTERY_LEVEL_5.getText()); - pWriter.println(text_to_save); - - text_to_save = "#define P_FACTOR_I_Q " + TF_P_FACTOR_I_Q.getText(); - iWriter.println(TF_P_FACTOR_I_Q.getText()); - pWriter.println(text_to_save); - - text_to_save = "#define I_FACTOR_I_Q " + TF_I_FACTOR_I_Q.getText(); - iWriter.println(TF_I_FACTOR_I_Q.getText()); - pWriter.println(text_to_save); - - text_to_save = "#define P_FACTOR_I_D " + TF_P_FACTOR_I_D.getText(); - iWriter.println(TF_P_FACTOR_I_D.getText()); - pWriter.println(text_to_save); - - text_to_save = "#define I_FACTOR_I_D " + TF_I_FACTOR_I_D.getText(); - iWriter.println(TF_I_FACTOR_I_D.getText()); - pWriter.println(text_to_save); - - text_to_save = "#define TS_COEF " + TF_TS_COEF.getText(); - iWriter.println(TF_TS_COEF.getText()); - pWriter.println(text_to_save); - - text_to_save = "#define PAS_TIMEOUT " + TF_PAS_TIMEOUT.getText(); - iWriter.println(TF_PAS_TIMEOUT.getText()); - pWriter.println(text_to_save); - - text_to_save = "#define RAMP_END " + TF_PAS_RAMP_END.getText(); - iWriter.println(TF_PAS_RAMP_END.getText()); - pWriter.println(text_to_save); - - text_to_save = "#define FRAC_HIGH " + TF_FRAC_HIGH.getText(); - iWriter.println(TF_FRAC_HIGH.getText()); - pWriter.println(text_to_save); - - text_to_save = "#define FRAC_LOW " + TF_FRAC_LOW.getText(); - iWriter.println(TF_FRAC_LOW.getText()); - pWriter.println(text_to_save); - - text_to_save = "#define THROTTLE_OFFSET " + TF_THROTTLE_OFFSET.getText(); - iWriter.println(TF_THROTTLE_OFFSET.getText()); - pWriter.println(text_to_save); - - text_to_save = "#define THROTTLE_MAX " + TF_THROTTLE_MAX.getText(); - iWriter.println(TF_THROTTLE_MAX.getText()); - pWriter.println(text_to_save); - - text_to_save = "#define WHEEL_CIRCUMFERENCE " + TF_WHEEL_CIRC.getText(); - iWriter.println(TF_WHEEL_CIRC.getText()); - pWriter.println(text_to_save); - - text_to_save = "#define GEAR_RATIO " + TF_GEAR_RATIO.getText(); - iWriter.println(TF_GEAR_RATIO.getText()); - pWriter.println(text_to_save); - - text_to_save = "#define SPEEDLIMIT " + TF_SPEED_LIMIT.getText(); - iWriter.println(TF_SPEED_LIMIT.getText()); - pWriter.println(text_to_save); - - text_to_save = "#define PULSES_PER_REVOLUTION " + TF_PULSES_PER_REVOLUTION.getText(); - iWriter.println(TF_PULSES_PER_REVOLUTION.getText()); - pWriter.println(text_to_save); - - text_to_save = "#define PH_CURRENT_MAX " + TF_PH_CURRENT_MAX.getText(); - iWriter.println(TF_PH_CURRENT_MAX.getText()); - pWriter.println(text_to_save); - - text_to_save = "#define SPEC_ANGLE " + TF_SPEC_ANGLE.getText(); - iWriter.println(TF_SPEC_ANGLE.getText()); - pWriter.println(text_to_save); - - if (RB_DIRDET.isSelected()) { - text_to_save = "#define DIRDET"; - pWriter.println(text_to_save); - } - iWriter.println(RB_DIRDET.isSelected()); - - if (RB_TORQUESENSOR.isSelected()) { - text_to_save = "#define TS_MODE"; - pWriter.println(text_to_save); - } - iWriter.println(RB_TORQUESENSOR.isSelected()); - - if (RB_JLCD.isSelected()) { - text_to_save = "#define DISPLAY_TYPE DISPLAY_TYPE_KINGMETER_618U //J-LCD"; - pWriter.println(text_to_save); - } - iWriter.println(RB_JLCD.isSelected()); - - if (RB_KM5S.isSelected()) { - text_to_save = "#define DISPLAY_TYPE DISPLAY_TYPE_KINGMETER_901U //KM5S"; - pWriter.println(text_to_save); - } - iWriter.println(RB_KM5S.isSelected()); - - if (RB_KUNTENG.isSelected()) { - text_to_save = "#define DISPLAY_TYPE DISPLAY_TYPE_KUNTENG //Kunteng LCD3/5 etc."; - pWriter.println(text_to_save); - } - iWriter.println(RB_KUNTENG.isSelected()); - - if (RB_BAFANG.isSelected()) { - text_to_save = "#define DISPLAY_TYPE DISPLAY_TYPE_BAFANG //Bafang Displays, including 'Blaupunkt' "; - pWriter.println(text_to_save); - } - iWriter.println(RB_BAFANG.isSelected()); - - if (RB_DEBUG.isSelected()) { - text_to_save = "#define DISPLAY_TYPE DISPLAY_TYPE_DEBUG //ASCII Printout for debugging"; - pWriter.println(text_to_save); - } - iWriter.println(RB_DEBUG.isSelected()); - - if (RB_DISABLE_DYN_ADC.isSelected()) { - text_to_save = "#define DISABLE_DYNAMIC_ADC"; - pWriter.println(text_to_save); - } - iWriter.println(RB_DISABLE_DYN_ADC.isSelected()); - - if (RB_FAST_LOOP_LOG.isSelected()) { - text_to_save = "#define FAST_LOOP_LOG"; - pWriter.println(text_to_save); - } - iWriter.println(RB_FAST_LOOP_LOG.isSelected()); - - if (RB_REVERSE.isSelected()) { - text_to_save = "#define REVERSE -1"; - pWriter.println(text_to_save); - } - else{ - text_to_save = "#define REVERSE 1"; - pWriter.println(text_to_save); - } - iWriter.println(RB_REVERSE.isSelected()); - - pWriter.println("\r\n#endif /* CONFIG_H_ */"); - - iWriter.println(TF_PATH_ECLIPSE.getText()); - iWriter.println(TF_PATH_STM32_UTILITY.getText()); - - - iWriter.close(); - } catch (IOException ioe) { - ioe.printStackTrace(); - } finally { - if (pWriter != null) { - pWriter.flush(); - pWriter.close(); - - } - } - try { - String Flashoption; - if (RB_UART.isSelected()) { - Flashoption = "UART"; - } - else{ - Flashoption = "STLink"; - - } - Process process = Runtime.getRuntime().exec("cmd /c start Start_Compiling " + TF_PATH_ECLIPSE.getText() + " "+ TF_PATH_STM32_UTILITY.getText() + " " + Flashoption+ " "+ TF_COMPORT.getText()); - } catch (IOException e1) { - TF_TS_COEF.setText("Error"); - e1.printStackTrace(); - } - - } - - - }); - - if (lastSettingsFile != null) { - try { - loadSettings(lastSettingsFile); - } catch (Exception ex) { - - } - provenSettingsList.clearSelection(); - experimentalSettingsList.clearSelection(); - //updateDependiencies(false); - } - } - - - /** - * This method is called from within the constructor to initialize the form. - * WARNING: Do NOT modify this code. The content of this method is always - * regenerated by the Form Editor. - */ - @SuppressWarnings("unchecked") - // //GEN-BEGIN:initComponents - private void initComponents() { - - BG_DISPLAYS = new javax.swing.ButtonGroup(); - BG_FLASHOPTIONS = new javax.swing.ButtonGroup(); - jTabbedPane1 = new javax.swing.JTabbedPane(); - TAB1 = new javax.swing.JPanel(); - TF_TS_COEF = new javax.swing.JTextField(); - Label_Parameter1 = new javax.swing.JLabel(); - RB_JLCD = new javax.swing.JRadioButton(); - RB_KM5S = new javax.swing.JRadioButton(); - RB_BAFANG = new javax.swing.JRadioButton(); - RB_KUNTENG = new javax.swing.JRadioButton(); - RB_DEBUG = new javax.swing.JRadioButton(); - RB_TORQUESENSOR = new javax.swing.JRadioButton(); - jLabel21 = new javax.swing.JLabel(); - jLabel27 = new javax.swing.JLabel(); - jLabel28 = new javax.swing.JLabel(); - jLabel29 = new javax.swing.JLabel(); - jLabel30 = new javax.swing.JLabel(); - TF_PAS_TIMEOUT = new javax.swing.JTextField(); - TF_PAS_RAMP_END = new javax.swing.JTextField(); - jLabel31 = new javax.swing.JLabel(); - jLabel32 = new javax.swing.JLabel(); - jLabel33 = new javax.swing.JLabel(); - TF_THROTTLE_OFFSET = new javax.swing.JTextField(); - TF_THROTTLE_MAX = new javax.swing.JTextField(); - jLabel34 = new javax.swing.JLabel(); - jLabel35 = new javax.swing.JLabel(); - jLabel36 = new javax.swing.JLabel(); - jLabel37 = new javax.swing.JLabel(); - jLabel38 = new javax.swing.JLabel(); - jLabel39 = new javax.swing.JLabel(); - jLabel40 = new javax.swing.JLabel(); - TF_WHEEL_CIRC = new javax.swing.JTextField(); - TF_GEAR_RATIO = new javax.swing.JTextField(); - TF_SPEED_LIMIT = new javax.swing.JTextField(); - TF_PULSES_PER_REVOLUTION = new javax.swing.JTextField(); - TF_PH_CURRENT_MAX = new javax.swing.JTextField(); - TF_SPEC_ANGLE = new javax.swing.JTextField(); - jLabel41 = new javax.swing.JLabel(); - jLabel42 = new javax.swing.JLabel(); - TF_PATH_ECLIPSE = new javax.swing.JTextField(); - TF_PATH_STM32_UTILITY = new javax.swing.JTextField(); - RB_REVERSE = new javax.swing.JRadioButton(); - jLabel44 = new javax.swing.JLabel(); - RB_DIRDET = new javax.swing.JRadioButton(); - TF_FRAC_HIGH = new javax.swing.JTextField(); - jLabel45 = new javax.swing.JLabel(); - TF_FRAC_LOW = new javax.swing.JTextField(); - jLabel46 = new javax.swing.JLabel(); - TAB2 = new javax.swing.JPanel(); - TF_TRIGGER_OFFSET = new javax.swing.JTextField(); - Label_Param3 = new javax.swing.JLabel(); - RB_FAST_LOOP_LOG = new javax.swing.JRadioButton(); - RB_DISABLE_DYN_ADC = new javax.swing.JRadioButton(); - TF_TRIGGER_DEFAULT = new javax.swing.JTextField(); - jLabel3 = new javax.swing.JLabel(); - jLabel4 = new javax.swing.JLabel(); - jLabel5 = new javax.swing.JLabel(); - TF_TIMER_PERIOD = new javax.swing.JTextField(); - jLabel6 = new javax.swing.JLabel(); - jLabel7 = new javax.swing.JLabel(); - TF_CAL_BAT_V = new javax.swing.JTextField(); - TF_CAL_V = new javax.swing.JTextField(); - jLabel8 = new javax.swing.JLabel(); - TF_CAL_I = new javax.swing.JTextField(); - jLabel9 = new javax.swing.JLabel(); - jLabel10 = new javax.swing.JLabel(); - jLabel11 = new javax.swing.JLabel(); - TF_INDUCTANCE = new javax.swing.JTextField(); - jLabel12 = new javax.swing.JLabel(); - TF_RESISTANCE = new javax.swing.JTextField(); - jLabel13 = new javax.swing.JLabel(); - TF_FLUX_LINKAGE = new javax.swing.JTextField(); - jLabel14 = new javax.swing.JLabel(); - TF_GAMMA = new javax.swing.JTextField(); - jLabel15 = new javax.swing.JLabel(); - jLabel16 = new javax.swing.JLabel(); - jLabel17 = new javax.swing.JLabel(); - jLabel18 = new javax.swing.JLabel(); - jLabel19 = new javax.swing.JLabel(); - TF_BATTERY_LEVEL_1 = new javax.swing.JTextField(); - TF_BATTERY_LEVEL_2 = new javax.swing.JTextField(); - jLabel20 = new javax.swing.JLabel(); - TF_BATTERY_LEVEL_3 = new javax.swing.JTextField(); - TF_BATTERY_LEVEL_4 = new javax.swing.JTextField(); - TF_BATTERY_LEVEL_5 = new javax.swing.JTextField(); - jLabel22 = new javax.swing.JLabel(); - jLabel23 = new javax.swing.JLabel(); - jLabel24 = new javax.swing.JLabel(); - jLabel25 = new javax.swing.JLabel(); - jLabel26 = new javax.swing.JLabel(); - TF_P_FACTOR_I_Q = new javax.swing.JTextField(); - TF_I_FACTOR_I_Q = new javax.swing.JTextField(); - TF_P_FACTOR_I_D = new javax.swing.JTextField(); - TF_I_FACTOR_I_D = new javax.swing.JTextField(); - label1 = new java.awt.Label(); - jScrollPane1 = new javax.swing.JScrollPane(); - expSet = new javax.swing.JList<>(); - jLabel1 = new javax.swing.JLabel(); - jScrollPane2 = new javax.swing.JScrollPane(); - provSet = new javax.swing.JList<>(); - jLabel2 = new javax.swing.JLabel(); - jButton1 = new javax.swing.JButton(); - jButton2 = new javax.swing.JButton(); - jLabel43 = new javax.swing.JLabel(); - RB_UART = new javax.swing.JRadioButton(); - RB_STLINK = new javax.swing.JRadioButton(); - TF_COMPORT = new javax.swing.JTextField(); - - setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); - - TF_TS_COEF.setText("60000"); - - Label_Parameter1.setLabelFor(TF_TS_COEF); - Label_Parameter1.setText("Display"); - - BG_DISPLAYS.add(RB_JLCD); - RB_JLCD.setText("J-LCD"); - RB_JLCD.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - RB_JLCDActionPerformed(evt); - } - }); - - BG_DISPLAYS.add(RB_KM5S); - RB_KM5S.setText("KM5S"); - - BG_DISPLAYS.add(RB_BAFANG); - RB_BAFANG.setText("Bafang"); - - BG_DISPLAYS.add(RB_KUNTENG); - RB_KUNTENG.setText("Kunteng"); - - BG_DISPLAYS.add(RB_DEBUG); - RB_DEBUG.setText("Debug"); - - RB_TORQUESENSOR.setText("torquesensor"); - - jLabel21.setText("Ride Mode"); - - jLabel27.setText("TS coefficient"); - - jLabel28.setText("PAS settings"); - - jLabel29.setText("Timeout"); - - jLabel30.setText("Ramp end"); - - TF_PAS_TIMEOUT.setText("8000"); - - TF_PAS_RAMP_END.setText("1600"); - - jLabel31.setText("Throttle settings"); - - jLabel32.setText("Throttle offset"); - - jLabel33.setText("Throttle max"); - - TF_THROTTLE_OFFSET.setText("1255"); - - TF_THROTTLE_MAX.setText("4096"); - - jLabel34.setText("Bike and Motor settings"); - - jLabel35.setText("Wheel circumference"); - - jLabel36.setText("Gear Ratio"); - - jLabel37.setText("Speed Limit"); - - jLabel38.setText("Pulses per revolution"); - - jLabel39.setText("Motorcurrent max"); - - jLabel40.setText("Motor specific angle"); - - TF_WHEEL_CIRC.setText("2200"); - - TF_GEAR_RATIO.setText("60"); - - TF_SPEED_LIMIT.setText("25"); - - TF_PULSES_PER_REVOLUTION.setText("1"); - - TF_PH_CURRENT_MAX.setText("300"); - - TF_SPEC_ANGLE.setText("-715827882LL"); - - jLabel41.setText("Path to Eclipse"); - - jLabel42.setText("Path to STM32 Utility"); - - TF_PATH_ECLIPSE.setText("jTextField1"); - - TF_PATH_STM32_UTILITY.setText("jTextField1"); - - RB_REVERSE.setText("Reverse"); - - jLabel44.setText("Motor direction"); - - RB_DIRDET.setText("Direction Detection enabled"); - - TF_FRAC_HIGH.setText("30"); - - jLabel45.setText("Fraction upper limit"); - - TF_FRAC_LOW.setText("15"); - - jLabel46.setText("Fraction lower limit"); - - javax.swing.GroupLayout TAB1Layout = new javax.swing.GroupLayout(TAB1); - TAB1.setLayout(TAB1Layout); - TAB1Layout.setHorizontalGroup( - TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, TAB1Layout.createSequentialGroup() - .addContainerGap() - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(TAB1Layout.createSequentialGroup() - .addComponent(jLabel21) - .addGap(545, 545, 545)) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, TAB1Layout.createSequentialGroup() - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(TAB1Layout.createSequentialGroup() - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(TAB1Layout.createSequentialGroup() - .addComponent(jLabel27, javax.swing.GroupLayout.PREFERRED_SIZE, 84, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(TF_TS_COEF, javax.swing.GroupLayout.PREFERRED_SIZE, 69, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addComponent(RB_TORQUESENSOR)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel41) - .addComponent(jLabel42)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)) - .addGroup(TAB1Layout.createSequentialGroup() - .addGap(15, 15, 15) - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(TAB1Layout.createSequentialGroup() - .addGap(132, 132, 132) - .addComponent(jLabel28)) - .addGroup(TAB1Layout.createSequentialGroup() - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(Label_Parameter1) - .addComponent(RB_JLCD) - .addComponent(RB_KM5S) - .addComponent(RB_DEBUG) - .addComponent(RB_KUNTENG) - .addComponent(RB_BAFANG)) - .addGap(67, 67, 67) - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addGroup(TAB1Layout.createSequentialGroup() - .addComponent(jLabel46) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(TF_FRAC_LOW, javax.swing.GroupLayout.PREFERRED_SIZE, 49, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(TAB1Layout.createSequentialGroup() - .addComponent(jLabel45) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(TF_FRAC_HIGH, javax.swing.GroupLayout.PREFERRED_SIZE, 49, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addComponent(RB_DIRDET) - .addGroup(TAB1Layout.createSequentialGroup() - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel30) - .addComponent(jLabel29)) - .addGap(18, 18, 18) - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(TF_PAS_TIMEOUT, javax.swing.GroupLayout.DEFAULT_SIZE, 64, Short.MAX_VALUE) - .addComponent(TF_PAS_RAMP_END)))))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 51, Short.MAX_VALUE))) - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addGroup(TAB1Layout.createSequentialGroup() - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, TAB1Layout.createSequentialGroup() - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(TAB1Layout.createSequentialGroup() - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel32) - .addComponent(jLabel33)) - .addGap(18, 18, 18) - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(TF_THROTTLE_OFFSET) - .addComponent(TF_THROTTLE_MAX, javax.swing.GroupLayout.PREFERRED_SIZE, 57, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addComponent(jLabel44) - .addComponent(RB_REVERSE) - .addComponent(jLabel31)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel35) - .addComponent(jLabel39) - .addComponent(jLabel38) - .addComponent(jLabel37) - .addComponent(jLabel36) - .addComponent(jLabel34)) - .addGap(16, 16, 16)) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, TAB1Layout.createSequentialGroup() - .addComponent(jLabel40) - .addGap(33, 33, 33))) - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(TF_PH_CURRENT_MAX) - .addComponent(TF_PULSES_PER_REVOLUTION) - .addComponent(TF_SPEC_ANGLE) - .addComponent(TF_WHEEL_CIRC) - .addComponent(TF_GEAR_RATIO) - .addComponent(TF_SPEED_LIMIT, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addComponent(TF_PATH_STM32_UTILITY) - .addComponent(TF_PATH_ECLIPSE, javax.swing.GroupLayout.PREFERRED_SIZE, 406, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(61, 61, 61)))) - ); - TAB1Layout.setVerticalGroup( - TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(TAB1Layout.createSequentialGroup() - .addGap(27, 27, 27) - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(TAB1Layout.createSequentialGroup() - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(Label_Parameter1) - .addComponent(jLabel28)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(RB_JLCD) - .addComponent(jLabel29) - .addComponent(TF_PAS_TIMEOUT, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(RB_KM5S) - .addComponent(jLabel30) - .addComponent(TF_PAS_RAMP_END, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(RB_BAFANG) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(RB_KUNTENG) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(RB_DEBUG)) - .addGroup(TAB1Layout.createSequentialGroup() - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addGroup(javax.swing.GroupLayout.Alignment.LEADING, TAB1Layout.createSequentialGroup() - .addComponent(jLabel31) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel32) - .addComponent(TF_THROTTLE_OFFSET, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel33) - .addComponent(TF_THROTTLE_MAX, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel44) - .addComponent(RB_DIRDET)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(RB_REVERSE) - .addComponent(TF_FRAC_HIGH, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel45))) - .addGroup(javax.swing.GroupLayout.Alignment.LEADING, TAB1Layout.createSequentialGroup() - .addComponent(jLabel34) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel35) - .addComponent(TF_WHEEL_CIRC, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel36) - .addComponent(TF_GEAR_RATIO, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(TF_SPEED_LIMIT, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel37)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel38) - .addComponent(TF_PULSES_PER_REVOLUTION, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel39) - .addComponent(TF_PH_CURRENT_MAX, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(TF_FRAC_LOW, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel46)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel40) - .addComponent(TF_SPEC_ANGLE, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, TAB1Layout.createSequentialGroup() - .addComponent(jLabel21) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(RB_TORQUESENSOR) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(TF_TS_COEF, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel27))) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, TAB1Layout.createSequentialGroup() - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(TF_PATH_ECLIPSE, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel41)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(TAB1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(TF_PATH_STM32_UTILITY, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel42)))) - .addContainerGap(77, Short.MAX_VALUE)) - ); - - RB_JLCD.getAccessibleContext().setAccessibleName("RB_J-LCD"); - - jTabbedPane1.addTab("Basic Settings", TAB1); - - TF_TRIGGER_OFFSET.setText("50"); - - Label_Param3.setText("Trigger offset ADC"); - - RB_FAST_LOOP_LOG.setText("enable fast loop logging"); - - RB_DISABLE_DYN_ADC.setText("disable dynamic ADC"); - - TF_TRIGGER_DEFAULT.setText("2020"); - - jLabel3.setText("Trigger default"); - - jLabel4.setText("ADC Timing"); - - jLabel5.setText("Timer period"); - - TF_TIMER_PERIOD.setText("2028"); - - jLabel6.setText("Calibration"); - - jLabel7.setText("Battery Voltage"); - - TF_CAL_BAT_V.setText("256"); - - TF_CAL_V.setText("15LL<<8"); - - jLabel8.setText("FOC Voltage"); - - TF_CAL_I.setText("38LL<<8"); - - jLabel9.setText("FOC Current"); - - jLabel10.setText("Sensorless settings"); - - jLabel11.setText("Inductance"); - - TF_INDUCTANCE.setText("6LL"); - - jLabel12.setText("Resistance"); - - TF_RESISTANCE.setText("40LL"); - - jLabel13.setText("Flux Linkage"); - - TF_FLUX_LINKAGE.setText("1200LL"); - - jLabel14.setText("Gamma"); - - TF_GAMMA.setText("9LL"); - - jLabel15.setText("Battery settings"); - - jLabel16.setText("Bar 1"); - - jLabel17.setText("Bar 2"); - - jLabel18.setText("Bar 3"); - - jLabel19.setText("Bar 4"); - - TF_BATTERY_LEVEL_1.setText("323000"); - - TF_BATTERY_LEVEL_2.setText("329000"); - - jLabel20.setText("Bar 5"); - - TF_BATTERY_LEVEL_3.setText("344000"); - - TF_BATTERY_LEVEL_4.setText("368000"); - - TF_BATTERY_LEVEL_5.setText("380000"); - - jLabel22.setText("PI control settings"); - - jLabel23.setText("Iq p-factor"); - - jLabel24.setText("Iq i-factor"); - - jLabel25.setText("Id p-factor"); - - jLabel26.setText("Id i-factor"); - - TF_P_FACTOR_I_Q.setText("0.1L"); - - TF_I_FACTOR_I_Q.setText("0.01L"); - - TF_P_FACTOR_I_D.setText("1"); - - TF_I_FACTOR_I_D.setText("1"); - - javax.swing.GroupLayout TAB2Layout = new javax.swing.GroupLayout(TAB2); - TAB2.setLayout(TAB2Layout); - TAB2Layout.setHorizontalGroup( - TAB2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, TAB2Layout.createSequentialGroup() - .addGap(27, 27, 27) - .addGroup(TAB2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(TAB2Layout.createSequentialGroup() - .addGroup(TAB2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 159, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGroup(TAB2Layout.createSequentialGroup() - .addGroup(TAB2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(TAB2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(Label_Param3, javax.swing.GroupLayout.DEFAULT_SIZE, 93, Short.MAX_VALUE) - .addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addComponent(jLabel5)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(TAB2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(TF_TRIGGER_OFFSET) - .addComponent(TF_TRIGGER_DEFAULT, javax.swing.GroupLayout.DEFAULT_SIZE, 47, Short.MAX_VALUE) - .addComponent(TF_TIMER_PERIOD)))) - .addGap(31, 31, 31) - .addGroup(TAB2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(jLabel22) - .addGroup(TAB2Layout.createSequentialGroup() - .addComponent(jLabel23) - .addGap(18, 18, 18) - .addComponent(TF_P_FACTOR_I_Q, javax.swing.GroupLayout.PREFERRED_SIZE, 55, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(TAB2Layout.createSequentialGroup() - .addComponent(jLabel24) - .addGap(22, 22, 22) - .addComponent(TF_I_FACTOR_I_Q)) - .addGroup(TAB2Layout.createSequentialGroup() - .addComponent(jLabel25) - .addGap(18, 18, 18) - .addComponent(TF_P_FACTOR_I_D)) - .addGroup(TAB2Layout.createSequentialGroup() - .addComponent(jLabel26) - .addGap(22, 22, 22) - .addComponent(TF_I_FACTOR_I_D))) - .addGap(82, 82, 82) - .addGroup(TAB2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(TAB2Layout.createSequentialGroup() - .addGroup(TAB2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel11) - .addComponent(jLabel12) - .addComponent(jLabel13) - .addComponent(jLabel14)) - .addGap(18, 18, 18) - .addGroup(TAB2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(TF_RESISTANCE) - .addComponent(TF_INDUCTANCE) - .addComponent(TF_FLUX_LINKAGE) - .addComponent(TF_GAMMA))) - .addComponent(jLabel10, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(TAB2Layout.createSequentialGroup() - .addGroup(TAB2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addGroup(TAB2Layout.createSequentialGroup() - .addGroup(TAB2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(jLabel9, javax.swing.GroupLayout.PREFERRED_SIZE, 75, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jLabel8, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(18, 18, 18) - .addGroup(TAB2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(TF_CAL_BAT_V) - .addComponent(TF_CAL_V) - .addComponent(TF_CAL_I, javax.swing.GroupLayout.PREFERRED_SIZE, 72, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 173, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(0, 0, Short.MAX_VALUE))) - .addGap(75, 75, 75) - .addGroup(TAB2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addGroup(TAB2Layout.createSequentialGroup() - .addComponent(jLabel20) - .addGap(18, 18, 18) - .addComponent(TF_BATTERY_LEVEL_5)) - .addComponent(jLabel15) - .addGroup(TAB2Layout.createSequentialGroup() - .addComponent(jLabel17) - .addGap(18, 18, 18) - .addComponent(TF_BATTERY_LEVEL_2)) - .addGroup(TAB2Layout.createSequentialGroup() - .addComponent(jLabel18) - .addGap(18, 18, 18) - .addComponent(TF_BATTERY_LEVEL_3)) - .addGroup(TAB2Layout.createSequentialGroup() - .addComponent(jLabel19) - .addGap(18, 18, 18) - .addComponent(TF_BATTERY_LEVEL_4)) - .addGroup(TAB2Layout.createSequentialGroup() - .addComponent(jLabel16) - .addGap(18, 18, 18) - .addComponent(TF_BATTERY_LEVEL_1, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addGap(107, 107, 107)) - .addGroup(TAB2Layout.createSequentialGroup() - .addGroup(TAB2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(RB_DISABLE_DYN_ADC) - .addComponent(RB_FAST_LOOP_LOG)) - .addGap(0, 0, Short.MAX_VALUE)))) - ); - TAB2Layout.setVerticalGroup( - TAB2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(TAB2Layout.createSequentialGroup() - .addGroup(TAB2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(TAB2Layout.createSequentialGroup() - .addGroup(TAB2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(TAB2Layout.createSequentialGroup() - .addGap(8, 8, 8) - .addGroup(TAB2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel4) - .addComponent(jLabel22))) - .addGroup(TAB2Layout.createSequentialGroup() - .addContainerGap() - .addComponent(jLabel10))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(TAB2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(TF_TRIGGER_OFFSET, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(Label_Param3) - .addComponent(jLabel11) - .addComponent(TF_INDUCTANCE, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel23) - .addComponent(TF_P_FACTOR_I_Q, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(TAB2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(TF_TRIGGER_DEFAULT, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel3) - .addComponent(jLabel12) - .addComponent(TF_RESISTANCE, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel24) - .addComponent(TF_I_FACTOR_I_Q, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(TAB2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel5) - .addComponent(TF_TIMER_PERIOD, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel13) - .addComponent(TF_FLUX_LINKAGE, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel25) - .addComponent(TF_P_FACTOR_I_D, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(TAB2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel14) - .addComponent(TF_GAMMA, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel26) - .addComponent(TF_I_FACTOR_I_D, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jLabel6) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(TAB2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel7) - .addComponent(TF_CAL_BAT_V, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(TAB2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(TF_CAL_V, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel8)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(TAB2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(TF_CAL_I, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel9))) - .addGroup(TAB2Layout.createSequentialGroup() - .addContainerGap() - .addComponent(jLabel15) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(TAB2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel16) - .addComponent(TF_BATTERY_LEVEL_1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(TAB2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel17) - .addComponent(TF_BATTERY_LEVEL_2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(TAB2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel18) - .addComponent(TF_BATTERY_LEVEL_3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(TAB2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel19) - .addComponent(TF_BATTERY_LEVEL_4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(TAB2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel20) - .addComponent(TF_BATTERY_LEVEL_5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))) - .addGap(23, 23, 23) - .addComponent(RB_FAST_LOOP_LOG) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(RB_DISABLE_DYN_ADC) - .addGap(40, 40, 40)) - ); - - jTabbedPane1.addTab("Advanced Settings", TAB2); - - label1.setFont(new java.awt.Font("Ebrima", 0, 24)); // NOI18N - label1.setText("Lishui Parameter Configurator"); - - expSet.setModel(new javax.swing.AbstractListModel() { - String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" }; - public int getSize() { return strings.length; } - public String getElementAt(int i) { return strings[i]; } - }); - jScrollPane1.setViewportView(expSet); - - jLabel1.setText("Experimental Settings"); - - provSet.setModel(new javax.swing.AbstractListModel() { - String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" }; - public int getSize() { return strings.length; } - public String getElementAt(int i) { return strings[i]; } - }); - jScrollPane2.setViewportView(provSet); - - jLabel2.setText("Proven Settings"); - - jButton1.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N - jButton1.setText("Compile & Flash"); - jButton1.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - jButton1ActionPerformed(evt); - } - }); - - jButton2.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N - jButton2.setText("Unlock controller"); - - jLabel43.setText(" "); - - BG_FLASHOPTIONS.add(RB_UART); - RB_UART.setText("UART"); - - BG_FLASHOPTIONS.add(RB_STLINK); - RB_STLINK.setSelected(true); - RB_STLINK.setText("STLink"); - - TF_COMPORT.setText("com4"); - - javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 837, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(63, 63, 63) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jScrollPane2) - .addComponent(jScrollPane1) - .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel1) - .addComponent(jLabel2)) - .addGap(0, 0, Short.MAX_VALUE)) - .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addGroup(layout.createSequentialGroup() - .addComponent(RB_STLINK) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(RB_UART)) - .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 129, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 136, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(TF_COMPORT, javax.swing.GroupLayout.PREFERRED_SIZE, 47, javax.swing.GroupLayout.PREFERRED_SIZE))))) - .addGroup(layout.createSequentialGroup() - .addComponent(label1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jLabel43))) - .addGap(29, 29, 29)) - ); - layout.setVerticalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addGap(23, 23, 23) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(label1, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel43)) - .addGap(20, 20, 20) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addComponent(jTabbedPane1) - .addGap(40, 40, 40)) - .addGroup(layout.createSequentialGroup() - .addComponent(jLabel1) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 109, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(18, 18, 18) - .addComponent(jLabel2) - .addGap(3, 3, 3) - .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 113, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(20, 20, 20) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(RB_UART) - .addComponent(RB_STLINK) - .addComponent(TF_COMPORT, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 47, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) - ); - - jTabbedPane1.getAccessibleContext().setAccessibleName("MotorConfiguration"); - - pack(); - }// //GEN-END:initComponents - - private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed - // TODO add your handling code here: - }//GEN-LAST:event_jButton1ActionPerformed - - private void RB_JLCDActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_RB_JLCDActionPerformed - // TODO add your handling code here: - }//GEN-LAST:event_RB_JLCDActionPerformed - - /** - * @param args the command line arguments - */ - public static void main(String args[]) { - /* Set the Nimbus look and feel */ - // - /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. - * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html - */ - try { - for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { - if ("Nimbus".equals(info.getName())) { - javax.swing.UIManager.setLookAndFeel(info.getClassName()); - break; - } - } - } catch (ClassNotFoundException ex) { - java.util.logging.Logger.getLogger(Lishui_Parameter_Configurator.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); - } catch (InstantiationException ex) { - java.util.logging.Logger.getLogger(Lishui_Parameter_Configurator.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); - } catch (IllegalAccessException ex) { - java.util.logging.Logger.getLogger(Lishui_Parameter_Configurator.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); - } catch (javax.swing.UnsupportedLookAndFeelException ex) { - java.util.logging.Logger.getLogger(Lishui_Parameter_Configurator.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); - } - // - // - - /* Create and display the form */ - java.awt.EventQueue.invokeLater(new Runnable() { - public void run() { - new Lishui_Parameter_Configurator().setVisible(true); - } - }); - } - - // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.ButtonGroup BG_DISPLAYS; - private javax.swing.ButtonGroup BG_FLASHOPTIONS; - private javax.swing.JLabel Label_Param3; - private javax.swing.JLabel Label_Parameter1; - private javax.swing.JRadioButton RB_BAFANG; - private javax.swing.JRadioButton RB_DEBUG; - private javax.swing.JRadioButton RB_DIRDET; - private javax.swing.JRadioButton RB_DISABLE_DYN_ADC; - private javax.swing.JRadioButton RB_FAST_LOOP_LOG; - private javax.swing.JRadioButton RB_JLCD; - private javax.swing.JRadioButton RB_KM5S; - private javax.swing.JRadioButton RB_KUNTENG; - private javax.swing.JRadioButton RB_REVERSE; - private javax.swing.JRadioButton RB_STLINK; - private javax.swing.JRadioButton RB_TORQUESENSOR; - private javax.swing.JRadioButton RB_UART; - private javax.swing.JPanel TAB1; - private javax.swing.JPanel TAB2; - private javax.swing.JTextField TF_BATTERY_LEVEL_1; - private javax.swing.JTextField TF_BATTERY_LEVEL_2; - private javax.swing.JTextField TF_BATTERY_LEVEL_3; - private javax.swing.JTextField TF_BATTERY_LEVEL_4; - private javax.swing.JTextField TF_BATTERY_LEVEL_5; - private javax.swing.JTextField TF_CAL_BAT_V; - private javax.swing.JTextField TF_CAL_I; - private javax.swing.JTextField TF_CAL_V; - private javax.swing.JTextField TF_COMPORT; - private javax.swing.JTextField TF_FLUX_LINKAGE; - private javax.swing.JTextField TF_FRAC_HIGH; - private javax.swing.JTextField TF_FRAC_LOW; - private javax.swing.JTextField TF_GAMMA; - private javax.swing.JTextField TF_GEAR_RATIO; - private javax.swing.JTextField TF_INDUCTANCE; - private javax.swing.JTextField TF_I_FACTOR_I_D; - private javax.swing.JTextField TF_I_FACTOR_I_Q; - private javax.swing.JTextField TF_PAS_RAMP_END; - private javax.swing.JTextField TF_PAS_TIMEOUT; - private javax.swing.JTextField TF_PATH_ECLIPSE; - private javax.swing.JTextField TF_PATH_STM32_UTILITY; - private javax.swing.JTextField TF_PH_CURRENT_MAX; - private javax.swing.JTextField TF_PULSES_PER_REVOLUTION; - private javax.swing.JTextField TF_P_FACTOR_I_D; - private javax.swing.JTextField TF_P_FACTOR_I_Q; - private javax.swing.JTextField TF_RESISTANCE; - private javax.swing.JTextField TF_SPEC_ANGLE; - private javax.swing.JTextField TF_SPEED_LIMIT; - private javax.swing.JTextField TF_THROTTLE_MAX; - private javax.swing.JTextField TF_THROTTLE_OFFSET; - private javax.swing.JTextField TF_TIMER_PERIOD; - private javax.swing.JTextField TF_TRIGGER_DEFAULT; - private javax.swing.JTextField TF_TRIGGER_OFFSET; - private javax.swing.JTextField TF_TS_COEF; - private javax.swing.JTextField TF_WHEEL_CIRC; - private javax.swing.JList expSet; - private javax.swing.JButton jButton1; - private javax.swing.JButton jButton2; - private javax.swing.JLabel jLabel1; - private javax.swing.JLabel jLabel10; - private javax.swing.JLabel jLabel11; - private javax.swing.JLabel jLabel12; - private javax.swing.JLabel jLabel13; - private javax.swing.JLabel jLabel14; - private javax.swing.JLabel jLabel15; - private javax.swing.JLabel jLabel16; - private javax.swing.JLabel jLabel17; - private javax.swing.JLabel jLabel18; - private javax.swing.JLabel jLabel19; - private javax.swing.JLabel jLabel2; - private javax.swing.JLabel jLabel20; - private javax.swing.JLabel jLabel21; - private javax.swing.JLabel jLabel22; - private javax.swing.JLabel jLabel23; - private javax.swing.JLabel jLabel24; - private javax.swing.JLabel jLabel25; - private javax.swing.JLabel jLabel26; - private javax.swing.JLabel jLabel27; - private javax.swing.JLabel jLabel28; - private javax.swing.JLabel jLabel29; - private javax.swing.JLabel jLabel3; - private javax.swing.JLabel jLabel30; - private javax.swing.JLabel jLabel31; - private javax.swing.JLabel jLabel32; - private javax.swing.JLabel jLabel33; - private javax.swing.JLabel jLabel34; - private javax.swing.JLabel jLabel35; - private javax.swing.JLabel jLabel36; - private javax.swing.JLabel jLabel37; - private javax.swing.JLabel jLabel38; - private javax.swing.JLabel jLabel39; - private javax.swing.JLabel jLabel4; - private javax.swing.JLabel jLabel40; - private javax.swing.JLabel jLabel41; - private javax.swing.JLabel jLabel42; - private javax.swing.JLabel jLabel43; - private javax.swing.JLabel jLabel44; - private javax.swing.JLabel jLabel45; - private javax.swing.JLabel jLabel46; - private javax.swing.JLabel jLabel5; - private javax.swing.JLabel jLabel6; - private javax.swing.JLabel jLabel7; - private javax.swing.JLabel jLabel8; - private javax.swing.JLabel jLabel9; - private javax.swing.JScrollPane jScrollPane1; - private javax.swing.JScrollPane jScrollPane2; - private javax.swing.JTabbedPane jTabbedPane1; - private java.awt.Label label1; - private javax.swing.JList provSet; - // End of variables declaration//GEN-END:variables -} diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_B10B-PH-K.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_B10B-PH-K.kicad_mod deleted file mode 100644 index 47903db4..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_B10B-PH-K.kicad_mod +++ /dev/null @@ -1,79 +0,0 @@ -(module Connectors_JST_B10B-PH-K (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, B10B-PH-K") - (tags "connector jst ph") - (fp_text reference REF** (at 0 -3) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_B10B-PH-K (at 9 4) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -1.95 2.8) (end -1.95 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -1.7) (end 19.95 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start 19.95 -1.7) (end 19.95 2.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 19.95 2.8) (end -1.95 2.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.7) (end 0.5 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.2) (end -1.45 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.45 -1.2) (end -1.45 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.45 2.3) (end 19.45 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 19.45 2.3) (end 19.45 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 19.45 -1.2) (end 17.5 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.5 -1.2) (end 17.5 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -0.5) (end -1.45 -0.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 0.8) (end -1.45 0.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 19.45 -0.5) (end 19.95 -0.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 19.45 0.8) (end 19.95 0.8) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.7) (end -0.3 -1.9) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.9) (end -0.6 -1.9) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.6 -1.9) (end -0.6 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.8) (end -0.6 -1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 2.3) (end 0.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 1.8) (end 1.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.1 1.8) (end 1.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 1 2.3) (end 1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 2.3) (end 2.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 1.8) (end 3.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.1 1.8) (end 3.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 2.3) (end 3 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 2.3) (end 4.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 1.8) (end 5.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.1 1.8) (end 5.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 2.3) (end 5 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 2.3) (end 6.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 1.8) (end 7.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.1 1.8) (end 7.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 2.3) (end 7 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 2.3) (end 8.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 1.8) (end 9.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.1 1.8) (end 9.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 9 2.3) (end 9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 2.3) (end 10.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 1.8) (end 11.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.1 1.8) (end 11.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 11 2.3) (end 11 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 2.3) (end 12.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 1.8) (end 13.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.1 1.8) (end 13.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 13 2.3) (end 13 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.9 2.3) (end 14.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.9 1.8) (end 15.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.1 1.8) (end 15.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 15 2.3) (end 15 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 16.9 2.3) (end 16.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 16.9 1.8) (end 17.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.1 1.8) (end 17.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 17 2.3) (end 17 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.45 3.3) (end -2.45 -2.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.45 -2.2) (end 20.45 -2.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start 20.45 -2.2) (end 20.45 3.3) (layer F.CrtYd) (width 0.05)) - (fp_line (start 20.45 3.3) (end -2.45 3.3) (layer F.CrtYd) (width 0.05)) - (pad 1 thru_hole rect (at 0 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 4 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 6 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole oval (at 8 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 6 thru_hole oval (at 10 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 7 thru_hole oval (at 12 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 8 thru_hole oval (at 14 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 9 thru_hole oval (at 16 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 10 thru_hole oval (at 18 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_B10B-PH-SM4-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_B10B-PH-SM4-TB.kicad_mod deleted file mode 100644 index c0b43a32..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_B10B-PH-SM4-TB.kicad_mod +++ /dev/null @@ -1,97 +0,0 @@ -(module Connectors_JST_B10B-PH-SM4-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, B10B-PH-SM4-TB") - (tags "connector jst ph") - (attr smd) - (fp_text reference REF** (at -9 -4.725) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_B10B-PH-SM4-TB (at 0 5.275) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -10.4 2.125) (end -10.15 2.125) (layer F.SilkS) (width 0.15)) - (fp_line (start -12 -3.025) (end -12 -3.625) (layer F.SilkS) (width 0.15)) - (fp_line (start -12 -3.625) (end 12 -3.625) (layer F.SilkS) (width 0.15)) - (fp_line (start 12 -3.625) (end 12 -3.025) (layer F.SilkS) (width 0.15)) - (fp_line (start -12 0.775) (end -12 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -12 1.375) (end -9.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 12 0.775) (end 12 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 12 1.375) (end 9.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.5 -3.625) (end -8.5 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.5 -2.925) (end -10.2 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.2 -2.925) (end -10.2 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.2 0.575) (end -9.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.5 -3.625) (end 8.5 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.5 -2.925) (end 10.2 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.2 -2.925) (end 10.2 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.2 0.575) (end 9.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.1 1.375) (end -7.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.1 0.575) (end -7.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.1 0.575) (end -8.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.1 0.075) (end -7.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.9 0.075) (end -7.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -8 0.575) (end -8 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.1 1.375) (end -5.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.1 0.575) (end -5.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.1 0.575) (end -6.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.1 0.075) (end -5.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.9 0.075) (end -5.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 0.575) (end -6 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.1 1.375) (end -3.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.1 0.575) (end -3.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.1 0.575) (end -4.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.1 0.075) (end -3.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.9 0.075) (end -3.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 0.575) (end -4 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 1.375) (end -1.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 0.575) (end -1.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 0.575) (end -2.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 0.075) (end -1.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.9 0.075) (end -1.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 0.575) (end -2 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 1.375) (end 0.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 0.575) (end 0.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 0.575) (end -0.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 0.075) (end 0.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.1 0.075) (end 0.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 0 0.575) (end 0 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 1.375) (end 2.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 0.575) (end 2.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 0.575) (end 1.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 0.075) (end 2.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.1 0.075) (end 2.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 0.575) (end 2 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.9 1.375) (end 4.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.9 0.575) (end 4.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.9 0.575) (end 3.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.9 0.075) (end 4.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.1 0.075) (end 4.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 0.575) (end 4 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.9 1.375) (end 6.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.9 0.575) (end 6.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.9 0.575) (end 5.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.9 0.075) (end 6.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.1 0.075) (end 6.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 0.575) (end 6 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.9 1.375) (end 8.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.9 0.575) (end 8.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.9 0.575) (end 7.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.9 0.075) (end 8.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.1 0.075) (end 8.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 8 0.575) (end 8 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.7 4.4) (end -12.7 -4.15) (layer F.CrtYd) (width 0.05)) - (fp_line (start -12.7 -4.15) (end 12.7 -4.15) (layer F.CrtYd) (width 0.05)) - (fp_line (start 12.7 -4.15) (end 12.7 4.4) (layer F.CrtYd) (width 0.05)) - (fp_line (start 12.7 4.4) (end -12.7 4.4) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -9 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -7 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -5 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -3 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at -1 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at 1 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at 3 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at 5 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 9 smd rect (at 7 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 10 smd rect (at 9 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -11.4 -1.125) (size 1.6 3) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 11.4 -1.125) (size 1.6 3) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_B11B-PH-K.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_B11B-PH-K.kicad_mod deleted file mode 100644 index 3b7c1e27..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_B11B-PH-K.kicad_mod +++ /dev/null @@ -1,84 +0,0 @@ -(module Connectors_JST_B11B-PH-K (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, B11B-PH-K") - (tags "connector jst ph") - (fp_text reference REF** (at 0 -3) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_B11B-PH-K (at 10 4) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -1.95 2.8) (end -1.95 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -1.7) (end 21.95 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start 21.95 -1.7) (end 21.95 2.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 21.95 2.8) (end -1.95 2.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.7) (end 0.5 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.2) (end -1.45 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.45 -1.2) (end -1.45 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.45 2.3) (end 21.45 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 21.45 2.3) (end 21.45 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 21.45 -1.2) (end 19.5 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 19.5 -1.2) (end 19.5 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -0.5) (end -1.45 -0.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 0.8) (end -1.45 0.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 21.45 -0.5) (end 21.95 -0.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 21.45 0.8) (end 21.95 0.8) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.7) (end -0.3 -1.9) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.9) (end -0.6 -1.9) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.6 -1.9) (end -0.6 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.8) (end -0.6 -1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 2.3) (end 0.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 1.8) (end 1.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.1 1.8) (end 1.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 1 2.3) (end 1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 2.3) (end 2.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 1.8) (end 3.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.1 1.8) (end 3.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 2.3) (end 3 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 2.3) (end 4.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 1.8) (end 5.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.1 1.8) (end 5.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 2.3) (end 5 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 2.3) (end 6.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 1.8) (end 7.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.1 1.8) (end 7.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 2.3) (end 7 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 2.3) (end 8.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 1.8) (end 9.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.1 1.8) (end 9.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 9 2.3) (end 9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 2.3) (end 10.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 1.8) (end 11.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.1 1.8) (end 11.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 11 2.3) (end 11 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 2.3) (end 12.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 1.8) (end 13.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.1 1.8) (end 13.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 13 2.3) (end 13 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.9 2.3) (end 14.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.9 1.8) (end 15.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.1 1.8) (end 15.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 15 2.3) (end 15 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 16.9 2.3) (end 16.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 16.9 1.8) (end 17.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.1 1.8) (end 17.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 17 2.3) (end 17 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 18.9 2.3) (end 18.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 18.9 1.8) (end 19.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 19.1 1.8) (end 19.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 19 2.3) (end 19 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.45 3.3) (end -2.45 -2.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.45 -2.2) (end 22.45 -2.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start 22.45 -2.2) (end 22.45 3.3) (layer F.CrtYd) (width 0.05)) - (fp_line (start 22.45 3.3) (end -2.45 3.3) (layer F.CrtYd) (width 0.05)) - (pad 1 thru_hole rect (at 0 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 4 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 6 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole oval (at 8 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 6 thru_hole oval (at 10 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 7 thru_hole oval (at 12 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 8 thru_hole oval (at 14 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 9 thru_hole oval (at 16 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 10 thru_hole oval (at 18 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 11 thru_hole oval (at 20 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_B11B-PH-SM4-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_B11B-PH-SM4-TB.kicad_mod deleted file mode 100644 index 39d889dd..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_B11B-PH-SM4-TB.kicad_mod +++ /dev/null @@ -1,104 +0,0 @@ -(module Connectors_JST_B11B-PH-SM4-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, B11B-PH-SM4-TB") - (tags "connector jst ph") - (attr smd) - (fp_text reference REF** (at -10 -4.725) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_B11B-PH-SM4-TB (at 0 5.275) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -11.4 2.125) (end -11.15 2.125) (layer F.SilkS) (width 0.15)) - (fp_line (start -13 -3.025) (end -13 -3.625) (layer F.SilkS) (width 0.15)) - (fp_line (start -13 -3.625) (end 13 -3.625) (layer F.SilkS) (width 0.15)) - (fp_line (start 13 -3.625) (end 13 -3.025) (layer F.SilkS) (width 0.15)) - (fp_line (start -13 0.775) (end -13 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -13 1.375) (end -10.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 13 0.775) (end 13 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 13 1.375) (end 10.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.5 -3.625) (end -9.5 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.5 -2.925) (end -11.2 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start -11.2 -2.925) (end -11.2 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -11.2 0.575) (end -10.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.5 -3.625) (end 9.5 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.5 -2.925) (end 11.2 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.2 -2.925) (end 11.2 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.2 0.575) (end 10.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.1 1.375) (end -8.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.1 0.575) (end -8.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.1 0.575) (end -9.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.1 0.075) (end -8.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.9 0.075) (end -8.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -9 0.575) (end -9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.1 1.375) (end -6.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.1 0.575) (end -6.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.1 0.575) (end -7.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.1 0.075) (end -6.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.9 0.075) (end -6.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 0.575) (end -7 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.1 1.375) (end -4.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.1 0.575) (end -4.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.1 0.575) (end -5.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.1 0.075) (end -4.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.9 0.075) (end -4.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 0.575) (end -5 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.1 1.375) (end -2.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.1 0.575) (end -2.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.1 0.575) (end -3.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.1 0.075) (end -2.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.9 0.075) (end -2.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 0.575) (end -3 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 1.375) (end -0.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 0.575) (end -0.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 0.575) (end -1.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 0.075) (end -0.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.9 0.075) (end -0.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -1 0.575) (end -1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 1.375) (end 1.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.575) (end 1.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.575) (end 0.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.075) (end 1.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.1 0.075) (end 1.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 1 0.575) (end 1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 1.375) (end 3.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.575) (end 3.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.575) (end 2.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.075) (end 3.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.1 0.075) (end 3.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 0.575) (end 3 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 1.375) (end 5.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 0.575) (end 5.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 0.575) (end 4.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 0.075) (end 5.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.1 0.075) (end 5.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 0.575) (end 5 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 1.375) (end 7.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 0.575) (end 7.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 0.575) (end 6.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 0.075) (end 7.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.1 0.075) (end 7.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 0.575) (end 7 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 1.375) (end 9.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 0.575) (end 9.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 0.575) (end 8.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 0.075) (end 9.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.1 0.075) (end 9.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 9 0.575) (end 9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -13.7 4.4) (end -13.7 -4.15) (layer F.CrtYd) (width 0.05)) - (fp_line (start -13.7 -4.15) (end 13.7 -4.15) (layer F.CrtYd) (width 0.05)) - (fp_line (start 13.7 -4.15) (end 13.7 4.4) (layer F.CrtYd) (width 0.05)) - (fp_line (start 13.7 4.4) (end -13.7 4.4) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -10 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -8 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -6 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -4 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at -2 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at 0 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at 2 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at 4 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 9 smd rect (at 6 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 10 smd rect (at 8 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 11 smd rect (at 10 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -12.4 -1.125) (size 1.6 3) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 12.4 -1.125) (size 1.6 3) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_B12B-PH-K.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_B12B-PH-K.kicad_mod deleted file mode 100644 index f11c2448..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_B12B-PH-K.kicad_mod +++ /dev/null @@ -1,89 +0,0 @@ -(module Connectors_JST_B12B-PH-K (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, B12B-PH-K") - (tags "connector jst ph") - (fp_text reference REF** (at 0 -3) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_B12B-PH-K (at 11 4) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -1.95 2.8) (end -1.95 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -1.7) (end 23.95 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start 23.95 -1.7) (end 23.95 2.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 23.95 2.8) (end -1.95 2.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.7) (end 0.5 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.2) (end -1.45 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.45 -1.2) (end -1.45 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.45 2.3) (end 23.45 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 23.45 2.3) (end 23.45 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 23.45 -1.2) (end 21.5 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 21.5 -1.2) (end 21.5 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -0.5) (end -1.45 -0.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 0.8) (end -1.45 0.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 23.45 -0.5) (end 23.95 -0.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 23.45 0.8) (end 23.95 0.8) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.7) (end -0.3 -1.9) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.9) (end -0.6 -1.9) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.6 -1.9) (end -0.6 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.8) (end -0.6 -1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 2.3) (end 0.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 1.8) (end 1.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.1 1.8) (end 1.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 1 2.3) (end 1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 2.3) (end 2.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 1.8) (end 3.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.1 1.8) (end 3.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 2.3) (end 3 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 2.3) (end 4.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 1.8) (end 5.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.1 1.8) (end 5.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 2.3) (end 5 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 2.3) (end 6.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 1.8) (end 7.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.1 1.8) (end 7.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 2.3) (end 7 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 2.3) (end 8.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 1.8) (end 9.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.1 1.8) (end 9.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 9 2.3) (end 9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 2.3) (end 10.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 1.8) (end 11.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.1 1.8) (end 11.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 11 2.3) (end 11 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 2.3) (end 12.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 1.8) (end 13.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.1 1.8) (end 13.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 13 2.3) (end 13 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.9 2.3) (end 14.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.9 1.8) (end 15.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.1 1.8) (end 15.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 15 2.3) (end 15 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 16.9 2.3) (end 16.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 16.9 1.8) (end 17.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.1 1.8) (end 17.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 17 2.3) (end 17 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 18.9 2.3) (end 18.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 18.9 1.8) (end 19.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 19.1 1.8) (end 19.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 19 2.3) (end 19 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 20.9 2.3) (end 20.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 20.9 1.8) (end 21.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 21.1 1.8) (end 21.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 21 2.3) (end 21 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.45 3.3) (end -2.45 -2.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.45 -2.2) (end 24.45 -2.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start 24.45 -2.2) (end 24.45 3.3) (layer F.CrtYd) (width 0.05)) - (fp_line (start 24.45 3.3) (end -2.45 3.3) (layer F.CrtYd) (width 0.05)) - (pad 1 thru_hole rect (at 0 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 4 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 6 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole oval (at 8 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 6 thru_hole oval (at 10 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 7 thru_hole oval (at 12 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 8 thru_hole oval (at 14 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 9 thru_hole oval (at 16 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 10 thru_hole oval (at 18 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 11 thru_hole oval (at 20 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 12 thru_hole oval (at 22 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_B12B-PH-SM4-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_B12B-PH-SM4-TB.kicad_mod deleted file mode 100644 index 05deb06c..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_B12B-PH-SM4-TB.kicad_mod +++ /dev/null @@ -1,111 +0,0 @@ -(module Connectors_JST_B12B-PH-SM4-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, B12B-PH-SM4-TB") - (tags "connector jst ph") - (attr smd) - (fp_text reference REF** (at -11 -4.725) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_B12B-PH-SM4-TB (at 0 5.275) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -12.4 2.125) (end -12.15 2.125) (layer F.SilkS) (width 0.15)) - (fp_line (start -14 -3.025) (end -14 -3.625) (layer F.SilkS) (width 0.15)) - (fp_line (start -14 -3.625) (end 14 -3.625) (layer F.SilkS) (width 0.15)) - (fp_line (start 14 -3.625) (end 14 -3.025) (layer F.SilkS) (width 0.15)) - (fp_line (start -14 0.775) (end -14 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -14 1.375) (end -11.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 14 0.775) (end 14 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 14 1.375) (end 11.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.5 -3.625) (end -10.5 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.5 -2.925) (end -12.2 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.2 -2.925) (end -12.2 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.2 0.575) (end -11.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.5 -3.625) (end 10.5 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.5 -2.925) (end 12.2 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.2 -2.925) (end 12.2 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.2 0.575) (end 11.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.1 1.375) (end -9.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.1 0.575) (end -9.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.1 0.575) (end -10.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.1 0.075) (end -9.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.9 0.075) (end -9.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -10 0.575) (end -10 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.1 1.375) (end -7.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.1 0.575) (end -7.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.1 0.575) (end -8.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.1 0.075) (end -7.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.9 0.075) (end -7.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -8 0.575) (end -8 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.1 1.375) (end -5.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.1 0.575) (end -5.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.1 0.575) (end -6.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.1 0.075) (end -5.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.9 0.075) (end -5.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 0.575) (end -6 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.1 1.375) (end -3.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.1 0.575) (end -3.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.1 0.575) (end -4.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.1 0.075) (end -3.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.9 0.075) (end -3.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 0.575) (end -4 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 1.375) (end -1.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 0.575) (end -1.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 0.575) (end -2.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 0.075) (end -1.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.9 0.075) (end -1.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 0.575) (end -2 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 1.375) (end 0.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 0.575) (end 0.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 0.575) (end -0.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 0.075) (end 0.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.1 0.075) (end 0.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 0 0.575) (end 0 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 1.375) (end 2.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 0.575) (end 2.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 0.575) (end 1.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 0.075) (end 2.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.1 0.075) (end 2.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 0.575) (end 2 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.9 1.375) (end 4.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.9 0.575) (end 4.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.9 0.575) (end 3.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.9 0.075) (end 4.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.1 0.075) (end 4.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 0.575) (end 4 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.9 1.375) (end 6.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.9 0.575) (end 6.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.9 0.575) (end 5.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.9 0.075) (end 6.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.1 0.075) (end 6.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 0.575) (end 6 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.9 1.375) (end 8.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.9 0.575) (end 8.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.9 0.575) (end 7.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.9 0.075) (end 8.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.1 0.075) (end 8.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 8 0.575) (end 8 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.9 1.375) (end 10.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.9 0.575) (end 10.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.9 0.575) (end 9.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.9 0.075) (end 10.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.1 0.075) (end 10.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 10 0.575) (end 10 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -14.7 4.4) (end -14.7 -4.15) (layer F.CrtYd) (width 0.05)) - (fp_line (start -14.7 -4.15) (end 14.7 -4.15) (layer F.CrtYd) (width 0.05)) - (fp_line (start 14.7 -4.15) (end 14.7 4.4) (layer F.CrtYd) (width 0.05)) - (fp_line (start 14.7 4.4) (end -14.7 4.4) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -11 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -9 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -7 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -5 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at -3 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at -1 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at 1 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at 3 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 9 smd rect (at 5 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 10 smd rect (at 7 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 11 smd rect (at 9 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 12 smd rect (at 11 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -13.4 -1.125) (size 1.6 3) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 13.4 -1.125) (size 1.6 3) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_B13B-PH-K.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_B13B-PH-K.kicad_mod deleted file mode 100644 index 8584e794..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_B13B-PH-K.kicad_mod +++ /dev/null @@ -1,94 +0,0 @@ -(module Connectors_JST_B13B-PH-K (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, B13B-PH-K") - (tags "connector jst ph") - (fp_text reference REF** (at 0 -3) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_B13B-PH-K (at 12 4) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -1.95 2.8) (end -1.95 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -1.7) (end 25.95 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start 25.95 -1.7) (end 25.95 2.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 25.95 2.8) (end -1.95 2.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.7) (end 0.5 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.2) (end -1.45 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.45 -1.2) (end -1.45 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.45 2.3) (end 25.45 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 25.45 2.3) (end 25.45 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 25.45 -1.2) (end 23.5 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 23.5 -1.2) (end 23.5 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -0.5) (end -1.45 -0.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 0.8) (end -1.45 0.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 25.45 -0.5) (end 25.95 -0.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 25.45 0.8) (end 25.95 0.8) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.7) (end -0.3 -1.9) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.9) (end -0.6 -1.9) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.6 -1.9) (end -0.6 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.8) (end -0.6 -1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 2.3) (end 0.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 1.8) (end 1.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.1 1.8) (end 1.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 1 2.3) (end 1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 2.3) (end 2.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 1.8) (end 3.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.1 1.8) (end 3.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 2.3) (end 3 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 2.3) (end 4.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 1.8) (end 5.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.1 1.8) (end 5.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 2.3) (end 5 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 2.3) (end 6.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 1.8) (end 7.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.1 1.8) (end 7.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 2.3) (end 7 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 2.3) (end 8.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 1.8) (end 9.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.1 1.8) (end 9.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 9 2.3) (end 9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 2.3) (end 10.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 1.8) (end 11.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.1 1.8) (end 11.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 11 2.3) (end 11 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 2.3) (end 12.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 1.8) (end 13.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.1 1.8) (end 13.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 13 2.3) (end 13 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.9 2.3) (end 14.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.9 1.8) (end 15.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.1 1.8) (end 15.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 15 2.3) (end 15 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 16.9 2.3) (end 16.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 16.9 1.8) (end 17.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.1 1.8) (end 17.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 17 2.3) (end 17 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 18.9 2.3) (end 18.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 18.9 1.8) (end 19.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 19.1 1.8) (end 19.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 19 2.3) (end 19 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 20.9 2.3) (end 20.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 20.9 1.8) (end 21.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 21.1 1.8) (end 21.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 21 2.3) (end 21 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 22.9 2.3) (end 22.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 22.9 1.8) (end 23.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 23.1 1.8) (end 23.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 23 2.3) (end 23 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.45 3.3) (end -2.45 -2.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.45 -2.2) (end 26.45 -2.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start 26.45 -2.2) (end 26.45 3.3) (layer F.CrtYd) (width 0.05)) - (fp_line (start 26.45 3.3) (end -2.45 3.3) (layer F.CrtYd) (width 0.05)) - (pad 1 thru_hole rect (at 0 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 4 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 6 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole oval (at 8 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 6 thru_hole oval (at 10 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 7 thru_hole oval (at 12 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 8 thru_hole oval (at 14 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 9 thru_hole oval (at 16 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 10 thru_hole oval (at 18 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 11 thru_hole oval (at 20 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 12 thru_hole oval (at 22 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 13 thru_hole oval (at 24 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_B13B-PH-SM4-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_B13B-PH-SM4-TB.kicad_mod deleted file mode 100644 index 53b10d68..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_B13B-PH-SM4-TB.kicad_mod +++ /dev/null @@ -1,118 +0,0 @@ -(module Connectors_JST_B13B-PH-SM4-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, B13B-PH-SM4-TB") - (tags "connector jst ph") - (attr smd) - (fp_text reference REF** (at -12 -4.725) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_B13B-PH-SM4-TB (at 0 5.275) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -13.4 2.125) (end -13.15 2.125) (layer F.SilkS) (width 0.15)) - (fp_line (start -15 -3.025) (end -15 -3.625) (layer F.SilkS) (width 0.15)) - (fp_line (start -15 -3.625) (end 15 -3.625) (layer F.SilkS) (width 0.15)) - (fp_line (start 15 -3.625) (end 15 -3.025) (layer F.SilkS) (width 0.15)) - (fp_line (start -15 0.775) (end -15 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -15 1.375) (end -12.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 15 0.775) (end 15 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 15 1.375) (end 12.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -11.5 -3.625) (end -11.5 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start -11.5 -2.925) (end -13.2 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start -13.2 -2.925) (end -13.2 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -13.2 0.575) (end -12.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.5 -3.625) (end 11.5 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.5 -2.925) (end 13.2 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.2 -2.925) (end 13.2 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.2 0.575) (end 12.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -11.1 1.375) (end -10.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -11.1 0.575) (end -10.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -11.1 0.575) (end -11.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -11.1 0.075) (end -10.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.9 0.075) (end -10.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -11 0.575) (end -11 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.1 1.375) (end -8.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.1 0.575) (end -8.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.1 0.575) (end -9.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.1 0.075) (end -8.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.9 0.075) (end -8.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -9 0.575) (end -9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.1 1.375) (end -6.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.1 0.575) (end -6.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.1 0.575) (end -7.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.1 0.075) (end -6.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.9 0.075) (end -6.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 0.575) (end -7 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.1 1.375) (end -4.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.1 0.575) (end -4.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.1 0.575) (end -5.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.1 0.075) (end -4.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.9 0.075) (end -4.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 0.575) (end -5 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.1 1.375) (end -2.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.1 0.575) (end -2.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.1 0.575) (end -3.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.1 0.075) (end -2.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.9 0.075) (end -2.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 0.575) (end -3 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 1.375) (end -0.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 0.575) (end -0.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 0.575) (end -1.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 0.075) (end -0.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.9 0.075) (end -0.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -1 0.575) (end -1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 1.375) (end 1.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.575) (end 1.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.575) (end 0.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.075) (end 1.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.1 0.075) (end 1.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 1 0.575) (end 1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 1.375) (end 3.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.575) (end 3.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.575) (end 2.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.075) (end 3.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.1 0.075) (end 3.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 0.575) (end 3 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 1.375) (end 5.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 0.575) (end 5.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 0.575) (end 4.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 0.075) (end 5.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.1 0.075) (end 5.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 0.575) (end 5 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 1.375) (end 7.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 0.575) (end 7.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 0.575) (end 6.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 0.075) (end 7.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.1 0.075) (end 7.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 0.575) (end 7 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 1.375) (end 9.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 0.575) (end 9.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 0.575) (end 8.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 0.075) (end 9.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.1 0.075) (end 9.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 9 0.575) (end 9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 1.375) (end 11.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 0.575) (end 11.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 0.575) (end 10.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 0.075) (end 11.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.1 0.075) (end 11.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 11 0.575) (end 11 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -15.7 4.4) (end -15.7 -4.15) (layer F.CrtYd) (width 0.05)) - (fp_line (start -15.7 -4.15) (end 15.7 -4.15) (layer F.CrtYd) (width 0.05)) - (fp_line (start 15.7 -4.15) (end 15.7 4.4) (layer F.CrtYd) (width 0.05)) - (fp_line (start 15.7 4.4) (end -15.7 4.4) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -12 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -10 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -8 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -6 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at -4 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at -2 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at 0 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at 2 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 9 smd rect (at 4 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 10 smd rect (at 6 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 11 smd rect (at 8 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 12 smd rect (at 10 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 13 smd rect (at 12 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -14.4 -1.125) (size 1.6 3) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 14.4 -1.125) (size 1.6 3) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_B14B-PH-K.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_B14B-PH-K.kicad_mod deleted file mode 100644 index 6223fe26..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_B14B-PH-K.kicad_mod +++ /dev/null @@ -1,99 +0,0 @@ -(module Connectors_JST_B14B-PH-K (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, B14B-PH-K") - (tags "connector jst ph") - (fp_text reference REF** (at 0 -3) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_B14B-PH-K (at 13 4) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -1.95 2.8) (end -1.95 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -1.7) (end 27.95 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start 27.95 -1.7) (end 27.95 2.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 27.95 2.8) (end -1.95 2.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.7) (end 0.5 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.2) (end -1.45 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.45 -1.2) (end -1.45 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.45 2.3) (end 27.45 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 27.45 2.3) (end 27.45 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 27.45 -1.2) (end 25.5 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 25.5 -1.2) (end 25.5 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -0.5) (end -1.45 -0.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 0.8) (end -1.45 0.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 27.45 -0.5) (end 27.95 -0.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 27.45 0.8) (end 27.95 0.8) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.7) (end -0.3 -1.9) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.9) (end -0.6 -1.9) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.6 -1.9) (end -0.6 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.8) (end -0.6 -1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 2.3) (end 0.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 1.8) (end 1.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.1 1.8) (end 1.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 1 2.3) (end 1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 2.3) (end 2.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 1.8) (end 3.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.1 1.8) (end 3.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 2.3) (end 3 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 2.3) (end 4.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 1.8) (end 5.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.1 1.8) (end 5.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 2.3) (end 5 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 2.3) (end 6.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 1.8) (end 7.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.1 1.8) (end 7.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 2.3) (end 7 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 2.3) (end 8.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 1.8) (end 9.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.1 1.8) (end 9.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 9 2.3) (end 9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 2.3) (end 10.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 1.8) (end 11.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.1 1.8) (end 11.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 11 2.3) (end 11 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 2.3) (end 12.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 1.8) (end 13.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.1 1.8) (end 13.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 13 2.3) (end 13 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.9 2.3) (end 14.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.9 1.8) (end 15.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.1 1.8) (end 15.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 15 2.3) (end 15 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 16.9 2.3) (end 16.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 16.9 1.8) (end 17.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.1 1.8) (end 17.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 17 2.3) (end 17 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 18.9 2.3) (end 18.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 18.9 1.8) (end 19.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 19.1 1.8) (end 19.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 19 2.3) (end 19 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 20.9 2.3) (end 20.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 20.9 1.8) (end 21.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 21.1 1.8) (end 21.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 21 2.3) (end 21 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 22.9 2.3) (end 22.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 22.9 1.8) (end 23.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 23.1 1.8) (end 23.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 23 2.3) (end 23 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 24.9 2.3) (end 24.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 24.9 1.8) (end 25.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 25.1 1.8) (end 25.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 25 2.3) (end 25 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.45 3.3) (end -2.45 -2.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.45 -2.2) (end 28.45 -2.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start 28.45 -2.2) (end 28.45 3.3) (layer F.CrtYd) (width 0.05)) - (fp_line (start 28.45 3.3) (end -2.45 3.3) (layer F.CrtYd) (width 0.05)) - (pad 1 thru_hole rect (at 0 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 4 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 6 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole oval (at 8 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 6 thru_hole oval (at 10 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 7 thru_hole oval (at 12 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 8 thru_hole oval (at 14 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 9 thru_hole oval (at 16 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 10 thru_hole oval (at 18 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 11 thru_hole oval (at 20 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 12 thru_hole oval (at 22 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 13 thru_hole oval (at 24 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 14 thru_hole oval (at 26 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_B14B-PH-SM4-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_B14B-PH-SM4-TB.kicad_mod deleted file mode 100644 index 2d4791cb..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_B14B-PH-SM4-TB.kicad_mod +++ /dev/null @@ -1,125 +0,0 @@ -(module Connectors_JST_B14B-PH-SM4-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, B14B-PH-SM4-TB") - (tags "connector jst ph") - (attr smd) - (fp_text reference REF** (at -13 -4.725) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_B14B-PH-SM4-TB (at 0 5.275) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -14.4 2.125) (end -14.15 2.125) (layer F.SilkS) (width 0.15)) - (fp_line (start -16 -3.025) (end -16 -3.625) (layer F.SilkS) (width 0.15)) - (fp_line (start -16 -3.625) (end 16 -3.625) (layer F.SilkS) (width 0.15)) - (fp_line (start 16 -3.625) (end 16 -3.025) (layer F.SilkS) (width 0.15)) - (fp_line (start -16 0.775) (end -16 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -16 1.375) (end -13.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 16 0.775) (end 16 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 16 1.375) (end 13.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.5 -3.625) (end -12.5 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.5 -2.925) (end -14.2 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start -14.2 -2.925) (end -14.2 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -14.2 0.575) (end -13.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.5 -3.625) (end 12.5 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.5 -2.925) (end 14.2 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.2 -2.925) (end 14.2 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.2 0.575) (end 13.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.1 1.375) (end -11.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.1 0.575) (end -11.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.1 0.575) (end -12.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.1 0.075) (end -11.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -11.9 0.075) (end -11.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -12 0.575) (end -12 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.1 1.375) (end -9.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.1 0.575) (end -9.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.1 0.575) (end -10.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.1 0.075) (end -9.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.9 0.075) (end -9.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -10 0.575) (end -10 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.1 1.375) (end -7.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.1 0.575) (end -7.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.1 0.575) (end -8.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.1 0.075) (end -7.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.9 0.075) (end -7.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -8 0.575) (end -8 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.1 1.375) (end -5.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.1 0.575) (end -5.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.1 0.575) (end -6.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.1 0.075) (end -5.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.9 0.075) (end -5.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 0.575) (end -6 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.1 1.375) (end -3.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.1 0.575) (end -3.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.1 0.575) (end -4.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.1 0.075) (end -3.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.9 0.075) (end -3.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 0.575) (end -4 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 1.375) (end -1.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 0.575) (end -1.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 0.575) (end -2.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 0.075) (end -1.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.9 0.075) (end -1.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 0.575) (end -2 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 1.375) (end 0.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 0.575) (end 0.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 0.575) (end -0.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 0.075) (end 0.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.1 0.075) (end 0.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 0 0.575) (end 0 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 1.375) (end 2.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 0.575) (end 2.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 0.575) (end 1.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 0.075) (end 2.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.1 0.075) (end 2.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 0.575) (end 2 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.9 1.375) (end 4.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.9 0.575) (end 4.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.9 0.575) (end 3.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.9 0.075) (end 4.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.1 0.075) (end 4.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 0.575) (end 4 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.9 1.375) (end 6.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.9 0.575) (end 6.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.9 0.575) (end 5.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.9 0.075) (end 6.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.1 0.075) (end 6.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 0.575) (end 6 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.9 1.375) (end 8.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.9 0.575) (end 8.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.9 0.575) (end 7.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.9 0.075) (end 8.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.1 0.075) (end 8.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 8 0.575) (end 8 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.9 1.375) (end 10.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.9 0.575) (end 10.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.9 0.575) (end 9.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.9 0.075) (end 10.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.1 0.075) (end 10.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 10 0.575) (end 10 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.9 1.375) (end 12.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.9 0.575) (end 12.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.9 0.575) (end 11.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.9 0.075) (end 12.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.1 0.075) (end 12.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 12 0.575) (end 12 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -16.7 4.4) (end -16.7 -4.15) (layer F.CrtYd) (width 0.05)) - (fp_line (start -16.7 -4.15) (end 16.7 -4.15) (layer F.CrtYd) (width 0.05)) - (fp_line (start 16.7 -4.15) (end 16.7 4.4) (layer F.CrtYd) (width 0.05)) - (fp_line (start 16.7 4.4) (end -16.7 4.4) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -13 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -11 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -9 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -7 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at -5 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at -3 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at -1 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at 1 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 9 smd rect (at 3 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 10 smd rect (at 5 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 11 smd rect (at 7 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 12 smd rect (at 9 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 13 smd rect (at 11 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 14 smd rect (at 13 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -15.4 -1.125) (size 1.6 3) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 15.4 -1.125) (size 1.6 3) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_B15B-PH-K.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_B15B-PH-K.kicad_mod deleted file mode 100644 index 37b736cb..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_B15B-PH-K.kicad_mod +++ /dev/null @@ -1,104 +0,0 @@ -(module Connectors_JST_B15B-PH-K (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, B15B-PH-K") - (tags "connector jst ph") - (fp_text reference REF** (at 0 -3) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_B15B-PH-K (at 14 4) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -1.95 2.8) (end -1.95 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -1.7) (end 29.95 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start 29.95 -1.7) (end 29.95 2.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 29.95 2.8) (end -1.95 2.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.7) (end 0.5 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.2) (end -1.45 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.45 -1.2) (end -1.45 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.45 2.3) (end 29.45 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 29.45 2.3) (end 29.45 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 29.45 -1.2) (end 27.5 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 27.5 -1.2) (end 27.5 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -0.5) (end -1.45 -0.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 0.8) (end -1.45 0.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 29.45 -0.5) (end 29.95 -0.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 29.45 0.8) (end 29.95 0.8) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.7) (end -0.3 -1.9) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.9) (end -0.6 -1.9) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.6 -1.9) (end -0.6 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.8) (end -0.6 -1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 2.3) (end 0.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 1.8) (end 1.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.1 1.8) (end 1.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 1 2.3) (end 1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 2.3) (end 2.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 1.8) (end 3.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.1 1.8) (end 3.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 2.3) (end 3 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 2.3) (end 4.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 1.8) (end 5.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.1 1.8) (end 5.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 2.3) (end 5 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 2.3) (end 6.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 1.8) (end 7.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.1 1.8) (end 7.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 2.3) (end 7 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 2.3) (end 8.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 1.8) (end 9.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.1 1.8) (end 9.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 9 2.3) (end 9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 2.3) (end 10.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 1.8) (end 11.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.1 1.8) (end 11.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 11 2.3) (end 11 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 2.3) (end 12.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 1.8) (end 13.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.1 1.8) (end 13.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 13 2.3) (end 13 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.9 2.3) (end 14.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.9 1.8) (end 15.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.1 1.8) (end 15.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 15 2.3) (end 15 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 16.9 2.3) (end 16.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 16.9 1.8) (end 17.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.1 1.8) (end 17.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 17 2.3) (end 17 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 18.9 2.3) (end 18.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 18.9 1.8) (end 19.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 19.1 1.8) (end 19.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 19 2.3) (end 19 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 20.9 2.3) (end 20.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 20.9 1.8) (end 21.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 21.1 1.8) (end 21.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 21 2.3) (end 21 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 22.9 2.3) (end 22.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 22.9 1.8) (end 23.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 23.1 1.8) (end 23.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 23 2.3) (end 23 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 24.9 2.3) (end 24.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 24.9 1.8) (end 25.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 25.1 1.8) (end 25.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 25 2.3) (end 25 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 26.9 2.3) (end 26.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 26.9 1.8) (end 27.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 27.1 1.8) (end 27.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 27 2.3) (end 27 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.45 3.3) (end -2.45 -2.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.45 -2.2) (end 30.45 -2.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start 30.45 -2.2) (end 30.45 3.3) (layer F.CrtYd) (width 0.05)) - (fp_line (start 30.45 3.3) (end -2.45 3.3) (layer F.CrtYd) (width 0.05)) - (pad 1 thru_hole rect (at 0 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 4 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 6 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole oval (at 8 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 6 thru_hole oval (at 10 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 7 thru_hole oval (at 12 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 8 thru_hole oval (at 14 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 9 thru_hole oval (at 16 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 10 thru_hole oval (at 18 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 11 thru_hole oval (at 20 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 12 thru_hole oval (at 22 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 13 thru_hole oval (at 24 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 14 thru_hole oval (at 26 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 15 thru_hole oval (at 28 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_B15B-PH-SM4-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_B15B-PH-SM4-TB.kicad_mod deleted file mode 100644 index 675f0f40..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_B15B-PH-SM4-TB.kicad_mod +++ /dev/null @@ -1,132 +0,0 @@ -(module Connectors_JST_B15B-PH-SM4-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, B15B-PH-SM4-TB") - (tags "connector jst ph") - (attr smd) - (fp_text reference REF** (at -14 -4.725) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_B15B-PH-SM4-TB (at 0 5.275) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -15.4 2.125) (end -15.15 2.125) (layer F.SilkS) (width 0.15)) - (fp_line (start -17 -3.025) (end -17 -3.625) (layer F.SilkS) (width 0.15)) - (fp_line (start -17 -3.625) (end 17 -3.625) (layer F.SilkS) (width 0.15)) - (fp_line (start 17 -3.625) (end 17 -3.025) (layer F.SilkS) (width 0.15)) - (fp_line (start -17 0.775) (end -17 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -17 1.375) (end -14.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 17 0.775) (end 17 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 17 1.375) (end 14.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -13.5 -3.625) (end -13.5 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start -13.5 -2.925) (end -15.2 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start -15.2 -2.925) (end -15.2 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -15.2 0.575) (end -14.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.5 -3.625) (end 13.5 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.5 -2.925) (end 15.2 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.2 -2.925) (end 15.2 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.2 0.575) (end 14.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -13.1 1.375) (end -12.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -13.1 0.575) (end -12.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -13.1 0.575) (end -13.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -13.1 0.075) (end -12.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.9 0.075) (end -12.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -13 0.575) (end -13 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -11.1 1.375) (end -10.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -11.1 0.575) (end -10.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -11.1 0.575) (end -11.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -11.1 0.075) (end -10.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.9 0.075) (end -10.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -11 0.575) (end -11 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.1 1.375) (end -8.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.1 0.575) (end -8.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.1 0.575) (end -9.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.1 0.075) (end -8.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.9 0.075) (end -8.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -9 0.575) (end -9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.1 1.375) (end -6.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.1 0.575) (end -6.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.1 0.575) (end -7.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.1 0.075) (end -6.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.9 0.075) (end -6.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 0.575) (end -7 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.1 1.375) (end -4.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.1 0.575) (end -4.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.1 0.575) (end -5.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.1 0.075) (end -4.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.9 0.075) (end -4.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 0.575) (end -5 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.1 1.375) (end -2.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.1 0.575) (end -2.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.1 0.575) (end -3.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.1 0.075) (end -2.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.9 0.075) (end -2.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 0.575) (end -3 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 1.375) (end -0.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 0.575) (end -0.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 0.575) (end -1.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 0.075) (end -0.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.9 0.075) (end -0.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -1 0.575) (end -1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 1.375) (end 1.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.575) (end 1.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.575) (end 0.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.075) (end 1.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.1 0.075) (end 1.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 1 0.575) (end 1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 1.375) (end 3.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.575) (end 3.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.575) (end 2.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.075) (end 3.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.1 0.075) (end 3.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 0.575) (end 3 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 1.375) (end 5.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 0.575) (end 5.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 0.575) (end 4.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 0.075) (end 5.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.1 0.075) (end 5.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 0.575) (end 5 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 1.375) (end 7.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 0.575) (end 7.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 0.575) (end 6.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 0.075) (end 7.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.1 0.075) (end 7.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 0.575) (end 7 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 1.375) (end 9.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 0.575) (end 9.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 0.575) (end 8.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 0.075) (end 9.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.1 0.075) (end 9.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 9 0.575) (end 9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 1.375) (end 11.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 0.575) (end 11.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 0.575) (end 10.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 0.075) (end 11.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.1 0.075) (end 11.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 11 0.575) (end 11 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 1.375) (end 13.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 0.575) (end 13.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 0.575) (end 12.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 0.075) (end 13.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.1 0.075) (end 13.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 13 0.575) (end 13 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -17.7 4.4) (end -17.7 -4.15) (layer F.CrtYd) (width 0.05)) - (fp_line (start -17.7 -4.15) (end 17.7 -4.15) (layer F.CrtYd) (width 0.05)) - (fp_line (start 17.7 -4.15) (end 17.7 4.4) (layer F.CrtYd) (width 0.05)) - (fp_line (start 17.7 4.4) (end -17.7 4.4) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -14 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -12 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -10 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -8 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at -6 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at -4 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at -2 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at 0 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 9 smd rect (at 2 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 10 smd rect (at 4 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 11 smd rect (at 6 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 12 smd rect (at 8 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 13 smd rect (at 10 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 14 smd rect (at 12 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 15 smd rect (at 14 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -16.4 -1.125) (size 1.6 3) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 16.4 -1.125) (size 1.6 3) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_B16B-PH-K.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_B16B-PH-K.kicad_mod deleted file mode 100644 index c0c8ddab..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_B16B-PH-K.kicad_mod +++ /dev/null @@ -1,109 +0,0 @@ -(module Connectors_JST_B16B-PH-K (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, B16B-PH-K") - (tags "connector jst ph") - (fp_text reference REF** (at 0 -3) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_B16B-PH-K (at 15 4) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -1.95 2.8) (end -1.95 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -1.7) (end 31.95 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start 31.95 -1.7) (end 31.95 2.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 31.95 2.8) (end -1.95 2.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.7) (end 0.5 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.2) (end -1.45 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.45 -1.2) (end -1.45 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.45 2.3) (end 31.45 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 31.45 2.3) (end 31.45 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 31.45 -1.2) (end 29.5 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 29.5 -1.2) (end 29.5 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -0.5) (end -1.45 -0.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 0.8) (end -1.45 0.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 31.45 -0.5) (end 31.95 -0.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 31.45 0.8) (end 31.95 0.8) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.7) (end -0.3 -1.9) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.9) (end -0.6 -1.9) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.6 -1.9) (end -0.6 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.8) (end -0.6 -1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 2.3) (end 0.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 1.8) (end 1.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.1 1.8) (end 1.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 1 2.3) (end 1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 2.3) (end 2.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 1.8) (end 3.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.1 1.8) (end 3.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 2.3) (end 3 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 2.3) (end 4.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 1.8) (end 5.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.1 1.8) (end 5.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 2.3) (end 5 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 2.3) (end 6.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 1.8) (end 7.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.1 1.8) (end 7.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 2.3) (end 7 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 2.3) (end 8.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 1.8) (end 9.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.1 1.8) (end 9.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 9 2.3) (end 9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 2.3) (end 10.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 1.8) (end 11.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.1 1.8) (end 11.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 11 2.3) (end 11 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 2.3) (end 12.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 1.8) (end 13.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.1 1.8) (end 13.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 13 2.3) (end 13 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.9 2.3) (end 14.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.9 1.8) (end 15.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.1 1.8) (end 15.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 15 2.3) (end 15 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 16.9 2.3) (end 16.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 16.9 1.8) (end 17.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.1 1.8) (end 17.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 17 2.3) (end 17 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 18.9 2.3) (end 18.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 18.9 1.8) (end 19.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 19.1 1.8) (end 19.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 19 2.3) (end 19 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 20.9 2.3) (end 20.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 20.9 1.8) (end 21.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 21.1 1.8) (end 21.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 21 2.3) (end 21 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 22.9 2.3) (end 22.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 22.9 1.8) (end 23.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 23.1 1.8) (end 23.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 23 2.3) (end 23 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 24.9 2.3) (end 24.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 24.9 1.8) (end 25.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 25.1 1.8) (end 25.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 25 2.3) (end 25 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 26.9 2.3) (end 26.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 26.9 1.8) (end 27.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 27.1 1.8) (end 27.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 27 2.3) (end 27 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 28.9 2.3) (end 28.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 28.9 1.8) (end 29.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 29.1 1.8) (end 29.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 29 2.3) (end 29 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.45 3.3) (end -2.45 -2.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.45 -2.2) (end 32.45 -2.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start 32.45 -2.2) (end 32.45 3.3) (layer F.CrtYd) (width 0.05)) - (fp_line (start 32.45 3.3) (end -2.45 3.3) (layer F.CrtYd) (width 0.05)) - (pad 1 thru_hole rect (at 0 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 4 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 6 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole oval (at 8 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 6 thru_hole oval (at 10 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 7 thru_hole oval (at 12 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 8 thru_hole oval (at 14 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 9 thru_hole oval (at 16 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 10 thru_hole oval (at 18 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 11 thru_hole oval (at 20 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 12 thru_hole oval (at 22 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 13 thru_hole oval (at 24 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 14 thru_hole oval (at 26 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 15 thru_hole oval (at 28 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 16 thru_hole oval (at 30 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_B16B-PH-SM4-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_B16B-PH-SM4-TB.kicad_mod deleted file mode 100644 index 9d4b6806..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_B16B-PH-SM4-TB.kicad_mod +++ /dev/null @@ -1,139 +0,0 @@ -(module Connectors_JST_B16B-PH-SM4-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, B16B-PH-SM4-TB") - (tags "connector jst ph") - (attr smd) - (fp_text reference REF** (at -15 -4.725) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_B16B-PH-SM4-TB (at 0 5.275) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -16.4 2.125) (end -16.15 2.125) (layer F.SilkS) (width 0.15)) - (fp_line (start -18 -3.025) (end -18 -3.625) (layer F.SilkS) (width 0.15)) - (fp_line (start -18 -3.625) (end 18 -3.625) (layer F.SilkS) (width 0.15)) - (fp_line (start 18 -3.625) (end 18 -3.025) (layer F.SilkS) (width 0.15)) - (fp_line (start -18 0.775) (end -18 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -18 1.375) (end -15.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 18 0.775) (end 18 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 18 1.375) (end 15.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -14.5 -3.625) (end -14.5 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start -14.5 -2.925) (end -16.2 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start -16.2 -2.925) (end -16.2 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -16.2 0.575) (end -15.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.5 -3.625) (end 14.5 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.5 -2.925) (end 16.2 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start 16.2 -2.925) (end 16.2 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 16.2 0.575) (end 15.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -14.1 1.375) (end -13.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -14.1 0.575) (end -13.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -14.1 0.575) (end -14.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -14.1 0.075) (end -13.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -13.9 0.075) (end -13.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -14 0.575) (end -14 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.1 1.375) (end -11.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.1 0.575) (end -11.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.1 0.575) (end -12.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.1 0.075) (end -11.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -11.9 0.075) (end -11.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -12 0.575) (end -12 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.1 1.375) (end -9.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.1 0.575) (end -9.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.1 0.575) (end -10.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.1 0.075) (end -9.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.9 0.075) (end -9.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -10 0.575) (end -10 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.1 1.375) (end -7.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.1 0.575) (end -7.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.1 0.575) (end -8.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.1 0.075) (end -7.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.9 0.075) (end -7.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -8 0.575) (end -8 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.1 1.375) (end -5.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.1 0.575) (end -5.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.1 0.575) (end -6.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.1 0.075) (end -5.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.9 0.075) (end -5.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 0.575) (end -6 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.1 1.375) (end -3.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.1 0.575) (end -3.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.1 0.575) (end -4.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.1 0.075) (end -3.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.9 0.075) (end -3.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 0.575) (end -4 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 1.375) (end -1.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 0.575) (end -1.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 0.575) (end -2.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 0.075) (end -1.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.9 0.075) (end -1.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 0.575) (end -2 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 1.375) (end 0.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 0.575) (end 0.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 0.575) (end -0.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 0.075) (end 0.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.1 0.075) (end 0.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 0 0.575) (end 0 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 1.375) (end 2.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 0.575) (end 2.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 0.575) (end 1.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 0.075) (end 2.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.1 0.075) (end 2.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 0.575) (end 2 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.9 1.375) (end 4.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.9 0.575) (end 4.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.9 0.575) (end 3.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.9 0.075) (end 4.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.1 0.075) (end 4.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 0.575) (end 4 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.9 1.375) (end 6.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.9 0.575) (end 6.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.9 0.575) (end 5.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.9 0.075) (end 6.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.1 0.075) (end 6.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 0.575) (end 6 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.9 1.375) (end 8.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.9 0.575) (end 8.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.9 0.575) (end 7.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.9 0.075) (end 8.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.1 0.075) (end 8.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 8 0.575) (end 8 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.9 1.375) (end 10.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.9 0.575) (end 10.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.9 0.575) (end 9.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.9 0.075) (end 10.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.1 0.075) (end 10.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 10 0.575) (end 10 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.9 1.375) (end 12.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.9 0.575) (end 12.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.9 0.575) (end 11.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.9 0.075) (end 12.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.1 0.075) (end 12.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 12 0.575) (end 12 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.9 1.375) (end 14.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.9 0.575) (end 14.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.9 0.575) (end 13.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.9 0.075) (end 14.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.1 0.075) (end 14.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 14 0.575) (end 14 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -18.7 4.4) (end -18.7 -4.15) (layer F.CrtYd) (width 0.05)) - (fp_line (start -18.7 -4.15) (end 18.7 -4.15) (layer F.CrtYd) (width 0.05)) - (fp_line (start 18.7 -4.15) (end 18.7 4.4) (layer F.CrtYd) (width 0.05)) - (fp_line (start 18.7 4.4) (end -18.7 4.4) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -15 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -13 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -11 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -9 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at -7 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at -5 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at -3 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at -1 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 9 smd rect (at 1 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 10 smd rect (at 3 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 11 smd rect (at 5 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 12 smd rect (at 7 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 13 smd rect (at 9 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 14 smd rect (at 11 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 15 smd rect (at 13 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 16 smd rect (at 15 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -17.4 -1.125) (size 1.6 3) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 17.4 -1.125) (size 1.6 3) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_B2B-PH-K.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_B2B-PH-K.kicad_mod deleted file mode 100644 index 4739cde5..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_B2B-PH-K.kicad_mod +++ /dev/null @@ -1,39 +0,0 @@ -(module Connectors_JST_B2B-PH-K (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, B2B-PH-K") - (tags "connector jst ph") - (fp_text reference REF** (at 0 -3) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_B2B-PH-K (at 1 4) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -1.95 2.8) (end -1.95 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -1.7) (end 3.95 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.95 -1.7) (end 3.95 2.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.95 2.8) (end -1.95 2.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.7) (end 0.5 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.2) (end -1.45 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.45 -1.2) (end -1.45 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.45 2.3) (end 3.45 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.45 2.3) (end 3.45 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.45 -1.2) (end 1.5 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.5 -1.2) (end 1.5 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -0.5) (end -1.45 -0.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 0.8) (end -1.45 0.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.45 -0.5) (end 3.95 -0.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.45 0.8) (end 3.95 0.8) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.7) (end -0.3 -1.9) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.9) (end -0.6 -1.9) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.6 -1.9) (end -0.6 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.8) (end -0.6 -1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 2.3) (end 0.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 1.8) (end 1.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.1 1.8) (end 1.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 1 2.3) (end 1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.45 3.3) (end -2.45 -2.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.45 -2.2) (end 4.45 -2.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start 4.45 -2.2) (end 4.45 3.3) (layer F.CrtYd) (width 0.05)) - (fp_line (start 4.45 3.3) (end -2.45 3.3) (layer F.CrtYd) (width 0.05)) - (pad 1 thru_hole rect (at 0 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_B2B-PH-SM4-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_B2B-PH-SM4-TB.kicad_mod deleted file mode 100644 index 0ba4855c..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_B2B-PH-SM4-TB.kicad_mod +++ /dev/null @@ -1,41 +0,0 @@ -(module Connectors_JST_B2B-PH-SM4-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, B2B-PH-SM4-TB") - (tags "connector jst ph") - (attr smd) - (fp_text reference REF** (at -1 -4.725) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_B2B-PH-SM4-TB (at 0 5.275) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -2.4 2.125) (end -2.15 2.125) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 -3.025) (end -4 -3.625) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 -3.625) (end 4 -3.625) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 -3.625) (end 4 -3.025) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 0.775) (end -4 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 1.375) (end -1.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 0.775) (end 4 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 1.375) (end 1.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.5 -3.625) (end -0.5 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.5 -2.925) (end -2.2 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.2 -2.925) (end -2.2 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.2 0.575) (end -1.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -3.625) (end 0.5 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -2.925) (end 2.2 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.2 -2.925) (end 2.2 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.2 0.575) (end 1.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 1.375) (end 0.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 0.575) (end 0.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 0.575) (end -0.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 0.075) (end 0.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.1 0.075) (end 0.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 0 0.575) (end 0 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.7 4.4) (end -4.7 -4.15) (layer F.CrtYd) (width 0.05)) - (fp_line (start -4.7 -4.15) (end 4.7 -4.15) (layer F.CrtYd) (width 0.05)) - (fp_line (start 4.7 -4.15) (end 4.7 4.4) (layer F.CrtYd) (width 0.05)) - (fp_line (start 4.7 4.4) (end -4.7 4.4) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -1 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at 1 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -3.4 -1.125) (size 1.6 3) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 3.4 -1.125) (size 1.6 3) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_B3B-PH-K.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_B3B-PH-K.kicad_mod deleted file mode 100644 index 911536be..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_B3B-PH-K.kicad_mod +++ /dev/null @@ -1,44 +0,0 @@ -(module Connectors_JST_B3B-PH-K (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, B3B-PH-K") - (tags "connector jst ph") - (fp_text reference REF** (at 0 -3) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_B3B-PH-K (at 2 4) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -1.95 2.8) (end -1.95 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -1.7) (end 5.95 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.95 -1.7) (end 5.95 2.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.95 2.8) (end -1.95 2.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.7) (end 0.5 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.2) (end -1.45 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.45 -1.2) (end -1.45 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.45 2.3) (end 5.45 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.45 2.3) (end 5.45 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.45 -1.2) (end 3.5 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 -1.2) (end 3.5 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -0.5) (end -1.45 -0.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 0.8) (end -1.45 0.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.45 -0.5) (end 5.95 -0.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.45 0.8) (end 5.95 0.8) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.7) (end -0.3 -1.9) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.9) (end -0.6 -1.9) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.6 -1.9) (end -0.6 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.8) (end -0.6 -1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 2.3) (end 0.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 1.8) (end 1.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.1 1.8) (end 1.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 1 2.3) (end 1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 2.3) (end 2.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 1.8) (end 3.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.1 1.8) (end 3.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 2.3) (end 3 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.45 3.3) (end -2.45 -2.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.45 -2.2) (end 6.45 -2.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start 6.45 -2.2) (end 6.45 3.3) (layer F.CrtYd) (width 0.05)) - (fp_line (start 6.45 3.3) (end -2.45 3.3) (layer F.CrtYd) (width 0.05)) - (pad 1 thru_hole rect (at 0 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 4 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_B3B-PH-SM4-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_B3B-PH-SM4-TB.kicad_mod deleted file mode 100644 index 852c147a..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_B3B-PH-SM4-TB.kicad_mod +++ /dev/null @@ -1,48 +0,0 @@ -(module Connectors_JST_B3B-PH-SM4-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, B3B-PH-SM4-TB") - (tags "connector jst ph") - (attr smd) - (fp_text reference REF** (at -2 -4.725) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_B3B-PH-SM4-TB (at 0 5.275) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -3.4 2.125) (end -3.15 2.125) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 -3.025) (end -5 -3.625) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 -3.625) (end 5 -3.625) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 -3.625) (end 5 -3.025) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 0.775) (end -5 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 1.375) (end -2.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 0.775) (end 5 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 1.375) (end 2.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.5 -3.625) (end -1.5 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.5 -2.925) (end -3.2 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.2 -2.925) (end -3.2 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.2 0.575) (end -2.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.5 -3.625) (end 1.5 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.5 -2.925) (end 3.2 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.2 -2.925) (end 3.2 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.2 0.575) (end 2.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 1.375) (end -0.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 0.575) (end -0.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 0.575) (end -1.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 0.075) (end -0.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.9 0.075) (end -0.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -1 0.575) (end -1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 1.375) (end 1.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.575) (end 1.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.575) (end 0.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.075) (end 1.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.1 0.075) (end 1.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 1 0.575) (end 1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.7 4.4) (end -5.7 -4.15) (layer F.CrtYd) (width 0.05)) - (fp_line (start -5.7 -4.15) (end 5.7 -4.15) (layer F.CrtYd) (width 0.05)) - (fp_line (start 5.7 -4.15) (end 5.7 4.4) (layer F.CrtYd) (width 0.05)) - (fp_line (start 5.7 4.4) (end -5.7 4.4) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -2 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at 0 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at 2 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -4.4 -1.125) (size 1.6 3) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 4.4 -1.125) (size 1.6 3) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_B4B-PH-K.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_B4B-PH-K.kicad_mod deleted file mode 100644 index 96386423..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_B4B-PH-K.kicad_mod +++ /dev/null @@ -1,49 +0,0 @@ -(module Connectors_JST_B4B-PH-K (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, B4B-PH-K") - (tags "connector jst ph") - (fp_text reference REF** (at 0 -3) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_B4B-PH-K (at 3 4) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -1.95 2.8) (end -1.95 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -1.7) (end 7.95 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.95 -1.7) (end 7.95 2.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.95 2.8) (end -1.95 2.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.7) (end 0.5 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.2) (end -1.45 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.45 -1.2) (end -1.45 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.45 2.3) (end 7.45 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.45 2.3) (end 7.45 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.45 -1.2) (end 5.5 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.5 -1.2) (end 5.5 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -0.5) (end -1.45 -0.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 0.8) (end -1.45 0.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.45 -0.5) (end 7.95 -0.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.45 0.8) (end 7.95 0.8) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.7) (end -0.3 -1.9) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.9) (end -0.6 -1.9) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.6 -1.9) (end -0.6 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.8) (end -0.6 -1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 2.3) (end 0.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 1.8) (end 1.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.1 1.8) (end 1.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 1 2.3) (end 1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 2.3) (end 2.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 1.8) (end 3.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.1 1.8) (end 3.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 2.3) (end 3 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 2.3) (end 4.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 1.8) (end 5.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.1 1.8) (end 5.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 2.3) (end 5 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.45 3.3) (end -2.45 -2.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.45 -2.2) (end 8.45 -2.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start 8.45 -2.2) (end 8.45 3.3) (layer F.CrtYd) (width 0.05)) - (fp_line (start 8.45 3.3) (end -2.45 3.3) (layer F.CrtYd) (width 0.05)) - (pad 1 thru_hole rect (at 0 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 4 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 6 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_B4B-PH-SM4-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_B4B-PH-SM4-TB.kicad_mod deleted file mode 100644 index f50be9f2..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_B4B-PH-SM4-TB.kicad_mod +++ /dev/null @@ -1,55 +0,0 @@ -(module Connectors_JST_B4B-PH-SM4-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, B4B-PH-SM4-TB") - (tags "connector jst ph") - (attr smd) - (fp_text reference REF** (at -3 -4.725) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_B4B-PH-SM4-TB (at 0 5.275) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -4.4 2.125) (end -4.15 2.125) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 -3.025) (end -6 -3.625) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 -3.625) (end 6 -3.625) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 -3.625) (end 6 -3.025) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 0.775) (end -6 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 1.375) (end -3.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 0.775) (end 6 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 1.375) (end 3.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 -3.625) (end -2.5 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 -2.925) (end -4.2 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.2 -2.925) (end -4.2 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.2 0.575) (end -3.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 -3.625) (end 2.5 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 -2.925) (end 4.2 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.2 -2.925) (end 4.2 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.2 0.575) (end 3.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 1.375) (end -1.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 0.575) (end -1.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 0.575) (end -2.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 0.075) (end -1.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.9 0.075) (end -1.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 0.575) (end -2 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 1.375) (end 0.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 0.575) (end 0.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 0.575) (end -0.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 0.075) (end 0.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.1 0.075) (end 0.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 0 0.575) (end 0 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 1.375) (end 2.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 0.575) (end 2.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 0.575) (end 1.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 0.075) (end 2.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.1 0.075) (end 2.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 0.575) (end 2 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.7 4.4) (end -6.7 -4.15) (layer F.CrtYd) (width 0.05)) - (fp_line (start -6.7 -4.15) (end 6.7 -4.15) (layer F.CrtYd) (width 0.05)) - (fp_line (start 6.7 -4.15) (end 6.7 4.4) (layer F.CrtYd) (width 0.05)) - (fp_line (start 6.7 4.4) (end -6.7 4.4) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -3 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -1 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at 1 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at 3 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -5.4 -1.125) (size 1.6 3) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 5.4 -1.125) (size 1.6 3) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_B5B-PH-K.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_B5B-PH-K.kicad_mod deleted file mode 100644 index 1397553d..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_B5B-PH-K.kicad_mod +++ /dev/null @@ -1,54 +0,0 @@ -(module Connectors_JST_B5B-PH-K (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, B5B-PH-K") - (tags "connector jst ph") - (fp_text reference REF** (at 0 -3) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_B5B-PH-K (at 4 4) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -1.95 2.8) (end -1.95 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -1.7) (end 9.95 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.95 -1.7) (end 9.95 2.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.95 2.8) (end -1.95 2.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.7) (end 0.5 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.2) (end -1.45 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.45 -1.2) (end -1.45 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.45 2.3) (end 9.45 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.45 2.3) (end 9.45 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.45 -1.2) (end 7.5 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.5 -1.2) (end 7.5 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -0.5) (end -1.45 -0.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 0.8) (end -1.45 0.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.45 -0.5) (end 9.95 -0.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.45 0.8) (end 9.95 0.8) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.7) (end -0.3 -1.9) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.9) (end -0.6 -1.9) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.6 -1.9) (end -0.6 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.8) (end -0.6 -1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 2.3) (end 0.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 1.8) (end 1.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.1 1.8) (end 1.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 1 2.3) (end 1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 2.3) (end 2.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 1.8) (end 3.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.1 1.8) (end 3.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 2.3) (end 3 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 2.3) (end 4.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 1.8) (end 5.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.1 1.8) (end 5.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 2.3) (end 5 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 2.3) (end 6.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 1.8) (end 7.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.1 1.8) (end 7.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 2.3) (end 7 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.45 3.3) (end -2.45 -2.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.45 -2.2) (end 10.45 -2.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start 10.45 -2.2) (end 10.45 3.3) (layer F.CrtYd) (width 0.05)) - (fp_line (start 10.45 3.3) (end -2.45 3.3) (layer F.CrtYd) (width 0.05)) - (pad 1 thru_hole rect (at 0 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 4 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 6 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole oval (at 8 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_B5B-PH-SM4-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_B5B-PH-SM4-TB.kicad_mod deleted file mode 100644 index 3769316b..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_B5B-PH-SM4-TB.kicad_mod +++ /dev/null @@ -1,62 +0,0 @@ -(module Connectors_JST_B5B-PH-SM4-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, B5B-PH-SM4-TB") - (tags "connector jst ph") - (attr smd) - (fp_text reference REF** (at -4 -4.725) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_B5B-PH-SM4-TB (at 0 5.275) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -5.4 2.125) (end -5.15 2.125) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 -3.025) (end -7 -3.625) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 -3.625) (end 7 -3.625) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 -3.625) (end 7 -3.025) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 0.775) (end -7 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 1.375) (end -4.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 0.775) (end 7 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 1.375) (end 4.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.5 -3.625) (end -3.5 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.5 -2.925) (end -5.2 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.2 -2.925) (end -5.2 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.2 0.575) (end -4.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 -3.625) (end 3.5 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 -2.925) (end 5.2 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.2 -2.925) (end 5.2 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.2 0.575) (end 4.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.1 1.375) (end -2.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.1 0.575) (end -2.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.1 0.575) (end -3.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.1 0.075) (end -2.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.9 0.075) (end -2.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 0.575) (end -3 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 1.375) (end -0.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 0.575) (end -0.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 0.575) (end -1.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 0.075) (end -0.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.9 0.075) (end -0.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -1 0.575) (end -1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 1.375) (end 1.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.575) (end 1.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.575) (end 0.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.075) (end 1.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.1 0.075) (end 1.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 1 0.575) (end 1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 1.375) (end 3.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.575) (end 3.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.575) (end 2.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.075) (end 3.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.1 0.075) (end 3.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 0.575) (end 3 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.7 4.4) (end -7.7 -4.15) (layer F.CrtYd) (width 0.05)) - (fp_line (start -7.7 -4.15) (end 7.7 -4.15) (layer F.CrtYd) (width 0.05)) - (fp_line (start 7.7 -4.15) (end 7.7 4.4) (layer F.CrtYd) (width 0.05)) - (fp_line (start 7.7 4.4) (end -7.7 4.4) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -4 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -2 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at 0 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at 2 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at 4 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -6.4 -1.125) (size 1.6 3) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 6.4 -1.125) (size 1.6 3) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_B6B-PH-K.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_B6B-PH-K.kicad_mod deleted file mode 100644 index 6240b6b0..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_B6B-PH-K.kicad_mod +++ /dev/null @@ -1,59 +0,0 @@ -(module Connectors_JST_B6B-PH-K (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, B6B-PH-K") - (tags "connector jst ph") - (fp_text reference REF** (at 0 -3) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_B6B-PH-K (at 5 4) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -1.95 2.8) (end -1.95 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -1.7) (end 11.95 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.95 -1.7) (end 11.95 2.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.95 2.8) (end -1.95 2.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.7) (end 0.5 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.2) (end -1.45 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.45 -1.2) (end -1.45 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.45 2.3) (end 11.45 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.45 2.3) (end 11.45 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.45 -1.2) (end 9.5 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.5 -1.2) (end 9.5 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -0.5) (end -1.45 -0.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 0.8) (end -1.45 0.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.45 -0.5) (end 11.95 -0.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.45 0.8) (end 11.95 0.8) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.7) (end -0.3 -1.9) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.9) (end -0.6 -1.9) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.6 -1.9) (end -0.6 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.8) (end -0.6 -1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 2.3) (end 0.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 1.8) (end 1.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.1 1.8) (end 1.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 1 2.3) (end 1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 2.3) (end 2.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 1.8) (end 3.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.1 1.8) (end 3.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 2.3) (end 3 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 2.3) (end 4.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 1.8) (end 5.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.1 1.8) (end 5.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 2.3) (end 5 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 2.3) (end 6.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 1.8) (end 7.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.1 1.8) (end 7.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 2.3) (end 7 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 2.3) (end 8.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 1.8) (end 9.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.1 1.8) (end 9.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 9 2.3) (end 9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.45 3.3) (end -2.45 -2.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.45 -2.2) (end 12.45 -2.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start 12.45 -2.2) (end 12.45 3.3) (layer F.CrtYd) (width 0.05)) - (fp_line (start 12.45 3.3) (end -2.45 3.3) (layer F.CrtYd) (width 0.05)) - (pad 1 thru_hole rect (at 0 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 4 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 6 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole oval (at 8 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 6 thru_hole oval (at 10 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_B6B-PH-SM4-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_B6B-PH-SM4-TB.kicad_mod deleted file mode 100644 index 07168fbe..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_B6B-PH-SM4-TB.kicad_mod +++ /dev/null @@ -1,69 +0,0 @@ -(module Connectors_JST_B6B-PH-SM4-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, B6B-PH-SM4-TB") - (tags "connector jst ph") - (attr smd) - (fp_text reference REF** (at -5 -4.725) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_B6B-PH-SM4-TB (at 0 5.275) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -6.4 2.125) (end -6.15 2.125) (layer F.SilkS) (width 0.15)) - (fp_line (start -8 -3.025) (end -8 -3.625) (layer F.SilkS) (width 0.15)) - (fp_line (start -8 -3.625) (end 8 -3.625) (layer F.SilkS) (width 0.15)) - (fp_line (start 8 -3.625) (end 8 -3.025) (layer F.SilkS) (width 0.15)) - (fp_line (start -8 0.775) (end -8 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -8 1.375) (end -5.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 8 0.775) (end 8 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 8 1.375) (end 5.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.5 -3.625) (end -4.5 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.5 -2.925) (end -6.2 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.2 -2.925) (end -6.2 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.2 0.575) (end -5.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.5 -3.625) (end 4.5 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.5 -2.925) (end 6.2 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.2 -2.925) (end 6.2 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.2 0.575) (end 5.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.1 1.375) (end -3.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.1 0.575) (end -3.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.1 0.575) (end -4.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.1 0.075) (end -3.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.9 0.075) (end -3.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 0.575) (end -4 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 1.375) (end -1.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 0.575) (end -1.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 0.575) (end -2.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 0.075) (end -1.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.9 0.075) (end -1.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 0.575) (end -2 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 1.375) (end 0.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 0.575) (end 0.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 0.575) (end -0.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 0.075) (end 0.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.1 0.075) (end 0.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 0 0.575) (end 0 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 1.375) (end 2.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 0.575) (end 2.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 0.575) (end 1.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 0.075) (end 2.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.1 0.075) (end 2.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 0.575) (end 2 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.9 1.375) (end 4.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.9 0.575) (end 4.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.9 0.575) (end 3.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.9 0.075) (end 4.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.1 0.075) (end 4.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 0.575) (end 4 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.7 4.4) (end -8.7 -4.15) (layer F.CrtYd) (width 0.05)) - (fp_line (start -8.7 -4.15) (end 8.7 -4.15) (layer F.CrtYd) (width 0.05)) - (fp_line (start 8.7 -4.15) (end 8.7 4.4) (layer F.CrtYd) (width 0.05)) - (fp_line (start 8.7 4.4) (end -8.7 4.4) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -5 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -3 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -1 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at 1 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at 3 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at 5 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -7.4 -1.125) (size 1.6 3) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 7.4 -1.125) (size 1.6 3) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_B7B-PH-K.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_B7B-PH-K.kicad_mod deleted file mode 100644 index 9b240b2e..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_B7B-PH-K.kicad_mod +++ /dev/null @@ -1,64 +0,0 @@ -(module Connectors_JST_B7B-PH-K (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, B7B-PH-K") - (tags "connector jst ph") - (fp_text reference REF** (at 0 -3) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_B7B-PH-K (at 6 4) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -1.95 2.8) (end -1.95 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -1.7) (end 13.95 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.95 -1.7) (end 13.95 2.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.95 2.8) (end -1.95 2.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.7) (end 0.5 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.2) (end -1.45 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.45 -1.2) (end -1.45 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.45 2.3) (end 13.45 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.45 2.3) (end 13.45 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.45 -1.2) (end 11.5 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.5 -1.2) (end 11.5 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -0.5) (end -1.45 -0.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 0.8) (end -1.45 0.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.45 -0.5) (end 13.95 -0.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.45 0.8) (end 13.95 0.8) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.7) (end -0.3 -1.9) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.9) (end -0.6 -1.9) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.6 -1.9) (end -0.6 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.8) (end -0.6 -1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 2.3) (end 0.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 1.8) (end 1.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.1 1.8) (end 1.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 1 2.3) (end 1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 2.3) (end 2.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 1.8) (end 3.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.1 1.8) (end 3.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 2.3) (end 3 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 2.3) (end 4.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 1.8) (end 5.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.1 1.8) (end 5.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 2.3) (end 5 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 2.3) (end 6.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 1.8) (end 7.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.1 1.8) (end 7.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 2.3) (end 7 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 2.3) (end 8.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 1.8) (end 9.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.1 1.8) (end 9.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 9 2.3) (end 9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 2.3) (end 10.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 1.8) (end 11.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.1 1.8) (end 11.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 11 2.3) (end 11 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.45 3.3) (end -2.45 -2.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.45 -2.2) (end 14.45 -2.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start 14.45 -2.2) (end 14.45 3.3) (layer F.CrtYd) (width 0.05)) - (fp_line (start 14.45 3.3) (end -2.45 3.3) (layer F.CrtYd) (width 0.05)) - (pad 1 thru_hole rect (at 0 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 4 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 6 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole oval (at 8 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 6 thru_hole oval (at 10 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 7 thru_hole oval (at 12 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_B7B-PH-SM4-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_B7B-PH-SM4-TB.kicad_mod deleted file mode 100644 index 21a09c2c..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_B7B-PH-SM4-TB.kicad_mod +++ /dev/null @@ -1,76 +0,0 @@ -(module Connectors_JST_B7B-PH-SM4-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, B7B-PH-SM4-TB") - (tags "connector jst ph") - (attr smd) - (fp_text reference REF** (at -6 -4.725) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_B7B-PH-SM4-TB (at 0 5.275) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -7.4 2.125) (end -7.15 2.125) (layer F.SilkS) (width 0.15)) - (fp_line (start -9 -3.025) (end -9 -3.625) (layer F.SilkS) (width 0.15)) - (fp_line (start -9 -3.625) (end 9 -3.625) (layer F.SilkS) (width 0.15)) - (fp_line (start 9 -3.625) (end 9 -3.025) (layer F.SilkS) (width 0.15)) - (fp_line (start -9 0.775) (end -9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -9 1.375) (end -6.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 9 0.775) (end 9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 9 1.375) (end 6.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.5 -3.625) (end -5.5 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.5 -2.925) (end -7.2 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.2 -2.925) (end -7.2 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.2 0.575) (end -6.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.5 -3.625) (end 5.5 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.5 -2.925) (end 7.2 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.2 -2.925) (end 7.2 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.2 0.575) (end 6.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.1 1.375) (end -4.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.1 0.575) (end -4.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.1 0.575) (end -5.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.1 0.075) (end -4.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.9 0.075) (end -4.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 0.575) (end -5 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.1 1.375) (end -2.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.1 0.575) (end -2.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.1 0.575) (end -3.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.1 0.075) (end -2.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.9 0.075) (end -2.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 0.575) (end -3 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 1.375) (end -0.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 0.575) (end -0.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 0.575) (end -1.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 0.075) (end -0.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.9 0.075) (end -0.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -1 0.575) (end -1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 1.375) (end 1.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.575) (end 1.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.575) (end 0.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.075) (end 1.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.1 0.075) (end 1.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 1 0.575) (end 1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 1.375) (end 3.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.575) (end 3.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.575) (end 2.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.075) (end 3.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.1 0.075) (end 3.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 0.575) (end 3 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 1.375) (end 5.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 0.575) (end 5.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 0.575) (end 4.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 0.075) (end 5.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.1 0.075) (end 5.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 0.575) (end 5 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.7 4.4) (end -9.7 -4.15) (layer F.CrtYd) (width 0.05)) - (fp_line (start -9.7 -4.15) (end 9.7 -4.15) (layer F.CrtYd) (width 0.05)) - (fp_line (start 9.7 -4.15) (end 9.7 4.4) (layer F.CrtYd) (width 0.05)) - (fp_line (start 9.7 4.4) (end -9.7 4.4) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -6 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -4 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -2 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at 0 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at 2 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at 4 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at 6 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -8.4 -1.125) (size 1.6 3) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 8.4 -1.125) (size 1.6 3) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_B8B-PH-K.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_B8B-PH-K.kicad_mod deleted file mode 100644 index af5dc480..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_B8B-PH-K.kicad_mod +++ /dev/null @@ -1,69 +0,0 @@ -(module Connectors_JST_B8B-PH-K (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, B8B-PH-K") - (tags "connector jst ph") - (fp_text reference REF** (at 0 -3) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_B8B-PH-K (at 7 4) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -1.95 2.8) (end -1.95 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -1.7) (end 15.95 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.95 -1.7) (end 15.95 2.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.95 2.8) (end -1.95 2.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.7) (end 0.5 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.2) (end -1.45 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.45 -1.2) (end -1.45 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.45 2.3) (end 15.45 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.45 2.3) (end 15.45 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.45 -1.2) (end 13.5 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.5 -1.2) (end 13.5 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -0.5) (end -1.45 -0.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 0.8) (end -1.45 0.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.45 -0.5) (end 15.95 -0.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.45 0.8) (end 15.95 0.8) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.7) (end -0.3 -1.9) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.9) (end -0.6 -1.9) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.6 -1.9) (end -0.6 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.8) (end -0.6 -1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 2.3) (end 0.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 1.8) (end 1.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.1 1.8) (end 1.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 1 2.3) (end 1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 2.3) (end 2.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 1.8) (end 3.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.1 1.8) (end 3.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 2.3) (end 3 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 2.3) (end 4.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 1.8) (end 5.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.1 1.8) (end 5.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 2.3) (end 5 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 2.3) (end 6.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 1.8) (end 7.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.1 1.8) (end 7.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 2.3) (end 7 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 2.3) (end 8.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 1.8) (end 9.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.1 1.8) (end 9.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 9 2.3) (end 9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 2.3) (end 10.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 1.8) (end 11.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.1 1.8) (end 11.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 11 2.3) (end 11 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 2.3) (end 12.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 1.8) (end 13.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.1 1.8) (end 13.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 13 2.3) (end 13 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.45 3.3) (end -2.45 -2.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.45 -2.2) (end 16.45 -2.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start 16.45 -2.2) (end 16.45 3.3) (layer F.CrtYd) (width 0.05)) - (fp_line (start 16.45 3.3) (end -2.45 3.3) (layer F.CrtYd) (width 0.05)) - (pad 1 thru_hole rect (at 0 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 4 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 6 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole oval (at 8 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 6 thru_hole oval (at 10 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 7 thru_hole oval (at 12 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 8 thru_hole oval (at 14 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_B8B-PH-SM4-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_B8B-PH-SM4-TB.kicad_mod deleted file mode 100644 index 4527c529..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_B8B-PH-SM4-TB.kicad_mod +++ /dev/null @@ -1,83 +0,0 @@ -(module Connectors_JST_B8B-PH-SM4-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, B8B-PH-SM4-TB") - (tags "connector jst ph") - (attr smd) - (fp_text reference REF** (at -7 -4.725) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_B8B-PH-SM4-TB (at 0 5.275) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -8.4 2.125) (end -8.15 2.125) (layer F.SilkS) (width 0.15)) - (fp_line (start -10 -3.025) (end -10 -3.625) (layer F.SilkS) (width 0.15)) - (fp_line (start -10 -3.625) (end 10 -3.625) (layer F.SilkS) (width 0.15)) - (fp_line (start 10 -3.625) (end 10 -3.025) (layer F.SilkS) (width 0.15)) - (fp_line (start -10 0.775) (end -10 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -10 1.375) (end -7.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 10 0.775) (end 10 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 10 1.375) (end 7.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.5 -3.625) (end -6.5 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.5 -2.925) (end -8.2 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.2 -2.925) (end -8.2 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.2 0.575) (end -7.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.5 -3.625) (end 6.5 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.5 -2.925) (end 8.2 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.2 -2.925) (end 8.2 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.2 0.575) (end 7.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.1 1.375) (end -5.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.1 0.575) (end -5.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.1 0.575) (end -6.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.1 0.075) (end -5.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.9 0.075) (end -5.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 0.575) (end -6 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.1 1.375) (end -3.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.1 0.575) (end -3.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.1 0.575) (end -4.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.1 0.075) (end -3.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.9 0.075) (end -3.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 0.575) (end -4 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 1.375) (end -1.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 0.575) (end -1.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 0.575) (end -2.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 0.075) (end -1.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.9 0.075) (end -1.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 0.575) (end -2 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 1.375) (end 0.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 0.575) (end 0.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 0.575) (end -0.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 0.075) (end 0.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.1 0.075) (end 0.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 0 0.575) (end 0 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 1.375) (end 2.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 0.575) (end 2.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 0.575) (end 1.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 0.075) (end 2.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.1 0.075) (end 2.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 0.575) (end 2 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.9 1.375) (end 4.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.9 0.575) (end 4.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.9 0.575) (end 3.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.9 0.075) (end 4.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.1 0.075) (end 4.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 0.575) (end 4 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.9 1.375) (end 6.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.9 0.575) (end 6.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.9 0.575) (end 5.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.9 0.075) (end 6.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.1 0.075) (end 6.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 0.575) (end 6 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.7 4.4) (end -10.7 -4.15) (layer F.CrtYd) (width 0.05)) - (fp_line (start -10.7 -4.15) (end 10.7 -4.15) (layer F.CrtYd) (width 0.05)) - (fp_line (start 10.7 -4.15) (end 10.7 4.4) (layer F.CrtYd) (width 0.05)) - (fp_line (start 10.7 4.4) (end -10.7 4.4) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -7 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -5 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -3 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -1 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at 1 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at 3 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at 5 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at 7 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -9.4 -1.125) (size 1.6 3) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 9.4 -1.125) (size 1.6 3) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_B9B-PH-K.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_B9B-PH-K.kicad_mod deleted file mode 100644 index f5d2c222..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_B9B-PH-K.kicad_mod +++ /dev/null @@ -1,74 +0,0 @@ -(module Connectors_JST_B9B-PH-K (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, B9B-PH-K") - (tags "connector jst ph") - (fp_text reference REF** (at 0 -3) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_B9B-PH-K (at 8 4) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -1.95 2.8) (end -1.95 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -1.7) (end 17.95 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.95 -1.7) (end 17.95 2.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.95 2.8) (end -1.95 2.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.7) (end 0.5 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.2) (end -1.45 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.45 -1.2) (end -1.45 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.45 2.3) (end 17.45 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.45 2.3) (end 17.45 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.45 -1.2) (end 15.5 -1.2) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.5 -1.2) (end 15.5 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -0.5) (end -1.45 -0.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 0.8) (end -1.45 0.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.45 -0.5) (end 17.95 -0.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.45 0.8) (end 17.95 0.8) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.7) (end -0.3 -1.9) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.9) (end -0.6 -1.9) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.6 -1.9) (end -0.6 -1.7) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 -1.8) (end -0.6 -1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 2.3) (end 0.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 1.8) (end 1.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.1 1.8) (end 1.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 1 2.3) (end 1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 2.3) (end 2.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 1.8) (end 3.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.1 1.8) (end 3.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 2.3) (end 3 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 2.3) (end 4.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 1.8) (end 5.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.1 1.8) (end 5.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 2.3) (end 5 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 2.3) (end 6.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 1.8) (end 7.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.1 1.8) (end 7.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 2.3) (end 7 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 2.3) (end 8.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 1.8) (end 9.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.1 1.8) (end 9.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 9 2.3) (end 9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 2.3) (end 10.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 1.8) (end 11.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.1 1.8) (end 11.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 11 2.3) (end 11 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 2.3) (end 12.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 1.8) (end 13.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.1 1.8) (end 13.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 13 2.3) (end 13 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.9 2.3) (end 14.9 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.9 1.8) (end 15.1 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.1 1.8) (end 15.1 2.3) (layer F.SilkS) (width 0.15)) - (fp_line (start 15 2.3) (end 15 1.8) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.45 3.3) (end -2.45 -2.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.45 -2.2) (end 18.45 -2.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start 18.45 -2.2) (end 18.45 3.3) (layer F.CrtYd) (width 0.05)) - (fp_line (start 18.45 3.3) (end -2.45 3.3) (layer F.CrtYd) (width 0.05)) - (pad 1 thru_hole rect (at 0 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 4 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 6 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole oval (at 8 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 6 thru_hole oval (at 10 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 7 thru_hole oval (at 12 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 8 thru_hole oval (at 14 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 9 thru_hole oval (at 16 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_B9B-PH-SM4-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_B9B-PH-SM4-TB.kicad_mod deleted file mode 100644 index e7806bbf..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_B9B-PH-SM4-TB.kicad_mod +++ /dev/null @@ -1,90 +0,0 @@ -(module Connectors_JST_B9B-PH-SM4-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, B9B-PH-SM4-TB") - (tags "connector jst ph") - (attr smd) - (fp_text reference REF** (at -8 -4.725) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_B9B-PH-SM4-TB (at 0 5.275) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -9.4 2.125) (end -9.15 2.125) (layer F.SilkS) (width 0.15)) - (fp_line (start -11 -3.025) (end -11 -3.625) (layer F.SilkS) (width 0.15)) - (fp_line (start -11 -3.625) (end 11 -3.625) (layer F.SilkS) (width 0.15)) - (fp_line (start 11 -3.625) (end 11 -3.025) (layer F.SilkS) (width 0.15)) - (fp_line (start -11 0.775) (end -11 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -11 1.375) (end -8.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 11 0.775) (end 11 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 11 1.375) (end 8.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.5 -3.625) (end -7.5 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.5 -2.925) (end -9.2 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.2 -2.925) (end -9.2 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.2 0.575) (end -8.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.5 -3.625) (end 7.5 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.5 -2.925) (end 9.2 -2.925) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.2 -2.925) (end 9.2 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.2 0.575) (end 8.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.1 1.375) (end -6.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.1 0.575) (end -6.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.1 0.575) (end -7.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.1 0.075) (end -6.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.9 0.075) (end -6.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 0.575) (end -7 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.1 1.375) (end -4.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.1 0.575) (end -4.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.1 0.575) (end -5.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.1 0.075) (end -4.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.9 0.075) (end -4.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 0.575) (end -5 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.1 1.375) (end -2.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.1 0.575) (end -2.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.1 0.575) (end -3.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.1 0.075) (end -2.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.9 0.075) (end -2.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 0.575) (end -3 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 1.375) (end -0.9 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 0.575) (end -0.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 0.575) (end -1.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 0.075) (end -0.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.9 0.075) (end -0.9 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start -1 0.575) (end -1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 1.375) (end 1.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.575) (end 1.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.575) (end 0.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.075) (end 1.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.1 0.075) (end 1.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 1 0.575) (end 1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 1.375) (end 3.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.575) (end 3.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.575) (end 2.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.075) (end 3.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.1 0.075) (end 3.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 0.575) (end 3 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 1.375) (end 5.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 0.575) (end 5.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 0.575) (end 4.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 0.075) (end 5.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.1 0.075) (end 5.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 0.575) (end 5 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 1.375) (end 7.1 1.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 0.575) (end 7.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 0.575) (end 6.9 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 0.075) (end 7.1 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.1 0.075) (end 7.1 0.575) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 0.575) (end 7 0.075) (layer F.SilkS) (width 0.15)) - (fp_line (start -11.7 4.4) (end -11.7 -4.15) (layer F.CrtYd) (width 0.05)) - (fp_line (start -11.7 -4.15) (end 11.7 -4.15) (layer F.CrtYd) (width 0.05)) - (fp_line (start 11.7 -4.15) (end 11.7 4.4) (layer F.CrtYd) (width 0.05)) - (fp_line (start 11.7 4.4) (end -11.7 4.4) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -8 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -6 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -4 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -2 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at 0 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at 2 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at 4 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at 6 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 9 smd rect (at 8 1.125) (size 1 5.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -10.4 -1.125) (size 1.6 3) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 10.4 -1.125) (size 1.6 3) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_BM02B-SRSS-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_BM02B-SRSS-TB.kicad_mod deleted file mode 100644 index 888188b2..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_BM02B-SRSS-TB.kicad_mod +++ /dev/null @@ -1,49 +0,0 @@ -(module Connectors_JST_BM02B-SRSS-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST SH series connector, BM02B-SRSS-TB") - (tags "connector jst sh") - (attr smd) - (fp_text reference REF** (at -0.5 -3.2625) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_BM02B-SRSS-TB (at 0 3.2375) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -1.5 1.5875) (end -1.25 1.5875) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.9 -1.9625) (end 0.9 -1.9625) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 -0.0625) (end -2 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 0.9375) (end -1.1 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.5 0.9375) (end -1.5 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.5 -0.0625) (end -1.5 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.5 -0.0625) (end -1.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.5 0.9375) (end -1.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.5 0.3375) (end -1.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.5 0.3375) (end -2 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 0.3375) (end -2 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 0.3375) (end -1.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 -0.0625) (end 2 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 0.9375) (end 1.1 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.5 0.9375) (end 1.5 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.5 -0.0625) (end 1.5 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.5 -0.0625) (end 1.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.5 0.9375) (end 1.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.5 0.3375) (end 1.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.5 0.3375) (end 2 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 0.3375) (end 2 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 0.3375) (end 1.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.9 -1.0625) (end -0.9 -1.5625) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.9 -1.5625) (end 0.9 -1.5625) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 -1.5625) (end 0.9 -1.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.9 -0.4625) (end -0.9 0.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.9 0.1875) (end 0.9 0.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.1875) (end 0.9 -0.4625) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.5 -1.0625) (end -0.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.0625) (end 0.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.9 2.55) (end -2.9 -2.7) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.9 -2.7) (end 2.9 -2.7) (layer F.CrtYd) (width 0.05)) - (fp_line (start 2.9 -2.7) (end 2.9 2.55) (layer F.CrtYd) (width 0.05)) - (fp_line (start 2.9 2.55) (end -2.9 2.55) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -0.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at 0.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -1.8 -1.2625) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 1.8 -1.2625) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_BM03B-SRSS-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_BM03B-SRSS-TB.kicad_mod deleted file mode 100644 index f6dd5f01..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_BM03B-SRSS-TB.kicad_mod +++ /dev/null @@ -1,51 +0,0 @@ -(module Connectors_JST_BM03B-SRSS-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST SH series connector, BM03B-SRSS-TB") - (tags "connector jst sh") - (attr smd) - (fp_text reference REF** (at -1 -3.2625) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_BM03B-SRSS-TB (at 0 3.2375) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -2 1.5875) (end -1.75 1.5875) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.4 -1.9625) (end 1.4 -1.9625) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 -0.0625) (end -2.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 0.9375) (end -1.6 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 0.9375) (end -2 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 -0.0625) (end -2 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 -0.0625) (end -2 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 0.9375) (end -2 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 0.3375) (end -2 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 0.3375) (end -2.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 0.3375) (end -2.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 0.3375) (end -2 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 -0.0625) (end 2.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 0.9375) (end 1.6 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 0.9375) (end 2 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 -0.0625) (end 2 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 -0.0625) (end 2 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 0.9375) (end 2 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 0.3375) (end 2 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 0.3375) (end 2.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 0.3375) (end 2.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 0.3375) (end 2 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.4 -1.0625) (end -1.4 -1.5625) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.4 -1.5625) (end 1.4 -1.5625) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.4 -1.5625) (end 1.4 -1.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.4 -0.4625) (end -1.4 0.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.4 0.1875) (end 1.4 0.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.4 0.1875) (end 1.4 -0.4625) (layer F.SilkS) (width 0.15)) - (fp_line (start -1 -1.0625) (end -1 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 0 -1.0625) (end 0 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 1 -1.0625) (end 1 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.4 2.55) (end -3.4 -2.7) (layer F.CrtYd) (width 0.05)) - (fp_line (start -3.4 -2.7) (end 3.4 -2.7) (layer F.CrtYd) (width 0.05)) - (fp_line (start 3.4 -2.7) (end 3.4 2.55) (layer F.CrtYd) (width 0.05)) - (fp_line (start 3.4 2.55) (end -3.4 2.55) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -1 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at 0 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at 1 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -2.3 -1.2625) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 2.3 -1.2625) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_BM04B-SRSS-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_BM04B-SRSS-TB.kicad_mod deleted file mode 100644 index f1ded53c..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_BM04B-SRSS-TB.kicad_mod +++ /dev/null @@ -1,53 +0,0 @@ -(module Connectors_JST_BM04B-SRSS-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST SH series connector, BM04B-SRSS-TB") - (tags "connector jst sh") - (attr smd) - (fp_text reference REF** (at -1.5 -3.2625) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_BM04B-SRSS-TB (at 0 3.2375) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -2.5 1.5875) (end -2.25 1.5875) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.9 -1.9625) (end 1.9 -1.9625) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 -0.0625) (end -3 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 0.9375) (end -2.1 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 0.9375) (end -2.5 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 -0.0625) (end -2.5 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 -0.0625) (end -2.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 0.9375) (end -2.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 0.3375) (end -2.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 0.3375) (end -3 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 0.3375) (end -3 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 0.3375) (end -2.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 -0.0625) (end 3 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 0.9375) (end 2.1 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 0.9375) (end 2.5 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 -0.0625) (end 2.5 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 -0.0625) (end 2.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 0.9375) (end 2.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 0.3375) (end 2.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 0.3375) (end 3 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 0.3375) (end 3 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 0.3375) (end 2.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.9 -1.0625) (end -1.9 -1.5625) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.9 -1.5625) (end 1.9 -1.5625) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 -1.5625) (end 1.9 -1.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.9 -0.4625) (end -1.9 0.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.9 0.1875) (end 1.9 0.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 0.1875) (end 1.9 -0.4625) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.5 -1.0625) (end -1.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.5 -1.0625) (end -0.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.0625) (end 0.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.5 -1.0625) (end 1.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.9 2.55) (end -3.9 -2.7) (layer F.CrtYd) (width 0.05)) - (fp_line (start -3.9 -2.7) (end 3.9 -2.7) (layer F.CrtYd) (width 0.05)) - (fp_line (start 3.9 -2.7) (end 3.9 2.55) (layer F.CrtYd) (width 0.05)) - (fp_line (start 3.9 2.55) (end -3.9 2.55) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -1.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -0.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at 0.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at 1.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -2.8 -1.2625) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 2.8 -1.2625) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_BM05B-SRSS-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_BM05B-SRSS-TB.kicad_mod deleted file mode 100644 index 916cb236..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_BM05B-SRSS-TB.kicad_mod +++ /dev/null @@ -1,55 +0,0 @@ -(module Connectors_JST_BM05B-SRSS-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST SH series connector, BM05B-SRSS-TB") - (tags "connector jst sh") - (attr smd) - (fp_text reference REF** (at -2 -3.2625) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_BM05B-SRSS-TB (at 0 3.2375) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -3 1.5875) (end -2.75 1.5875) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.4 -1.9625) (end 2.4 -1.9625) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.5 -0.0625) (end -3.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.5 0.9375) (end -2.6 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 0.9375) (end -3 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 -0.0625) (end -3 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 -0.0625) (end -3 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 0.9375) (end -3 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 0.3375) (end -3 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 0.3375) (end -3.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.5 0.3375) (end -3.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.5 0.3375) (end -3 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 -0.0625) (end 3.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 0.9375) (end 2.6 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 0.9375) (end 3 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 -0.0625) (end 3 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 -0.0625) (end 3 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 0.9375) (end 3 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 0.3375) (end 3 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 0.3375) (end 3.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 0.3375) (end 3.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 0.3375) (end 3 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.4 -1.0625) (end -2.4 -1.5625) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.4 -1.5625) (end 2.4 -1.5625) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.4 -1.5625) (end 2.4 -1.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.4 -0.4625) (end -2.4 0.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.4 0.1875) (end 2.4 0.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.4 0.1875) (end 2.4 -0.4625) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 -1.0625) (end -2 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -1 -1.0625) (end -1 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 0 -1.0625) (end 0 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 1 -1.0625) (end 1 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 -1.0625) (end 2 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.4 2.55) (end -4.4 -2.7) (layer F.CrtYd) (width 0.05)) - (fp_line (start -4.4 -2.7) (end 4.4 -2.7) (layer F.CrtYd) (width 0.05)) - (fp_line (start 4.4 -2.7) (end 4.4 2.55) (layer F.CrtYd) (width 0.05)) - (fp_line (start 4.4 2.55) (end -4.4 2.55) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -2 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -1 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at 0 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at 1 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at 2 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -3.3 -1.2625) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 3.3 -1.2625) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_BM06B-SRSS-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_BM06B-SRSS-TB.kicad_mod deleted file mode 100644 index 00190fe8..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_BM06B-SRSS-TB.kicad_mod +++ /dev/null @@ -1,57 +0,0 @@ -(module Connectors_JST_BM06B-SRSS-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST SH series connector, BM06B-SRSS-TB") - (tags "connector jst sh") - (attr smd) - (fp_text reference REF** (at -2.5 -3.2625) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_BM06B-SRSS-TB (at 0 3.2375) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -3.5 1.5875) (end -3.25 1.5875) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.9 -1.9625) (end 2.9 -1.9625) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 -0.0625) (end -4 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 0.9375) (end -3.1 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.5 0.9375) (end -3.5 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.5 -0.0625) (end -3.5 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.5 -0.0625) (end -3.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.5 0.9375) (end -3.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.5 0.3375) (end -3.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.5 0.3375) (end -4 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 0.3375) (end -4 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 0.3375) (end -3.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 -0.0625) (end 4 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 0.9375) (end 3.1 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 0.9375) (end 3.5 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 -0.0625) (end 3.5 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 -0.0625) (end 3.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 0.9375) (end 3.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 0.3375) (end 3.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 0.3375) (end 4 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 0.3375) (end 4 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 0.3375) (end 3.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.9 -1.0625) (end -2.9 -1.5625) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.9 -1.5625) (end 2.9 -1.5625) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 -1.5625) (end 2.9 -1.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.9 -0.4625) (end -2.9 0.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.9 0.1875) (end 2.9 0.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.1875) (end 2.9 -0.4625) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 -1.0625) (end -2.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.5 -1.0625) (end -1.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.5 -1.0625) (end -0.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.0625) (end 0.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.5 -1.0625) (end 1.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 -1.0625) (end 2.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.9 2.55) (end -4.9 -2.7) (layer F.CrtYd) (width 0.05)) - (fp_line (start -4.9 -2.7) (end 4.9 -2.7) (layer F.CrtYd) (width 0.05)) - (fp_line (start 4.9 -2.7) (end 4.9 2.55) (layer F.CrtYd) (width 0.05)) - (fp_line (start 4.9 2.55) (end -4.9 2.55) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -2.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -1.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -0.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at 0.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at 1.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at 2.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -3.8 -1.2625) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 3.8 -1.2625) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_BM07B-SRSS-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_BM07B-SRSS-TB.kicad_mod deleted file mode 100644 index 3f1a985d..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_BM07B-SRSS-TB.kicad_mod +++ /dev/null @@ -1,59 +0,0 @@ -(module Connectors_JST_BM07B-SRSS-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST SH series connector, BM07B-SRSS-TB") - (tags "connector jst sh") - (attr smd) - (fp_text reference REF** (at -3 -3.2625) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_BM07B-SRSS-TB (at 0 3.2375) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -4 1.5875) (end -3.75 1.5875) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.4 -1.9625) (end 3.4 -1.9625) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.5 -0.0625) (end -4.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.5 0.9375) (end -3.6 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 0.9375) (end -4 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 -0.0625) (end -4 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 -0.0625) (end -4 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 0.9375) (end -4 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 0.3375) (end -4 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 0.3375) (end -4.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.5 0.3375) (end -4.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.5 0.3375) (end -4 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.5 -0.0625) (end 4.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.5 0.9375) (end 3.6 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 0.9375) (end 4 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 -0.0625) (end 4 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 -0.0625) (end 4 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 0.9375) (end 4 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 0.3375) (end 4 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 0.3375) (end 4.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.5 0.3375) (end 4.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.5 0.3375) (end 4 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.4 -1.0625) (end -3.4 -1.5625) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.4 -1.5625) (end 3.4 -1.5625) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.4 -1.5625) (end 3.4 -1.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.4 -0.4625) (end -3.4 0.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.4 0.1875) (end 3.4 0.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.4 0.1875) (end 3.4 -0.4625) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 -1.0625) (end -3 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 -1.0625) (end -2 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -1 -1.0625) (end -1 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 0 -1.0625) (end 0 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 1 -1.0625) (end 1 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 -1.0625) (end 2 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 -1.0625) (end 3 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.4 2.55) (end -5.4 -2.7) (layer F.CrtYd) (width 0.05)) - (fp_line (start -5.4 -2.7) (end 5.4 -2.7) (layer F.CrtYd) (width 0.05)) - (fp_line (start 5.4 -2.7) (end 5.4 2.55) (layer F.CrtYd) (width 0.05)) - (fp_line (start 5.4 2.55) (end -5.4 2.55) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -3 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -2 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -1 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at 0 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at 1 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at 2 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at 3 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -4.3 -1.2625) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 4.3 -1.2625) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_BM08B-SRSS-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_BM08B-SRSS-TB.kicad_mod deleted file mode 100644 index 2b731b8e..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_BM08B-SRSS-TB.kicad_mod +++ /dev/null @@ -1,61 +0,0 @@ -(module Connectors_JST_BM08B-SRSS-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST SH series connector, BM08B-SRSS-TB") - (tags "connector jst sh") - (attr smd) - (fp_text reference REF** (at -3.5 -3.2625) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_BM08B-SRSS-TB (at 0 3.2375) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -4.5 1.5875) (end -4.25 1.5875) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.9 -1.9625) (end 3.9 -1.9625) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 -0.0625) (end -5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 0.9375) (end -4.1 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.5 0.9375) (end -4.5 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.5 -0.0625) (end -4.5 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.5 -0.0625) (end -4.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.5 0.9375) (end -4.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.5 0.3375) (end -4.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.5 0.3375) (end -5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 0.3375) (end -5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 0.3375) (end -4.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 -0.0625) (end 5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 0.9375) (end 4.1 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.5 0.9375) (end 4.5 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.5 -0.0625) (end 4.5 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.5 -0.0625) (end 4.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.5 0.9375) (end 4.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.5 0.3375) (end 4.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.5 0.3375) (end 5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 0.3375) (end 5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 0.3375) (end 4.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.9 -1.0625) (end -3.9 -1.5625) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.9 -1.5625) (end 3.9 -1.5625) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.9 -1.5625) (end 3.9 -1.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.9 -0.4625) (end -3.9 0.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.9 0.1875) (end 3.9 0.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.9 0.1875) (end 3.9 -0.4625) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.5 -1.0625) (end -3.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 -1.0625) (end -2.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.5 -1.0625) (end -1.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.5 -1.0625) (end -0.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.0625) (end 0.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.5 -1.0625) (end 1.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 -1.0625) (end 2.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 -1.0625) (end 3.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.9 2.55) (end -5.9 -2.7) (layer F.CrtYd) (width 0.05)) - (fp_line (start -5.9 -2.7) (end 5.9 -2.7) (layer F.CrtYd) (width 0.05)) - (fp_line (start 5.9 -2.7) (end 5.9 2.55) (layer F.CrtYd) (width 0.05)) - (fp_line (start 5.9 2.55) (end -5.9 2.55) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -3.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -2.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -1.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -0.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at 0.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at 1.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at 2.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at 3.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -4.8 -1.2625) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 4.8 -1.2625) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_BM09B-SRSS-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_BM09B-SRSS-TB.kicad_mod deleted file mode 100644 index f17f6c76..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_BM09B-SRSS-TB.kicad_mod +++ /dev/null @@ -1,63 +0,0 @@ -(module Connectors_JST_BM09B-SRSS-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST SH series connector, BM09B-SRSS-TB") - (tags "connector jst sh") - (attr smd) - (fp_text reference REF** (at -4 -3.2625) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_BM09B-SRSS-TB (at 0 3.2375) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -5 1.5875) (end -4.75 1.5875) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.4 -1.9625) (end 4.4 -1.9625) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.5 -0.0625) (end -5.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.5 0.9375) (end -4.6 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 0.9375) (end -5 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 -0.0625) (end -5 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 -0.0625) (end -5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 0.9375) (end -5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 0.3375) (end -5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 0.3375) (end -5.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.5 0.3375) (end -5.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.5 0.3375) (end -5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.5 -0.0625) (end 5.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.5 0.9375) (end 4.6 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 0.9375) (end 5 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 -0.0625) (end 5 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 -0.0625) (end 5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 0.9375) (end 5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 0.3375) (end 5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 0.3375) (end 5.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.5 0.3375) (end 5.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.5 0.3375) (end 5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.4 -1.0625) (end -4.4 -1.5625) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.4 -1.5625) (end 4.4 -1.5625) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.4 -1.5625) (end 4.4 -1.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.4 -0.4625) (end -4.4 0.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.4 0.1875) (end 4.4 0.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.4 0.1875) (end 4.4 -0.4625) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 -1.0625) (end -4 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 -1.0625) (end -3 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 -1.0625) (end -2 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -1 -1.0625) (end -1 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 0 -1.0625) (end 0 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 1 -1.0625) (end 1 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 -1.0625) (end 2 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 -1.0625) (end 3 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 -1.0625) (end 4 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.4 2.55) (end -6.4 -2.7) (layer F.CrtYd) (width 0.05)) - (fp_line (start -6.4 -2.7) (end 6.4 -2.7) (layer F.CrtYd) (width 0.05)) - (fp_line (start 6.4 -2.7) (end 6.4 2.55) (layer F.CrtYd) (width 0.05)) - (fp_line (start 6.4 2.55) (end -6.4 2.55) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -4 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -3 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -2 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -1 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at 0 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at 1 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at 2 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at 3 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 9 smd rect (at 4 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -5.3 -1.2625) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 5.3 -1.2625) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_BM10B-SRSS-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_BM10B-SRSS-TB.kicad_mod deleted file mode 100644 index e705f128..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_BM10B-SRSS-TB.kicad_mod +++ /dev/null @@ -1,65 +0,0 @@ -(module Connectors_JST_BM10B-SRSS-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST SH series connector, BM10B-SRSS-TB") - (tags "connector jst sh") - (attr smd) - (fp_text reference REF** (at -4.5 -3.2625) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_BM10B-SRSS-TB (at 0 3.2375) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -5.5 1.5875) (end -5.25 1.5875) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.9 -1.9625) (end 4.9 -1.9625) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 -0.0625) (end -6 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 0.9375) (end -5.1 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.5 0.9375) (end -5.5 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.5 -0.0625) (end -5.5 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.5 -0.0625) (end -5.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.5 0.9375) (end -5.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.5 0.3375) (end -5.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.5 0.3375) (end -6 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 0.3375) (end -6 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 0.3375) (end -5.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 -0.0625) (end 6 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 0.9375) (end 5.1 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.5 0.9375) (end 5.5 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.5 -0.0625) (end 5.5 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.5 -0.0625) (end 5.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.5 0.9375) (end 5.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.5 0.3375) (end 5.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.5 0.3375) (end 6 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 0.3375) (end 6 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 0.3375) (end 5.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.9 -1.0625) (end -4.9 -1.5625) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.9 -1.5625) (end 4.9 -1.5625) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 -1.5625) (end 4.9 -1.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.9 -0.4625) (end -4.9 0.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.9 0.1875) (end 4.9 0.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 0.1875) (end 4.9 -0.4625) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.5 -1.0625) (end -4.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.5 -1.0625) (end -3.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 -1.0625) (end -2.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.5 -1.0625) (end -1.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.5 -1.0625) (end -0.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.0625) (end 0.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.5 -1.0625) (end 1.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 -1.0625) (end 2.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 -1.0625) (end 3.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.5 -1.0625) (end 4.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.9 2.55) (end -6.9 -2.7) (layer F.CrtYd) (width 0.05)) - (fp_line (start -6.9 -2.7) (end 6.9 -2.7) (layer F.CrtYd) (width 0.05)) - (fp_line (start 6.9 -2.7) (end 6.9 2.55) (layer F.CrtYd) (width 0.05)) - (fp_line (start 6.9 2.55) (end -6.9 2.55) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -4.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -3.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -2.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -1.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at -0.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at 0.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at 1.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at 2.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 9 smd rect (at 3.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 10 smd rect (at 4.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -5.8 -1.2625) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 5.8 -1.2625) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_BM11B-SRSS-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_BM11B-SRSS-TB.kicad_mod deleted file mode 100644 index cd13a409..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_BM11B-SRSS-TB.kicad_mod +++ /dev/null @@ -1,67 +0,0 @@ -(module Connectors_JST_BM11B-SRSS-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST SH series connector, BM11B-SRSS-TB") - (tags "connector jst sh") - (attr smd) - (fp_text reference REF** (at -5 -3.2625) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_BM11B-SRSS-TB (at 0 3.2375) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -6 1.5875) (end -5.75 1.5875) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.4 -1.9625) (end 5.4 -1.9625) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.5 -0.0625) (end -6.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.5 0.9375) (end -5.6 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 0.9375) (end -6 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 -0.0625) (end -6 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 -0.0625) (end -6 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 0.9375) (end -6 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 0.3375) (end -6 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 0.3375) (end -6.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.5 0.3375) (end -6.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.5 0.3375) (end -6 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.5 -0.0625) (end 6.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.5 0.9375) (end 5.6 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 0.9375) (end 6 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 -0.0625) (end 6 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 -0.0625) (end 6 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 0.9375) (end 6 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 0.3375) (end 6 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 0.3375) (end 6.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.5 0.3375) (end 6.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.5 0.3375) (end 6 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.4 -1.0625) (end -5.4 -1.5625) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.4 -1.5625) (end 5.4 -1.5625) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.4 -1.5625) (end 5.4 -1.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.4 -0.4625) (end -5.4 0.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.4 0.1875) (end 5.4 0.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.4 0.1875) (end 5.4 -0.4625) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 -1.0625) (end -5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 -1.0625) (end -4 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 -1.0625) (end -3 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 -1.0625) (end -2 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -1 -1.0625) (end -1 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 0 -1.0625) (end 0 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 1 -1.0625) (end 1 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 -1.0625) (end 2 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 -1.0625) (end 3 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 -1.0625) (end 4 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 -1.0625) (end 5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.4 2.55) (end -7.4 -2.7) (layer F.CrtYd) (width 0.05)) - (fp_line (start -7.4 -2.7) (end 7.4 -2.7) (layer F.CrtYd) (width 0.05)) - (fp_line (start 7.4 -2.7) (end 7.4 2.55) (layer F.CrtYd) (width 0.05)) - (fp_line (start 7.4 2.55) (end -7.4 2.55) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -4 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -3 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -2 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at -1 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at 0 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at 1 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at 2 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 9 smd rect (at 3 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 10 smd rect (at 4 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 11 smd rect (at 5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -6.3 -1.2625) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 6.3 -1.2625) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_BM12B-SRSS-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_BM12B-SRSS-TB.kicad_mod deleted file mode 100644 index 06f2158f..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_BM12B-SRSS-TB.kicad_mod +++ /dev/null @@ -1,69 +0,0 @@ -(module Connectors_JST_BM12B-SRSS-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST SH series connector, BM12B-SRSS-TB") - (tags "connector jst sh") - (attr smd) - (fp_text reference REF** (at -5.5 -3.2625) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_BM12B-SRSS-TB (at 0 3.2375) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -6.5 1.5875) (end -6.25 1.5875) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.9 -1.9625) (end 5.9 -1.9625) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 -0.0625) (end -7 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 0.9375) (end -6.1 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.5 0.9375) (end -6.5 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.5 -0.0625) (end -6.5 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.5 -0.0625) (end -6.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.5 0.9375) (end -6.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.5 0.3375) (end -6.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.5 0.3375) (end -7 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 0.3375) (end -7 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 0.3375) (end -6.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 -0.0625) (end 7 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 0.9375) (end 6.1 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.5 0.9375) (end 6.5 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.5 -0.0625) (end 6.5 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.5 -0.0625) (end 6.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.5 0.9375) (end 6.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.5 0.3375) (end 6.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.5 0.3375) (end 7 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 0.3375) (end 7 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 0.3375) (end 6.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.9 -1.0625) (end -5.9 -1.5625) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.9 -1.5625) (end 5.9 -1.5625) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.9 -1.5625) (end 5.9 -1.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.9 -0.4625) (end -5.9 0.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.9 0.1875) (end 5.9 0.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.9 0.1875) (end 5.9 -0.4625) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.5 -1.0625) (end -5.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.5 -1.0625) (end -4.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.5 -1.0625) (end -3.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 -1.0625) (end -2.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.5 -1.0625) (end -1.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.5 -1.0625) (end -0.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.0625) (end 0.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.5 -1.0625) (end 1.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 -1.0625) (end 2.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 -1.0625) (end 3.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.5 -1.0625) (end 4.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.5 -1.0625) (end 5.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.9 2.55) (end -7.9 -2.7) (layer F.CrtYd) (width 0.05)) - (fp_line (start -7.9 -2.7) (end 7.9 -2.7) (layer F.CrtYd) (width 0.05)) - (fp_line (start 7.9 -2.7) (end 7.9 2.55) (layer F.CrtYd) (width 0.05)) - (fp_line (start 7.9 2.55) (end -7.9 2.55) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -5.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -4.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -3.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -2.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at -1.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at -0.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at 0.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at 1.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 9 smd rect (at 2.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 10 smd rect (at 3.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 11 smd rect (at 4.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 12 smd rect (at 5.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -6.8 -1.2625) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 6.8 -1.2625) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_BM13B-SRSS-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_BM13B-SRSS-TB.kicad_mod deleted file mode 100644 index 4727c6ad..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_BM13B-SRSS-TB.kicad_mod +++ /dev/null @@ -1,71 +0,0 @@ -(module Connectors_JST_BM13B-SRSS-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST SH series connector, BM13B-SRSS-TB") - (tags "connector jst sh") - (attr smd) - (fp_text reference REF** (at -6 -3.2625) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_BM13B-SRSS-TB (at 0 3.2375) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -7 1.5875) (end -6.75 1.5875) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.4 -1.9625) (end 6.4 -1.9625) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.5 -0.0625) (end -7.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.5 0.9375) (end -6.6 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 0.9375) (end -7 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 -0.0625) (end -7 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 -0.0625) (end -7 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 0.9375) (end -7 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 0.3375) (end -7 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 0.3375) (end -7.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.5 0.3375) (end -7.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.5 0.3375) (end -7 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.5 -0.0625) (end 7.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.5 0.9375) (end 6.6 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 0.9375) (end 7 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 -0.0625) (end 7 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 -0.0625) (end 7 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 0.9375) (end 7 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 0.3375) (end 7 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 0.3375) (end 7.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.5 0.3375) (end 7.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.5 0.3375) (end 7 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.4 -1.0625) (end -6.4 -1.5625) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.4 -1.5625) (end 6.4 -1.5625) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.4 -1.5625) (end 6.4 -1.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.4 -0.4625) (end -6.4 0.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.4 0.1875) (end 6.4 0.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.4 0.1875) (end 6.4 -0.4625) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 -1.0625) (end -6 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 -1.0625) (end -5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 -1.0625) (end -4 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 -1.0625) (end -3 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 -1.0625) (end -2 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -1 -1.0625) (end -1 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 0 -1.0625) (end 0 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 1 -1.0625) (end 1 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 -1.0625) (end 2 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 -1.0625) (end 3 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 -1.0625) (end 4 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 -1.0625) (end 5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 -1.0625) (end 6 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.4 2.55) (end -8.4 -2.7) (layer F.CrtYd) (width 0.05)) - (fp_line (start -8.4 -2.7) (end 8.4 -2.7) (layer F.CrtYd) (width 0.05)) - (fp_line (start 8.4 -2.7) (end 8.4 2.55) (layer F.CrtYd) (width 0.05)) - (fp_line (start 8.4 2.55) (end -8.4 2.55) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -6 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -4 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -3 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at -2 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at -1 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at 0 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at 1 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 9 smd rect (at 2 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 10 smd rect (at 3 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 11 smd rect (at 4 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 12 smd rect (at 5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 13 smd rect (at 6 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -7.3 -1.2625) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 7.3 -1.2625) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_BM14B-SRSS-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_BM14B-SRSS-TB.kicad_mod deleted file mode 100644 index 37f20f30..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_BM14B-SRSS-TB.kicad_mod +++ /dev/null @@ -1,73 +0,0 @@ -(module Connectors_JST_BM14B-SRSS-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST SH series connector, BM14B-SRSS-TB") - (tags "connector jst sh") - (attr smd) - (fp_text reference REF** (at -6.5 -3.2625) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_BM14B-SRSS-TB (at 0 3.2375) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -7.5 1.5875) (end -7.25 1.5875) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.9 -1.9625) (end 6.9 -1.9625) (layer F.SilkS) (width 0.15)) - (fp_line (start -8 -0.0625) (end -8 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -8 0.9375) (end -7.1 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.5 0.9375) (end -7.5 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.5 -0.0625) (end -7.5 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.5 -0.0625) (end -7.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.5 0.9375) (end -7.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.5 0.3375) (end -7.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.5 0.3375) (end -8 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -8 0.3375) (end -8 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -8 0.3375) (end -7.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 8 -0.0625) (end 8 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 8 0.9375) (end 7.1 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.5 0.9375) (end 7.5 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.5 -0.0625) (end 7.5 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.5 -0.0625) (end 7.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.5 0.9375) (end 7.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.5 0.3375) (end 7.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.5 0.3375) (end 8 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 8 0.3375) (end 8 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 8 0.3375) (end 7.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.9 -1.0625) (end -6.9 -1.5625) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.9 -1.5625) (end 6.9 -1.5625) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 -1.5625) (end 6.9 -1.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.9 -0.4625) (end -6.9 0.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.9 0.1875) (end 6.9 0.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 0.1875) (end 6.9 -0.4625) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.5 -1.0625) (end -6.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.5 -1.0625) (end -5.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.5 -1.0625) (end -4.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.5 -1.0625) (end -3.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 -1.0625) (end -2.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.5 -1.0625) (end -1.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.5 -1.0625) (end -0.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 -1.0625) (end 0.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.5 -1.0625) (end 1.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 -1.0625) (end 2.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 -1.0625) (end 3.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.5 -1.0625) (end 4.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.5 -1.0625) (end 5.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.5 -1.0625) (end 6.5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.9 2.55) (end -8.9 -2.7) (layer F.CrtYd) (width 0.05)) - (fp_line (start -8.9 -2.7) (end 8.9 -2.7) (layer F.CrtYd) (width 0.05)) - (fp_line (start 8.9 -2.7) (end 8.9 2.55) (layer F.CrtYd) (width 0.05)) - (fp_line (start 8.9 2.55) (end -8.9 2.55) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -6.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -5.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -4.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -3.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at -2.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at -1.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at -0.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at 0.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 9 smd rect (at 1.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 10 smd rect (at 2.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 11 smd rect (at 3.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 12 smd rect (at 4.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 13 smd rect (at 5.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 14 smd rect (at 6.5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -7.8 -1.2625) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 7.8 -1.2625) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_BM15B-SRSS-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_BM15B-SRSS-TB.kicad_mod deleted file mode 100644 index 905bef8f..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_BM15B-SRSS-TB.kicad_mod +++ /dev/null @@ -1,75 +0,0 @@ -(module Connectors_JST_BM15B-SRSS-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST SH series connector, BM15B-SRSS-TB") - (tags "connector jst sh") - (attr smd) - (fp_text reference REF** (at -7 -3.2625) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_BM15B-SRSS-TB (at 0 3.2375) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -8 1.5875) (end -7.75 1.5875) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.4 -1.9625) (end 7.4 -1.9625) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.5 -0.0625) (end -8.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.5 0.9375) (end -7.6 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -8 0.9375) (end -8 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -8 -0.0625) (end -8 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -8 -0.0625) (end -8 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -8 0.9375) (end -8 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start -8 0.3375) (end -8 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -8 0.3375) (end -8.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.5 0.3375) (end -8.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.5 0.3375) (end -8 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.5 -0.0625) (end 8.5 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.5 0.9375) (end 7.6 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 8 0.9375) (end 8 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start 8 -0.0625) (end 8 -0.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start 8 -0.0625) (end 8 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 8 0.9375) (end 8 0.9375) (layer F.SilkS) (width 0.15)) - (fp_line (start 8 0.3375) (end 8 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 8 0.3375) (end 8.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.5 0.3375) (end 8.5 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.5 0.3375) (end 8 0.3375) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.4 -1.0625) (end -7.4 -1.5625) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.4 -1.5625) (end 7.4 -1.5625) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.4 -1.5625) (end 7.4 -1.0625) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.4 -0.4625) (end -7.4 0.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.4 0.1875) (end 7.4 0.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.4 0.1875) (end 7.4 -0.4625) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 -1.0625) (end -7 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 -1.0625) (end -6 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 -1.0625) (end -5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 -1.0625) (end -4 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 -1.0625) (end -3 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 -1.0625) (end -2 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -1 -1.0625) (end -1 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 0 -1.0625) (end 0 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 1 -1.0625) (end 1 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 -1.0625) (end 2 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 -1.0625) (end 3 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 -1.0625) (end 4 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 -1.0625) (end 5 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 -1.0625) (end 6 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 -1.0625) (end 7 -0.8625) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.4 2.55) (end -9.4 -2.7) (layer F.CrtYd) (width 0.05)) - (fp_line (start -9.4 -2.7) (end 9.4 -2.7) (layer F.CrtYd) (width 0.05)) - (fp_line (start 9.4 -2.7) (end 9.4 2.55) (layer F.CrtYd) (width 0.05)) - (fp_line (start 9.4 2.55) (end -9.4 2.55) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -7 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -6 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -4 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at -3 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at -2 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at -1 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at 0 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 9 smd rect (at 1 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 10 smd rect (at 2 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 11 smd rect (at 3 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 12 smd rect (at 4 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 13 smd rect (at 5 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 14 smd rect (at 6 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 15 smd rect (at 7 1.2625) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -8.3 -1.2625) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 8.3 -1.2625) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_S10B-PH-K.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_S10B-PH-K.kicad_mod deleted file mode 100644 index 3ce69c45..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_S10B-PH-K.kicad_mod +++ /dev/null @@ -1,57 +0,0 @@ -(module Connectors_JST_S10B-PH-K (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, S10B-PH-K") - (tags "connector jst ph") - (fp_text reference REF** (at 0 -2.5) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_S10B-PH-K (at 9 7.5) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start 0.5 6.25) (end 0.5 2) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 2) (end 17.5 2) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.5 2) (end 17.5 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.9 0.25) (end -1.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 0.25) (end -1.25 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 -1.35) (end -1.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -1.35) (end -1.95 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 6.25) (end 19.95 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 19.95 6.25) (end 19.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 19.95 -1.35) (end 19.25 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 19.25 -1.35) (end 19.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 19.25 0.25) (end 18.9 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 0.25) (end -1.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 19.95 0.25) (end 19.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.3 2.5) (end -1.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.3 4.1) (end -0.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 4.1) (end -0.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 2.5) (end -1.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 19.3 2.5) (end 19.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start 19.3 4.1) (end 18.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start 18.3 4.1) (end 18.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 18.3 2.5) (end 19.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 4.1) (end -0.3 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.8 4.1) (end -0.8 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.25) (end 1.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.25) (end 3.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 0.25) (end 5.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 0.25) (end 7.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 0.25) (end 9.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 0.25) (end 11.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 0.25) (end 13.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.9 0.25) (end 15.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 16.9 0.25) (end 17.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.45 6.75) (end -2.45 -1.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.45 -1.85) (end 20.45 -1.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start 20.45 -1.85) (end 20.45 6.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start 20.45 6.75) (end -2.45 6.75) (layer F.CrtYd) (width 0.05)) - (pad 1 thru_hole rect (at 0 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 4 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 6 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole oval (at 8 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 6 thru_hole oval (at 10 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 7 thru_hole oval (at 12 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 8 thru_hole oval (at 14 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 9 thru_hole oval (at 16 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 10 thru_hole oval (at 18 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_S10B-PH-SM4-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_S10B-PH-SM4-TB.kicad_mod deleted file mode 100644 index 66287cc5..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_S10B-PH-SM4-TB.kicad_mod +++ /dev/null @@ -1,59 +0,0 @@ -(module Connectors_JST_S10B-PH-SM4-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, S10B-PH-SM4-TB") - (tags "connector jst ph") - (attr smd) - (fp_text reference REF** (at -9 -5.775) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_S10B-PH-SM4-TB (at 0 5.725) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -10.4 -2.525) (end -10.15 -2.525) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.5 4.225) (end -8.5 3.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.5 3.225) (end 8.5 3.225) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.5 3.225) (end 8.5 4.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.9 -1.775) (end -11.15 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -11.15 -1.775) (end -11.15 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -11.15 -3.375) (end -11.95 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -11.95 -3.375) (end -11.95 0.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -11.15 -1.775) (end -11.95 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.9 -1.775) (end 11.15 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.15 -1.775) (end 11.15 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.15 -3.375) (end 11.95 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.95 -3.375) (end 11.95 0.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.15 -1.775) (end 11.95 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.2 4.225) (end 10.2 4.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.2 -0.675) (end -10.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.2 2.725) (end -9.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.2 2.725) (end -9.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.2 -0.675) (end -10.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.2 -0.675) (end 10.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.2 2.725) (end 9.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.2 2.725) (end 9.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.2 -0.675) (end 10.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.1 -1.775) (end -7.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.1 -1.775) (end -5.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.1 -1.775) (end -3.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 -1.775) (end -1.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 -1.775) (end 0.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 -1.775) (end 2.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.9 -1.775) (end 4.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.9 -1.775) (end 6.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.9 -1.775) (end 8.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.7 5) (end -12.7 -5.05) (layer F.CrtYd) (width 0.05)) - (fp_line (start -12.7 -5.05) (end 12.7 -5.05) (layer F.CrtYd) (width 0.05)) - (fp_line (start 12.7 -5.05) (end 12.7 5) (layer F.CrtYd) (width 0.05)) - (fp_line (start 12.7 5) (end -12.7 5) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -9 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -7 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -5 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -3 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at -1 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at 1 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at 3 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at 5 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 9 smd rect (at 7 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 10 smd rect (at 9 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -11.4 2.775) (size 1.6 3.4) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 11.4 2.775) (size 1.6 3.4) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_S11B-PH-K.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_S11B-PH-K.kicad_mod deleted file mode 100644 index 2844be1c..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_S11B-PH-K.kicad_mod +++ /dev/null @@ -1,59 +0,0 @@ -(module Connectors_JST_S11B-PH-K (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, S11B-PH-K") - (tags "connector jst ph") - (fp_text reference REF** (at 0 -2.5) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_S11B-PH-K (at 10 7.5) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start 0.5 6.25) (end 0.5 2) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 2) (end 19.5 2) (layer F.SilkS) (width 0.15)) - (fp_line (start 19.5 2) (end 19.5 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.9 0.25) (end -1.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 0.25) (end -1.25 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 -1.35) (end -1.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -1.35) (end -1.95 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 6.25) (end 21.95 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 21.95 6.25) (end 21.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 21.95 -1.35) (end 21.25 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 21.25 -1.35) (end 21.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 21.25 0.25) (end 20.9 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 0.25) (end -1.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 21.95 0.25) (end 21.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.3 2.5) (end -1.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.3 4.1) (end -0.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 4.1) (end -0.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 2.5) (end -1.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 21.3 2.5) (end 21.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start 21.3 4.1) (end 20.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start 20.3 4.1) (end 20.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 20.3 2.5) (end 21.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 4.1) (end -0.3 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.8 4.1) (end -0.8 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.25) (end 1.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.25) (end 3.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 0.25) (end 5.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 0.25) (end 7.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 0.25) (end 9.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 0.25) (end 11.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 0.25) (end 13.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.9 0.25) (end 15.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 16.9 0.25) (end 17.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 18.9 0.25) (end 19.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.45 6.75) (end -2.45 -1.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.45 -1.85) (end 22.45 -1.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start 22.45 -1.85) (end 22.45 6.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start 22.45 6.75) (end -2.45 6.75) (layer F.CrtYd) (width 0.05)) - (pad 1 thru_hole rect (at 0 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 4 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 6 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole oval (at 8 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 6 thru_hole oval (at 10 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 7 thru_hole oval (at 12 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 8 thru_hole oval (at 14 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 9 thru_hole oval (at 16 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 10 thru_hole oval (at 18 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 11 thru_hole oval (at 20 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_S11B-PH-SM4-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_S11B-PH-SM4-TB.kicad_mod deleted file mode 100644 index ad39d536..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_S11B-PH-SM4-TB.kicad_mod +++ /dev/null @@ -1,61 +0,0 @@ -(module Connectors_JST_S11B-PH-SM4-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, S11B-PH-SM4-TB") - (tags "connector jst ph") - (attr smd) - (fp_text reference REF** (at -10 -5.775) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_S11B-PH-SM4-TB (at 0 5.725) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -11.4 -2.525) (end -11.15 -2.525) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.5 4.225) (end -9.5 3.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.5 3.225) (end 9.5 3.225) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.5 3.225) (end 9.5 4.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.9 -1.775) (end -12.15 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.15 -1.775) (end -12.15 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.15 -3.375) (end -12.95 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.95 -3.375) (end -12.95 0.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.15 -1.775) (end -12.95 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 -1.775) (end 12.15 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.15 -1.775) (end 12.15 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.15 -3.375) (end 12.95 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.95 -3.375) (end 12.95 0.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.15 -1.775) (end 12.95 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -11.2 4.225) (end 11.2 4.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -11.2 -0.675) (end -11.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -11.2 2.725) (end -10.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.2 2.725) (end -10.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.2 -0.675) (end -11.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.2 -0.675) (end 11.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.2 2.725) (end 10.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.2 2.725) (end 10.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.2 -0.675) (end 11.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.1 -1.775) (end -8.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.1 -1.775) (end -6.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.1 -1.775) (end -4.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.1 -1.775) (end -2.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 -1.775) (end -0.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 -1.775) (end 1.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 -1.775) (end 3.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 -1.775) (end 5.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 -1.775) (end 7.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 -1.775) (end 9.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -13.7 5) (end -13.7 -5.05) (layer F.CrtYd) (width 0.05)) - (fp_line (start -13.7 -5.05) (end 13.7 -5.05) (layer F.CrtYd) (width 0.05)) - (fp_line (start 13.7 -5.05) (end 13.7 5) (layer F.CrtYd) (width 0.05)) - (fp_line (start 13.7 5) (end -13.7 5) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -10 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -8 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -6 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -4 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at -2 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at 0 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at 2 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at 4 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 9 smd rect (at 6 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 10 smd rect (at 8 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 11 smd rect (at 10 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -12.4 2.775) (size 1.6 3.4) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 12.4 2.775) (size 1.6 3.4) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_S12B-PH-K.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_S12B-PH-K.kicad_mod deleted file mode 100644 index bcb7af11..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_S12B-PH-K.kicad_mod +++ /dev/null @@ -1,61 +0,0 @@ -(module Connectors_JST_S12B-PH-K (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, S12B-PH-K") - (tags "connector jst ph") - (fp_text reference REF** (at 0 -2.5) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_S12B-PH-K (at 11 7.5) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start 0.5 6.25) (end 0.5 2) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 2) (end 21.5 2) (layer F.SilkS) (width 0.15)) - (fp_line (start 21.5 2) (end 21.5 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.9 0.25) (end -1.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 0.25) (end -1.25 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 -1.35) (end -1.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -1.35) (end -1.95 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 6.25) (end 23.95 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 23.95 6.25) (end 23.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 23.95 -1.35) (end 23.25 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 23.25 -1.35) (end 23.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 23.25 0.25) (end 22.9 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 0.25) (end -1.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 23.95 0.25) (end 23.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.3 2.5) (end -1.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.3 4.1) (end -0.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 4.1) (end -0.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 2.5) (end -1.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 23.3 2.5) (end 23.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start 23.3 4.1) (end 22.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start 22.3 4.1) (end 22.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 22.3 2.5) (end 23.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 4.1) (end -0.3 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.8 4.1) (end -0.8 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.25) (end 1.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.25) (end 3.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 0.25) (end 5.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 0.25) (end 7.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 0.25) (end 9.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 0.25) (end 11.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 0.25) (end 13.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.9 0.25) (end 15.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 16.9 0.25) (end 17.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 18.9 0.25) (end 19.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 20.9 0.25) (end 21.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.45 6.75) (end -2.45 -1.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.45 -1.85) (end 24.45 -1.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start 24.45 -1.85) (end 24.45 6.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start 24.45 6.75) (end -2.45 6.75) (layer F.CrtYd) (width 0.05)) - (pad 1 thru_hole rect (at 0 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 4 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 6 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole oval (at 8 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 6 thru_hole oval (at 10 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 7 thru_hole oval (at 12 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 8 thru_hole oval (at 14 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 9 thru_hole oval (at 16 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 10 thru_hole oval (at 18 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 11 thru_hole oval (at 20 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 12 thru_hole oval (at 22 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_S12B-PH-SM4-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_S12B-PH-SM4-TB.kicad_mod deleted file mode 100644 index 767488c2..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_S12B-PH-SM4-TB.kicad_mod +++ /dev/null @@ -1,63 +0,0 @@ -(module Connectors_JST_S12B-PH-SM4-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, S12B-PH-SM4-TB") - (tags "connector jst ph") - (attr smd) - (fp_text reference REF** (at -11 -5.775) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_S12B-PH-SM4-TB (at 0 5.725) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -12.4 -2.525) (end -12.15 -2.525) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.5 4.225) (end -10.5 3.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.5 3.225) (end 10.5 3.225) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.5 3.225) (end 10.5 4.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -11.9 -1.775) (end -13.15 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -13.15 -1.775) (end -13.15 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -13.15 -3.375) (end -13.95 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -13.95 -3.375) (end -13.95 0.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -13.15 -1.775) (end -13.95 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.9 -1.775) (end 13.15 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.15 -1.775) (end 13.15 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.15 -3.375) (end 13.95 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.95 -3.375) (end 13.95 0.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.15 -1.775) (end 13.95 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.2 4.225) (end 12.2 4.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.2 -0.675) (end -12.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.2 2.725) (end -11.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -11.2 2.725) (end -11.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start -11.2 -0.675) (end -12.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.2 -0.675) (end 12.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.2 2.725) (end 11.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.2 2.725) (end 11.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.2 -0.675) (end 12.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.1 -1.775) (end -9.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.1 -1.775) (end -7.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.1 -1.775) (end -5.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.1 -1.775) (end -3.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 -1.775) (end -1.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 -1.775) (end 0.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 -1.775) (end 2.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.9 -1.775) (end 4.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.9 -1.775) (end 6.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.9 -1.775) (end 8.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.9 -1.775) (end 10.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -14.7 5) (end -14.7 -5.05) (layer F.CrtYd) (width 0.05)) - (fp_line (start -14.7 -5.05) (end 14.7 -5.05) (layer F.CrtYd) (width 0.05)) - (fp_line (start 14.7 -5.05) (end 14.7 5) (layer F.CrtYd) (width 0.05)) - (fp_line (start 14.7 5) (end -14.7 5) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -11 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -9 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -7 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -5 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at -3 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at -1 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at 1 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at 3 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 9 smd rect (at 5 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 10 smd rect (at 7 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 11 smd rect (at 9 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 12 smd rect (at 11 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -13.4 2.775) (size 1.6 3.4) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 13.4 2.775) (size 1.6 3.4) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_S13B-PH-K.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_S13B-PH-K.kicad_mod deleted file mode 100644 index 7c612e0f..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_S13B-PH-K.kicad_mod +++ /dev/null @@ -1,63 +0,0 @@ -(module Connectors_JST_S13B-PH-K (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, S13B-PH-K") - (tags "connector jst ph") - (fp_text reference REF** (at 0 -2.5) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_S13B-PH-K (at 12 7.5) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start 0.5 6.25) (end 0.5 2) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 2) (end 23.5 2) (layer F.SilkS) (width 0.15)) - (fp_line (start 23.5 2) (end 23.5 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.9 0.25) (end -1.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 0.25) (end -1.25 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 -1.35) (end -1.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -1.35) (end -1.95 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 6.25) (end 25.95 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 25.95 6.25) (end 25.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 25.95 -1.35) (end 25.25 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 25.25 -1.35) (end 25.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 25.25 0.25) (end 24.9 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 0.25) (end -1.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 25.95 0.25) (end 25.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.3 2.5) (end -1.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.3 4.1) (end -0.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 4.1) (end -0.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 2.5) (end -1.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 25.3 2.5) (end 25.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start 25.3 4.1) (end 24.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start 24.3 4.1) (end 24.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 24.3 2.5) (end 25.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 4.1) (end -0.3 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.8 4.1) (end -0.8 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.25) (end 1.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.25) (end 3.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 0.25) (end 5.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 0.25) (end 7.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 0.25) (end 9.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 0.25) (end 11.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 0.25) (end 13.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.9 0.25) (end 15.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 16.9 0.25) (end 17.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 18.9 0.25) (end 19.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 20.9 0.25) (end 21.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 22.9 0.25) (end 23.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.45 6.75) (end -2.45 -1.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.45 -1.85) (end 26.45 -1.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start 26.45 -1.85) (end 26.45 6.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start 26.45 6.75) (end -2.45 6.75) (layer F.CrtYd) (width 0.05)) - (pad 1 thru_hole rect (at 0 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 4 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 6 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole oval (at 8 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 6 thru_hole oval (at 10 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 7 thru_hole oval (at 12 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 8 thru_hole oval (at 14 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 9 thru_hole oval (at 16 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 10 thru_hole oval (at 18 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 11 thru_hole oval (at 20 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 12 thru_hole oval (at 22 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 13 thru_hole oval (at 24 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_S13B-PH-SM4-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_S13B-PH-SM4-TB.kicad_mod deleted file mode 100644 index 788a8da1..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_S13B-PH-SM4-TB.kicad_mod +++ /dev/null @@ -1,65 +0,0 @@ -(module Connectors_JST_S13B-PH-SM4-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, S13B-PH-SM4-TB") - (tags "connector jst ph") - (attr smd) - (fp_text reference REF** (at -12 -5.775) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_S13B-PH-SM4-TB (at 0 5.725) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -13.4 -2.525) (end -13.15 -2.525) (layer F.SilkS) (width 0.15)) - (fp_line (start -11.5 4.225) (end -11.5 3.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -11.5 3.225) (end 11.5 3.225) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.5 3.225) (end 11.5 4.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.9 -1.775) (end -14.15 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -14.15 -1.775) (end -14.15 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -14.15 -3.375) (end -14.95 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -14.95 -3.375) (end -14.95 0.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -14.15 -1.775) (end -14.95 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 -1.775) (end 14.15 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.15 -1.775) (end 14.15 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.15 -3.375) (end 14.95 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.95 -3.375) (end 14.95 0.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.15 -1.775) (end 14.95 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -13.2 4.225) (end 13.2 4.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -13.2 -0.675) (end -13.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -13.2 2.725) (end -12.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.2 2.725) (end -12.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.2 -0.675) (end -13.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.2 -0.675) (end 13.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.2 2.725) (end 12.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.2 2.725) (end 12.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.2 -0.675) (end 13.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start -11.1 -1.775) (end -10.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.1 -1.775) (end -8.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.1 -1.775) (end -6.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.1 -1.775) (end -4.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.1 -1.775) (end -2.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 -1.775) (end -0.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 -1.775) (end 1.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 -1.775) (end 3.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 -1.775) (end 5.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 -1.775) (end 7.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 -1.775) (end 9.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 -1.775) (end 11.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -15.7 5) (end -15.7 -5.05) (layer F.CrtYd) (width 0.05)) - (fp_line (start -15.7 -5.05) (end 15.7 -5.05) (layer F.CrtYd) (width 0.05)) - (fp_line (start 15.7 -5.05) (end 15.7 5) (layer F.CrtYd) (width 0.05)) - (fp_line (start 15.7 5) (end -15.7 5) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -12 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -10 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -8 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -6 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at -4 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at -2 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at 0 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at 2 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 9 smd rect (at 4 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 10 smd rect (at 6 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 11 smd rect (at 8 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 12 smd rect (at 10 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 13 smd rect (at 12 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -14.4 2.775) (size 1.6 3.4) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 14.4 2.775) (size 1.6 3.4) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_S14B-PH-K.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_S14B-PH-K.kicad_mod deleted file mode 100644 index e876a3ec..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_S14B-PH-K.kicad_mod +++ /dev/null @@ -1,65 +0,0 @@ -(module Connectors_JST_S14B-PH-K (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, S14B-PH-K") - (tags "connector jst ph") - (fp_text reference REF** (at 0 -2.5) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_S14B-PH-K (at 13 7.5) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start 0.5 6.25) (end 0.5 2) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 2) (end 25.5 2) (layer F.SilkS) (width 0.15)) - (fp_line (start 25.5 2) (end 25.5 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.9 0.25) (end -1.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 0.25) (end -1.25 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 -1.35) (end -1.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -1.35) (end -1.95 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 6.25) (end 27.95 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 27.95 6.25) (end 27.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 27.95 -1.35) (end 27.25 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 27.25 -1.35) (end 27.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 27.25 0.25) (end 26.9 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 0.25) (end -1.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 27.95 0.25) (end 27.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.3 2.5) (end -1.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.3 4.1) (end -0.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 4.1) (end -0.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 2.5) (end -1.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 27.3 2.5) (end 27.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start 27.3 4.1) (end 26.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start 26.3 4.1) (end 26.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 26.3 2.5) (end 27.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 4.1) (end -0.3 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.8 4.1) (end -0.8 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.25) (end 1.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.25) (end 3.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 0.25) (end 5.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 0.25) (end 7.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 0.25) (end 9.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 0.25) (end 11.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 0.25) (end 13.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.9 0.25) (end 15.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 16.9 0.25) (end 17.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 18.9 0.25) (end 19.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 20.9 0.25) (end 21.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 22.9 0.25) (end 23.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 24.9 0.25) (end 25.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.45 6.75) (end -2.45 -1.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.45 -1.85) (end 28.45 -1.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start 28.45 -1.85) (end 28.45 6.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start 28.45 6.75) (end -2.45 6.75) (layer F.CrtYd) (width 0.05)) - (pad 1 thru_hole rect (at 0 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 4 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 6 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole oval (at 8 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 6 thru_hole oval (at 10 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 7 thru_hole oval (at 12 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 8 thru_hole oval (at 14 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 9 thru_hole oval (at 16 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 10 thru_hole oval (at 18 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 11 thru_hole oval (at 20 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 12 thru_hole oval (at 22 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 13 thru_hole oval (at 24 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 14 thru_hole oval (at 26 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_S14B-PH-SM4-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_S14B-PH-SM4-TB.kicad_mod deleted file mode 100644 index 674ed50f..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_S14B-PH-SM4-TB.kicad_mod +++ /dev/null @@ -1,67 +0,0 @@ -(module Connectors_JST_S14B-PH-SM4-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, S14B-PH-SM4-TB") - (tags "connector jst ph") - (attr smd) - (fp_text reference REF** (at -13 -5.775) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_S14B-PH-SM4-TB (at 0 5.725) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -14.4 -2.525) (end -14.15 -2.525) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.5 4.225) (end -12.5 3.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.5 3.225) (end 12.5 3.225) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.5 3.225) (end 12.5 4.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -13.9 -1.775) (end -15.15 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -15.15 -1.775) (end -15.15 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -15.15 -3.375) (end -15.95 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -15.95 -3.375) (end -15.95 0.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -15.15 -1.775) (end -15.95 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.9 -1.775) (end 15.15 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.15 -1.775) (end 15.15 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.15 -3.375) (end 15.95 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.95 -3.375) (end 15.95 0.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.15 -1.775) (end 15.95 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -14.2 4.225) (end 14.2 4.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -14.2 -0.675) (end -14.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -14.2 2.725) (end -13.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -13.2 2.725) (end -13.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start -13.2 -0.675) (end -14.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.2 -0.675) (end 14.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.2 2.725) (end 13.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.2 2.725) (end 13.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.2 -0.675) (end 14.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start -12.1 -1.775) (end -11.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.1 -1.775) (end -9.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.1 -1.775) (end -7.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.1 -1.775) (end -5.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.1 -1.775) (end -3.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 -1.775) (end -1.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 -1.775) (end 0.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 -1.775) (end 2.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.9 -1.775) (end 4.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.9 -1.775) (end 6.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.9 -1.775) (end 8.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.9 -1.775) (end 10.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.9 -1.775) (end 12.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -16.7 5) (end -16.7 -5.05) (layer F.CrtYd) (width 0.05)) - (fp_line (start -16.7 -5.05) (end 16.7 -5.05) (layer F.CrtYd) (width 0.05)) - (fp_line (start 16.7 -5.05) (end 16.7 5) (layer F.CrtYd) (width 0.05)) - (fp_line (start 16.7 5) (end -16.7 5) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -13 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -11 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -9 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -7 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at -5 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at -3 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at -1 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at 1 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 9 smd rect (at 3 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 10 smd rect (at 5 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 11 smd rect (at 7 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 12 smd rect (at 9 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 13 smd rect (at 11 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 14 smd rect (at 13 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -15.4 2.775) (size 1.6 3.4) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 15.4 2.775) (size 1.6 3.4) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_S15B-PH-K.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_S15B-PH-K.kicad_mod deleted file mode 100644 index 5d1dcf59..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_S15B-PH-K.kicad_mod +++ /dev/null @@ -1,67 +0,0 @@ -(module Connectors_JST_S15B-PH-K (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, S15B-PH-K") - (tags "connector jst ph") - (fp_text reference REF** (at 0 -2.5) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_S15B-PH-K (at 14 7.5) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start 0.5 6.25) (end 0.5 2) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 2) (end 27.5 2) (layer F.SilkS) (width 0.15)) - (fp_line (start 27.5 2) (end 27.5 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.9 0.25) (end -1.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 0.25) (end -1.25 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 -1.35) (end -1.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -1.35) (end -1.95 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 6.25) (end 29.95 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 29.95 6.25) (end 29.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 29.95 -1.35) (end 29.25 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 29.25 -1.35) (end 29.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 29.25 0.25) (end 28.9 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 0.25) (end -1.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 29.95 0.25) (end 29.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.3 2.5) (end -1.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.3 4.1) (end -0.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 4.1) (end -0.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 2.5) (end -1.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 29.3 2.5) (end 29.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start 29.3 4.1) (end 28.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start 28.3 4.1) (end 28.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 28.3 2.5) (end 29.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 4.1) (end -0.3 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.8 4.1) (end -0.8 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.25) (end 1.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.25) (end 3.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 0.25) (end 5.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 0.25) (end 7.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 0.25) (end 9.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 0.25) (end 11.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 0.25) (end 13.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.9 0.25) (end 15.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 16.9 0.25) (end 17.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 18.9 0.25) (end 19.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 20.9 0.25) (end 21.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 22.9 0.25) (end 23.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 24.9 0.25) (end 25.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 26.9 0.25) (end 27.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.45 6.75) (end -2.45 -1.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.45 -1.85) (end 30.45 -1.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start 30.45 -1.85) (end 30.45 6.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start 30.45 6.75) (end -2.45 6.75) (layer F.CrtYd) (width 0.05)) - (pad 1 thru_hole rect (at 0 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 4 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 6 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole oval (at 8 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 6 thru_hole oval (at 10 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 7 thru_hole oval (at 12 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 8 thru_hole oval (at 14 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 9 thru_hole oval (at 16 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 10 thru_hole oval (at 18 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 11 thru_hole oval (at 20 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 12 thru_hole oval (at 22 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 13 thru_hole oval (at 24 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 14 thru_hole oval (at 26 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 15 thru_hole oval (at 28 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_S15B-PH-SM4-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_S15B-PH-SM4-TB.kicad_mod deleted file mode 100644 index ffcf4093..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_S15B-PH-SM4-TB.kicad_mod +++ /dev/null @@ -1,69 +0,0 @@ -(module Connectors_JST_S15B-PH-SM4-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, S15B-PH-SM4-TB") - (tags "connector jst ph") - (attr smd) - (fp_text reference REF** (at -14 -5.775) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_S15B-PH-SM4-TB (at 0 5.725) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -15.4 -2.525) (end -15.15 -2.525) (layer F.SilkS) (width 0.15)) - (fp_line (start -13.5 4.225) (end -13.5 3.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -13.5 3.225) (end 13.5 3.225) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.5 3.225) (end 13.5 4.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -14.9 -1.775) (end -16.15 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -16.15 -1.775) (end -16.15 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -16.15 -3.375) (end -16.95 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -16.95 -3.375) (end -16.95 0.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -16.15 -1.775) (end -16.95 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.9 -1.775) (end 16.15 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 16.15 -1.775) (end 16.15 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 16.15 -3.375) (end 16.95 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 16.95 -3.375) (end 16.95 0.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 16.15 -1.775) (end 16.95 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -15.2 4.225) (end 15.2 4.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -15.2 -0.675) (end -15.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -15.2 2.725) (end -14.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -14.2 2.725) (end -14.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start -14.2 -0.675) (end -15.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.2 -0.675) (end 15.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.2 2.725) (end 14.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.2 2.725) (end 14.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.2 -0.675) (end 15.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start -13.1 -1.775) (end -12.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -11.1 -1.775) (end -10.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.1 -1.775) (end -8.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.1 -1.775) (end -6.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.1 -1.775) (end -4.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.1 -1.775) (end -2.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 -1.775) (end -0.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 -1.775) (end 1.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 -1.775) (end 3.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 -1.775) (end 5.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 -1.775) (end 7.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 -1.775) (end 9.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 -1.775) (end 11.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 -1.775) (end 13.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -17.7 5) (end -17.7 -5.05) (layer F.CrtYd) (width 0.05)) - (fp_line (start -17.7 -5.05) (end 17.7 -5.05) (layer F.CrtYd) (width 0.05)) - (fp_line (start 17.7 -5.05) (end 17.7 5) (layer F.CrtYd) (width 0.05)) - (fp_line (start 17.7 5) (end -17.7 5) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -14 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -12 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -10 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -8 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at -6 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at -4 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at -2 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at 0 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 9 smd rect (at 2 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 10 smd rect (at 4 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 11 smd rect (at 6 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 12 smd rect (at 8 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 13 smd rect (at 10 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 14 smd rect (at 12 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 15 smd rect (at 14 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -16.4 2.775) (size 1.6 3.4) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 16.4 2.775) (size 1.6 3.4) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_S16B-PH-K.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_S16B-PH-K.kicad_mod deleted file mode 100644 index d7c8d660..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_S16B-PH-K.kicad_mod +++ /dev/null @@ -1,69 +0,0 @@ -(module Connectors_JST_S16B-PH-K (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, S16B-PH-K") - (tags "connector jst ph") - (fp_text reference REF** (at 0 -2.5) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_S16B-PH-K (at 15 7.5) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start 0.5 6.25) (end 0.5 2) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 2) (end 29.5 2) (layer F.SilkS) (width 0.15)) - (fp_line (start 29.5 2) (end 29.5 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.9 0.25) (end -1.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 0.25) (end -1.25 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 -1.35) (end -1.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -1.35) (end -1.95 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 6.25) (end 31.95 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 31.95 6.25) (end 31.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 31.95 -1.35) (end 31.25 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 31.25 -1.35) (end 31.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 31.25 0.25) (end 30.9 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 0.25) (end -1.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 31.95 0.25) (end 31.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.3 2.5) (end -1.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.3 4.1) (end -0.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 4.1) (end -0.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 2.5) (end -1.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 31.3 2.5) (end 31.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start 31.3 4.1) (end 30.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start 30.3 4.1) (end 30.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 30.3 2.5) (end 31.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 4.1) (end -0.3 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.8 4.1) (end -0.8 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.25) (end 1.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.25) (end 3.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 0.25) (end 5.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 0.25) (end 7.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 0.25) (end 9.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 0.25) (end 11.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 0.25) (end 13.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.9 0.25) (end 15.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 16.9 0.25) (end 17.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 18.9 0.25) (end 19.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 20.9 0.25) (end 21.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 22.9 0.25) (end 23.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 24.9 0.25) (end 25.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 26.9 0.25) (end 27.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 28.9 0.25) (end 29.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.45 6.75) (end -2.45 -1.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.45 -1.85) (end 32.45 -1.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start 32.45 -1.85) (end 32.45 6.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start 32.45 6.75) (end -2.45 6.75) (layer F.CrtYd) (width 0.05)) - (pad 1 thru_hole rect (at 0 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 4 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 6 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole oval (at 8 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 6 thru_hole oval (at 10 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 7 thru_hole oval (at 12 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 8 thru_hole oval (at 14 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 9 thru_hole oval (at 16 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 10 thru_hole oval (at 18 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 11 thru_hole oval (at 20 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 12 thru_hole oval (at 22 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 13 thru_hole oval (at 24 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 14 thru_hole oval (at 26 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 15 thru_hole oval (at 28 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 16 thru_hole oval (at 30 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_S2B-PH-K.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_S2B-PH-K.kicad_mod deleted file mode 100644 index cce390a6..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_S2B-PH-K.kicad_mod +++ /dev/null @@ -1,41 +0,0 @@ -(module Connectors_JST_S2B-PH-K (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, S2B-PH-K") - (tags "connector jst ph") - (fp_text reference REF** (at 0 -2.5) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_S2B-PH-K (at 1 7.5) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start 0.5 6.25) (end 0.5 2) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 2) (end 1.5 2) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.5 2) (end 1.5 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.9 0.25) (end -1.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 0.25) (end -1.25 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 -1.35) (end -1.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -1.35) (end -1.95 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 6.25) (end 3.95 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.95 6.25) (end 3.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.95 -1.35) (end 3.25 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.25 -1.35) (end 3.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.25 0.25) (end 2.9 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 0.25) (end -1.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.95 0.25) (end 3.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.3 2.5) (end -1.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.3 4.1) (end -0.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 4.1) (end -0.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 2.5) (end -1.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.3 2.5) (end 3.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.3 4.1) (end 2.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.3 4.1) (end 2.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.3 2.5) (end 3.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 4.1) (end -0.3 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.8 4.1) (end -0.8 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.25) (end 1.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.45 6.75) (end -2.45 -1.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.45 -1.85) (end 4.45 -1.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start 4.45 -1.85) (end 4.45 6.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start 4.45 6.75) (end -2.45 6.75) (layer F.CrtYd) (width 0.05)) - (pad 1 thru_hole rect (at 0 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_S2B-PH-SM4-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_S2B-PH-SM4-TB.kicad_mod deleted file mode 100644 index 05fed452..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_S2B-PH-SM4-TB.kicad_mod +++ /dev/null @@ -1,43 +0,0 @@ -(module Connectors_JST_S2B-PH-SM4-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, S2B-PH-SM4-TB") - (tags "connector jst ph") - (attr smd) - (fp_text reference REF** (at -1 -5.775) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_S2B-PH-SM4-TB (at 0 5.725) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -2.4 -2.525) (end -2.15 -2.525) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.5 4.225) (end -0.5 3.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.5 3.225) (end 0.5 3.225) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 3.225) (end 0.5 4.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.9 -1.775) (end -3.15 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.15 -1.775) (end -3.15 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.15 -3.375) (end -3.95 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.95 -3.375) (end -3.95 0.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.15 -1.775) (end -3.95 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 -1.775) (end 3.15 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.15 -1.775) (end 3.15 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.15 -3.375) (end 3.95 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.95 -3.375) (end 3.95 0.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.15 -1.775) (end 3.95 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.2 4.225) (end 2.2 4.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.2 -0.675) (end -2.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.2 2.725) (end -1.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.2 2.725) (end -1.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.2 -0.675) (end -2.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.2 -0.675) (end 2.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.2 2.725) (end 1.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.2 2.725) (end 1.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.2 -0.675) (end 2.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 -1.775) (end 0.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.7 5) (end -4.7 -5.05) (layer F.CrtYd) (width 0.05)) - (fp_line (start -4.7 -5.05) (end 4.7 -5.05) (layer F.CrtYd) (width 0.05)) - (fp_line (start 4.7 -5.05) (end 4.7 5) (layer F.CrtYd) (width 0.05)) - (fp_line (start 4.7 5) (end -4.7 5) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -1 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at 1 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -3.4 2.775) (size 1.6 3.4) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 3.4 2.775) (size 1.6 3.4) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_S3B-PH-K.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_S3B-PH-K.kicad_mod deleted file mode 100644 index 9bf692df..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_S3B-PH-K.kicad_mod +++ /dev/null @@ -1,43 +0,0 @@ -(module Connectors_JST_S3B-PH-K (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, S3B-PH-K") - (tags "connector jst ph") - (fp_text reference REF** (at 0 -2.5) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_S3B-PH-K (at 2 7.5) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start 0.5 6.25) (end 0.5 2) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 2) (end 3.5 2) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 2) (end 3.5 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.9 0.25) (end -1.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 0.25) (end -1.25 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 -1.35) (end -1.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -1.35) (end -1.95 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 6.25) (end 5.95 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.95 6.25) (end 5.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.95 -1.35) (end 5.25 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.25 -1.35) (end 5.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.25 0.25) (end 4.9 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 0.25) (end -1.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.95 0.25) (end 5.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.3 2.5) (end -1.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.3 4.1) (end -0.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 4.1) (end -0.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 2.5) (end -1.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.3 2.5) (end 5.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.3 4.1) (end 4.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.3 4.1) (end 4.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.3 2.5) (end 5.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 4.1) (end -0.3 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.8 4.1) (end -0.8 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.25) (end 1.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.25) (end 3.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.45 6.75) (end -2.45 -1.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.45 -1.85) (end 6.45 -1.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start 6.45 -1.85) (end 6.45 6.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start 6.45 6.75) (end -2.45 6.75) (layer F.CrtYd) (width 0.05)) - (pad 1 thru_hole rect (at 0 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 4 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_S3B-PH-SM4-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_S3B-PH-SM4-TB.kicad_mod deleted file mode 100644 index 5d7d49ff..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_S3B-PH-SM4-TB.kicad_mod +++ /dev/null @@ -1,45 +0,0 @@ -(module Connectors_JST_S3B-PH-SM4-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, S3B-PH-SM4-TB") - (tags "connector jst ph") - (attr smd) - (fp_text reference REF** (at -2 -5.775) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_S3B-PH-SM4-TB (at 0 5.725) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -3.4 -2.525) (end -3.15 -2.525) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.5 4.225) (end -1.5 3.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.5 3.225) (end 1.5 3.225) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.5 3.225) (end 1.5 4.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.9 -1.775) (end -4.15 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.15 -1.775) (end -4.15 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.15 -3.375) (end -4.95 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.95 -3.375) (end -4.95 0.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.15 -1.775) (end -4.95 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 -1.775) (end 4.15 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.15 -1.775) (end 4.15 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.15 -3.375) (end 4.95 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.95 -3.375) (end 4.95 0.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.15 -1.775) (end 4.95 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.2 4.225) (end 3.2 4.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.2 -0.675) (end -3.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.2 2.725) (end -2.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.2 2.725) (end -2.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.2 -0.675) (end -3.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.2 -0.675) (end 3.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.2 2.725) (end 2.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.2 2.725) (end 2.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.2 -0.675) (end 3.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 -1.775) (end -0.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 -1.775) (end 1.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.7 5) (end -5.7 -5.05) (layer F.CrtYd) (width 0.05)) - (fp_line (start -5.7 -5.05) (end 5.7 -5.05) (layer F.CrtYd) (width 0.05)) - (fp_line (start 5.7 -5.05) (end 5.7 5) (layer F.CrtYd) (width 0.05)) - (fp_line (start 5.7 5) (end -5.7 5) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -2 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at 0 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at 2 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -4.4 2.775) (size 1.6 3.4) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 4.4 2.775) (size 1.6 3.4) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_S4B-PH-K.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_S4B-PH-K.kicad_mod deleted file mode 100644 index b6227bf9..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_S4B-PH-K.kicad_mod +++ /dev/null @@ -1,45 +0,0 @@ -(module Connectors_JST_S4B-PH-K (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, S4B-PH-K") - (tags "connector jst ph") - (fp_text reference REF** (at 0 -2.5) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_S4B-PH-K (at 3 7.5) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start 0.5 6.25) (end 0.5 2) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 2) (end 5.5 2) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.5 2) (end 5.5 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.9 0.25) (end -1.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 0.25) (end -1.25 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 -1.35) (end -1.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -1.35) (end -1.95 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 6.25) (end 7.95 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.95 6.25) (end 7.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.95 -1.35) (end 7.25 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.25 -1.35) (end 7.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.25 0.25) (end 6.9 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 0.25) (end -1.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.95 0.25) (end 7.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.3 2.5) (end -1.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.3 4.1) (end -0.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 4.1) (end -0.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 2.5) (end -1.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.3 2.5) (end 7.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.3 4.1) (end 6.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.3 4.1) (end 6.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.3 2.5) (end 7.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 4.1) (end -0.3 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.8 4.1) (end -0.8 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.25) (end 1.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.25) (end 3.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 0.25) (end 5.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.45 6.75) (end -2.45 -1.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.45 -1.85) (end 8.45 -1.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start 8.45 -1.85) (end 8.45 6.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start 8.45 6.75) (end -2.45 6.75) (layer F.CrtYd) (width 0.05)) - (pad 1 thru_hole rect (at 0 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 4 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 6 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_S4B-PH-SM4-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_S4B-PH-SM4-TB.kicad_mod deleted file mode 100644 index bb377988..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_S4B-PH-SM4-TB.kicad_mod +++ /dev/null @@ -1,47 +0,0 @@ -(module Connectors_JST_S4B-PH-SM4-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, S4B-PH-SM4-TB") - (tags "connector jst ph") - (attr smd) - (fp_text reference REF** (at -3 -5.775) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_S4B-PH-SM4-TB (at 0 5.725) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -4.4 -2.525) (end -4.15 -2.525) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 4.225) (end -2.5 3.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 3.225) (end 2.5 3.225) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 3.225) (end 2.5 4.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.9 -1.775) (end -5.15 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.15 -1.775) (end -5.15 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.15 -3.375) (end -5.95 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.95 -3.375) (end -5.95 0.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.15 -1.775) (end -5.95 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.9 -1.775) (end 5.15 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.15 -1.775) (end 5.15 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.15 -3.375) (end 5.95 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.95 -3.375) (end 5.95 0.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.15 -1.775) (end 5.95 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.2 4.225) (end 4.2 4.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.2 -0.675) (end -4.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.2 2.725) (end -3.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.2 2.725) (end -3.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.2 -0.675) (end -4.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.2 -0.675) (end 4.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.2 2.725) (end 3.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.2 2.725) (end 3.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.2 -0.675) (end 4.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 -1.775) (end -1.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 -1.775) (end 0.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 -1.775) (end 2.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.7 5) (end -6.7 -5.05) (layer F.CrtYd) (width 0.05)) - (fp_line (start -6.7 -5.05) (end 6.7 -5.05) (layer F.CrtYd) (width 0.05)) - (fp_line (start 6.7 -5.05) (end 6.7 5) (layer F.CrtYd) (width 0.05)) - (fp_line (start 6.7 5) (end -6.7 5) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -3 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -1 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at 1 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at 3 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -5.4 2.775) (size 1.6 3.4) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 5.4 2.775) (size 1.6 3.4) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_S5B-PH-K.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_S5B-PH-K.kicad_mod deleted file mode 100644 index ed549640..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_S5B-PH-K.kicad_mod +++ /dev/null @@ -1,47 +0,0 @@ -(module Connectors_JST_S5B-PH-K (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, S5B-PH-K") - (tags "connector jst ph") - (fp_text reference REF** (at 0 -2.5) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_S5B-PH-K (at 4 7.5) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start 0.5 6.25) (end 0.5 2) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 2) (end 7.5 2) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.5 2) (end 7.5 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.9 0.25) (end -1.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 0.25) (end -1.25 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 -1.35) (end -1.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -1.35) (end -1.95 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 6.25) (end 9.95 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.95 6.25) (end 9.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.95 -1.35) (end 9.25 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.25 -1.35) (end 9.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.25 0.25) (end 8.9 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 0.25) (end -1.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.95 0.25) (end 9.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.3 2.5) (end -1.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.3 4.1) (end -0.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 4.1) (end -0.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 2.5) (end -1.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.3 2.5) (end 9.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.3 4.1) (end 8.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.3 4.1) (end 8.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.3 2.5) (end 9.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 4.1) (end -0.3 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.8 4.1) (end -0.8 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.25) (end 1.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.25) (end 3.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 0.25) (end 5.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 0.25) (end 7.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.45 6.75) (end -2.45 -1.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.45 -1.85) (end 10.45 -1.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start 10.45 -1.85) (end 10.45 6.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start 10.45 6.75) (end -2.45 6.75) (layer F.CrtYd) (width 0.05)) - (pad 1 thru_hole rect (at 0 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 4 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 6 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole oval (at 8 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_S5B-PH-SM4-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_S5B-PH-SM4-TB.kicad_mod deleted file mode 100644 index ff90275f..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_S5B-PH-SM4-TB.kicad_mod +++ /dev/null @@ -1,49 +0,0 @@ -(module Connectors_JST_S5B-PH-SM4-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, S5B-PH-SM4-TB") - (tags "connector jst ph") - (attr smd) - (fp_text reference REF** (at -4 -5.775) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_S5B-PH-SM4-TB (at 0 5.725) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -5.4 -2.525) (end -5.15 -2.525) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.5 4.225) (end -3.5 3.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.5 3.225) (end 3.5 3.225) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 3.225) (end 3.5 4.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.9 -1.775) (end -6.15 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.15 -1.775) (end -6.15 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.15 -3.375) (end -6.95 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.95 -3.375) (end -6.95 0.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.15 -1.775) (end -6.95 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 -1.775) (end 6.15 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.15 -1.775) (end 6.15 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.15 -3.375) (end 6.95 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.95 -3.375) (end 6.95 0.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.15 -1.775) (end 6.95 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.2 4.225) (end 5.2 4.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.2 -0.675) (end -5.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.2 2.725) (end -4.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.2 2.725) (end -4.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.2 -0.675) (end -5.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.2 -0.675) (end 5.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.2 2.725) (end 4.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.2 2.725) (end 4.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.2 -0.675) (end 5.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.1 -1.775) (end -2.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 -1.775) (end -0.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 -1.775) (end 1.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 -1.775) (end 3.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.7 5) (end -7.7 -5.05) (layer F.CrtYd) (width 0.05)) - (fp_line (start -7.7 -5.05) (end 7.7 -5.05) (layer F.CrtYd) (width 0.05)) - (fp_line (start 7.7 -5.05) (end 7.7 5) (layer F.CrtYd) (width 0.05)) - (fp_line (start 7.7 5) (end -7.7 5) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -4 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -2 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at 0 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at 2 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at 4 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -6.4 2.775) (size 1.6 3.4) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 6.4 2.775) (size 1.6 3.4) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_S6B-PH-K.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_S6B-PH-K.kicad_mod deleted file mode 100644 index 41251d31..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_S6B-PH-K.kicad_mod +++ /dev/null @@ -1,49 +0,0 @@ -(module Connectors_JST_S6B-PH-K (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, S6B-PH-K") - (tags "connector jst ph") - (fp_text reference REF** (at 0 -2.5) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_S6B-PH-K (at 5 7.5) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start 0.5 6.25) (end 0.5 2) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 2) (end 9.5 2) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.5 2) (end 9.5 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.9 0.25) (end -1.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 0.25) (end -1.25 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 -1.35) (end -1.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -1.35) (end -1.95 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 6.25) (end 11.95 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.95 6.25) (end 11.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.95 -1.35) (end 11.25 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.25 -1.35) (end 11.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.25 0.25) (end 10.9 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 0.25) (end -1.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.95 0.25) (end 11.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.3 2.5) (end -1.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.3 4.1) (end -0.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 4.1) (end -0.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 2.5) (end -1.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.3 2.5) (end 11.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.3 4.1) (end 10.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.3 4.1) (end 10.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.3 2.5) (end 11.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 4.1) (end -0.3 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.8 4.1) (end -0.8 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.25) (end 1.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.25) (end 3.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 0.25) (end 5.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 0.25) (end 7.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 0.25) (end 9.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.45 6.75) (end -2.45 -1.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.45 -1.85) (end 12.45 -1.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start 12.45 -1.85) (end 12.45 6.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start 12.45 6.75) (end -2.45 6.75) (layer F.CrtYd) (width 0.05)) - (pad 1 thru_hole rect (at 0 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 4 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 6 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole oval (at 8 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 6 thru_hole oval (at 10 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_S6B-PH-SM4-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_S6B-PH-SM4-TB.kicad_mod deleted file mode 100644 index 904f4f6a..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_S6B-PH-SM4-TB.kicad_mod +++ /dev/null @@ -1,51 +0,0 @@ -(module Connectors_JST_S6B-PH-SM4-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, S6B-PH-SM4-TB") - (tags "connector jst ph") - (attr smd) - (fp_text reference REF** (at -5 -5.775) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_S6B-PH-SM4-TB (at 0 5.725) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -6.4 -2.525) (end -6.15 -2.525) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.5 4.225) (end -4.5 3.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.5 3.225) (end 4.5 3.225) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.5 3.225) (end 4.5 4.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.9 -1.775) (end -7.15 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.15 -1.775) (end -7.15 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.15 -3.375) (end -7.95 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.95 -3.375) (end -7.95 0.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.15 -1.775) (end -7.95 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.9 -1.775) (end 7.15 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.15 -1.775) (end 7.15 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.15 -3.375) (end 7.95 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.95 -3.375) (end 7.95 0.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.15 -1.775) (end 7.95 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.2 4.225) (end 6.2 4.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.2 -0.675) (end -6.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.2 2.725) (end -5.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.2 2.725) (end -5.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.2 -0.675) (end -6.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.2 -0.675) (end 6.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.2 2.725) (end 5.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.2 2.725) (end 5.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.2 -0.675) (end 6.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.1 -1.775) (end -3.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 -1.775) (end -1.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 -1.775) (end 0.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 -1.775) (end 2.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.9 -1.775) (end 4.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.7 5) (end -8.7 -5.05) (layer F.CrtYd) (width 0.05)) - (fp_line (start -8.7 -5.05) (end 8.7 -5.05) (layer F.CrtYd) (width 0.05)) - (fp_line (start 8.7 -5.05) (end 8.7 5) (layer F.CrtYd) (width 0.05)) - (fp_line (start 8.7 5) (end -8.7 5) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -5 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -3 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -1 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at 1 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at 3 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at 5 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -7.4 2.775) (size 1.6 3.4) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 7.4 2.775) (size 1.6 3.4) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_S7B-PH-K.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_S7B-PH-K.kicad_mod deleted file mode 100644 index 3098dc0a..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_S7B-PH-K.kicad_mod +++ /dev/null @@ -1,51 +0,0 @@ -(module Connectors_JST_S7B-PH-K (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, S7B-PH-K") - (tags "connector jst ph") - (fp_text reference REF** (at 0 -2.5) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_S7B-PH-K (at 6 7.5) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start 0.5 6.25) (end 0.5 2) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 2) (end 11.5 2) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.5 2) (end 11.5 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.9 0.25) (end -1.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 0.25) (end -1.25 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 -1.35) (end -1.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -1.35) (end -1.95 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 6.25) (end 13.95 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.95 6.25) (end 13.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.95 -1.35) (end 13.25 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.25 -1.35) (end 13.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.25 0.25) (end 12.9 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 0.25) (end -1.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.95 0.25) (end 13.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.3 2.5) (end -1.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.3 4.1) (end -0.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 4.1) (end -0.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 2.5) (end -1.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.3 2.5) (end 13.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.3 4.1) (end 12.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.3 4.1) (end 12.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.3 2.5) (end 13.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 4.1) (end -0.3 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.8 4.1) (end -0.8 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.25) (end 1.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.25) (end 3.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 0.25) (end 5.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 0.25) (end 7.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 0.25) (end 9.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 0.25) (end 11.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.45 6.75) (end -2.45 -1.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.45 -1.85) (end 14.45 -1.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start 14.45 -1.85) (end 14.45 6.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start 14.45 6.75) (end -2.45 6.75) (layer F.CrtYd) (width 0.05)) - (pad 1 thru_hole rect (at 0 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 4 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 6 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole oval (at 8 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 6 thru_hole oval (at 10 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 7 thru_hole oval (at 12 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_S7B-PH-SM4-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_S7B-PH-SM4-TB.kicad_mod deleted file mode 100644 index 53ceeab9..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_S7B-PH-SM4-TB.kicad_mod +++ /dev/null @@ -1,53 +0,0 @@ -(module Connectors_JST_S7B-PH-SM4-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, S7B-PH-SM4-TB") - (tags "connector jst ph") - (attr smd) - (fp_text reference REF** (at -6 -5.775) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_S7B-PH-SM4-TB (at 0 5.725) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -7.4 -2.525) (end -7.15 -2.525) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.5 4.225) (end -5.5 3.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.5 3.225) (end 5.5 3.225) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.5 3.225) (end 5.5 4.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.9 -1.775) (end -8.15 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.15 -1.775) (end -8.15 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.15 -3.375) (end -8.95 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.95 -3.375) (end -8.95 0.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.15 -1.775) (end -8.95 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 -1.775) (end 8.15 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.15 -1.775) (end 8.15 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.15 -3.375) (end 8.95 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.95 -3.375) (end 8.95 0.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.15 -1.775) (end 8.95 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.2 4.225) (end 7.2 4.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.2 -0.675) (end -7.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.2 2.725) (end -6.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.2 2.725) (end -6.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.2 -0.675) (end -7.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.2 -0.675) (end 7.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.2 2.725) (end 6.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.2 2.725) (end 6.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.2 -0.675) (end 7.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.1 -1.775) (end -4.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.1 -1.775) (end -2.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 -1.775) (end -0.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 -1.775) (end 1.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 -1.775) (end 3.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 -1.775) (end 5.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.7 5) (end -9.7 -5.05) (layer F.CrtYd) (width 0.05)) - (fp_line (start -9.7 -5.05) (end 9.7 -5.05) (layer F.CrtYd) (width 0.05)) - (fp_line (start 9.7 -5.05) (end 9.7 5) (layer F.CrtYd) (width 0.05)) - (fp_line (start 9.7 5) (end -9.7 5) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -6 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -4 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -2 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at 0 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at 2 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at 4 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at 6 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -8.4 2.775) (size 1.6 3.4) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 8.4 2.775) (size 1.6 3.4) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_S8B-PH-K.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_S8B-PH-K.kicad_mod deleted file mode 100644 index d099b256..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_S8B-PH-K.kicad_mod +++ /dev/null @@ -1,53 +0,0 @@ -(module Connectors_JST_S8B-PH-K (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, S8B-PH-K") - (tags "connector jst ph") - (fp_text reference REF** (at 0 -2.5) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_S8B-PH-K (at 7 7.5) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start 0.5 6.25) (end 0.5 2) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 2) (end 13.5 2) (layer F.SilkS) (width 0.15)) - (fp_line (start 13.5 2) (end 13.5 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.9 0.25) (end -1.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 0.25) (end -1.25 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 -1.35) (end -1.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -1.35) (end -1.95 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 6.25) (end 15.95 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.95 6.25) (end 15.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.95 -1.35) (end 15.25 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.25 -1.35) (end 15.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.25 0.25) (end 14.9 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 0.25) (end -1.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.95 0.25) (end 15.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.3 2.5) (end -1.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.3 4.1) (end -0.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 4.1) (end -0.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 2.5) (end -1.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.3 2.5) (end 15.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.3 4.1) (end 14.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.3 4.1) (end 14.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.3 2.5) (end 15.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 4.1) (end -0.3 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.8 4.1) (end -0.8 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.25) (end 1.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.25) (end 3.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 0.25) (end 5.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 0.25) (end 7.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 0.25) (end 9.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 0.25) (end 11.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 0.25) (end 13.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.45 6.75) (end -2.45 -1.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.45 -1.85) (end 16.45 -1.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start 16.45 -1.85) (end 16.45 6.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start 16.45 6.75) (end -2.45 6.75) (layer F.CrtYd) (width 0.05)) - (pad 1 thru_hole rect (at 0 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 4 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 6 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole oval (at 8 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 6 thru_hole oval (at 10 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 7 thru_hole oval (at 12 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 8 thru_hole oval (at 14 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_S8B-PH-SM4-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_S8B-PH-SM4-TB.kicad_mod deleted file mode 100644 index daf16531..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_S8B-PH-SM4-TB.kicad_mod +++ /dev/null @@ -1,55 +0,0 @@ -(module Connectors_JST_S8B-PH-SM4-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, S8B-PH-SM4-TB") - (tags "connector jst ph") - (attr smd) - (fp_text reference REF** (at -7 -5.775) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_S8B-PH-SM4-TB (at 0 5.725) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -8.4 -2.525) (end -8.15 -2.525) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.5 4.225) (end -6.5 3.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.5 3.225) (end 6.5 3.225) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.5 3.225) (end 6.5 4.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.9 -1.775) (end -9.15 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.15 -1.775) (end -9.15 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.15 -3.375) (end -9.95 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.95 -3.375) (end -9.95 0.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.15 -1.775) (end -9.95 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.9 -1.775) (end 9.15 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.15 -1.775) (end 9.15 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.15 -3.375) (end 9.95 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.95 -3.375) (end 9.95 0.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.15 -1.775) (end 9.95 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.2 4.225) (end 8.2 4.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.2 -0.675) (end -8.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.2 2.725) (end -7.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.2 2.725) (end -7.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.2 -0.675) (end -8.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.2 -0.675) (end 8.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.2 2.725) (end 7.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.2 2.725) (end 7.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.2 -0.675) (end 8.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.1 -1.775) (end -5.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.1 -1.775) (end -3.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.1 -1.775) (end -1.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.1 -1.775) (end 0.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.9 -1.775) (end 2.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.9 -1.775) (end 4.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.9 -1.775) (end 6.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.7 5) (end -10.7 -5.05) (layer F.CrtYd) (width 0.05)) - (fp_line (start -10.7 -5.05) (end 10.7 -5.05) (layer F.CrtYd) (width 0.05)) - (fp_line (start 10.7 -5.05) (end 10.7 5) (layer F.CrtYd) (width 0.05)) - (fp_line (start 10.7 5) (end -10.7 5) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -7 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -5 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -3 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -1 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at 1 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at 3 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at 5 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at 7 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -9.4 2.775) (size 1.6 3.4) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 9.4 2.775) (size 1.6 3.4) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_S9B-PH-K.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_S9B-PH-K.kicad_mod deleted file mode 100644 index 5a36d35f..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_S9B-PH-K.kicad_mod +++ /dev/null @@ -1,55 +0,0 @@ -(module Connectors_JST_S9B-PH-K (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, S9B-PH-K") - (tags "connector jst ph") - (fp_text reference REF** (at 0 -2.5) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_S9B-PH-K (at 8 7.5) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start 0.5 6.25) (end 0.5 2) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.5 2) (end 15.5 2) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.5 2) (end 15.5 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.9 0.25) (end -1.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 0.25) (end -1.25 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.25 -1.35) (end -1.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 -1.35) (end -1.95 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 6.25) (end 17.95 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.95 6.25) (end 17.95 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.95 -1.35) (end 17.25 -1.35) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.25 -1.35) (end 17.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.25 0.25) (end 16.9 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.95 0.25) (end -1.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.95 0.25) (end 17.25 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.3 2.5) (end -1.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.3 4.1) (end -0.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 4.1) (end -0.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 2.5) (end -1.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.3 2.5) (end 17.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.3 4.1) (end 16.3 4.1) (layer F.SilkS) (width 0.15)) - (fp_line (start 16.3 4.1) (end 16.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 16.3 2.5) (end 17.3 2.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.3 4.1) (end -0.3 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.8 4.1) (end -0.8 6.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 0.25) (end 1.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 0.25) (end 3.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 0.25) (end 5.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 0.25) (end 7.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 0.25) (end 9.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.9 0.25) (end 11.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 12.9 0.25) (end 13.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start 14.9 0.25) (end 15.1 0.25) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.45 6.75) (end -2.45 -1.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.45 -1.85) (end 18.45 -1.85) (layer F.CrtYd) (width 0.05)) - (fp_line (start 18.45 -1.85) (end 18.45 6.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start 18.45 6.75) (end -2.45 6.75) (layer F.CrtYd) (width 0.05)) - (pad 1 thru_hole rect (at 0 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 4 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 6 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole oval (at 8 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 6 thru_hole oval (at 10 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 7 thru_hole oval (at 12 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 8 thru_hole oval (at 14 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) - (pad 9 thru_hole oval (at 16 0) (size 1.2 1.7) (drill 0.7) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_S9B-PH-SM4-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_S9B-PH-SM4-TB.kicad_mod deleted file mode 100644 index a2e2d4a5..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_S9B-PH-SM4-TB.kicad_mod +++ /dev/null @@ -1,57 +0,0 @@ -(module Connectors_JST_S9B-PH-SM4-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST PH series connector, S9B-PH-SM4-TB") - (tags "connector jst ph") - (attr smd) - (fp_text reference REF** (at -8 -5.775) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_S9B-PH-SM4-TB (at 0 5.725) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -9.4 -2.525) (end -9.15 -2.525) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.5 4.225) (end -7.5 3.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.5 3.225) (end 7.5 3.225) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.5 3.225) (end 7.5 4.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.9 -1.775) (end -10.15 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.15 -1.775) (end -10.15 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.15 -3.375) (end -10.95 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.95 -3.375) (end -10.95 0.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.15 -1.775) (end -10.95 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.9 -1.775) (end 10.15 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.15 -1.775) (end 10.15 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.15 -3.375) (end 10.95 -3.375) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.95 -3.375) (end 10.95 0.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.15 -1.775) (end 10.95 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.2 4.225) (end 9.2 4.225) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.2 -0.675) (end -9.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.2 2.725) (end -8.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.2 2.725) (end -8.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.2 -0.675) (end -9.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.2 -0.675) (end 9.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.2 2.725) (end 8.2 2.725) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.2 2.725) (end 8.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.2 -0.675) (end 9.2 -0.675) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.1 -1.775) (end -6.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.1 -1.775) (end -4.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.1 -1.775) (end -2.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.1 -1.775) (end -0.9 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.9 -1.775) (end 1.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.9 -1.775) (end 3.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.9 -1.775) (end 5.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.9 -1.775) (end 7.1 -1.775) (layer F.SilkS) (width 0.15)) - (fp_line (start -11.7 5) (end -11.7 -5.05) (layer F.CrtYd) (width 0.05)) - (fp_line (start -11.7 -5.05) (end 11.7 -5.05) (layer F.CrtYd) (width 0.05)) - (fp_line (start 11.7 -5.05) (end 11.7 5) (layer F.CrtYd) (width 0.05)) - (fp_line (start 11.7 5) (end -11.7 5) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -8 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -6 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -4 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -2 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at 0 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at 2 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at 4 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at 6 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 9 smd rect (at 8 -2.775) (size 1 3.5) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -10.4 2.775) (size 1.6 3.4) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 10.4 2.775) (size 1.6 3.4) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_SM02B-SRSS-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_SM02B-SRSS-TB.kicad_mod deleted file mode 100644 index e5ae3d6f..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_SM02B-SRSS-TB.kicad_mod +++ /dev/null @@ -1,49 +0,0 @@ -(module Connectors_JST_SM02B-SRSS-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST SH series connector, SM02B-SRSS-TB") - (tags "connector jst sh") - (attr smd) - (fp_text reference REF** (at -0.5 -3.9375) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_SM02B-SRSS-TB (at 0 4.2625) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -1.5 -2.1875) (end -1.25 -2.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.9 2.6375) (end 0.9 2.6375) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 0.7375) (end -2 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 -1.6125) (end -1.1 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.5 -1.6125) (end -1.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.5 -0.4125) (end -1.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.5 -0.4125) (end -1.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.5 -1.6125) (end -1.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.5 -1.1125) (end -1.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.5 -1.1125) (end -2 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 -1.1125) (end -2 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 -1.1125) (end -1.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.5 -0.4125) (end -1.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.5 -0.4125) (end -2 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 -0.4125) (end -2 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 -0.4125) (end -1.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 0.7375) (end 2 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 -1.6125) (end 1.1 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.5 -1.6125) (end 1.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.5 -0.4125) (end 1.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.5 -0.4125) (end 1.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.5 -1.6125) (end 1.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.5 -1.1125) (end 1.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.5 -1.1125) (end 2 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 -1.1125) (end 2 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 -1.1125) (end 1.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.5 -0.4125) (end 1.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.5 -0.4125) (end 2 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 -0.4125) (end 2 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 -0.4125) (end 1.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.9 3.35) (end -2.9 -3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.9 -3.25) (end 2.9 -3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start 2.9 -3.25) (end 2.9 3.35) (layer F.CrtYd) (width 0.05)) - (fp_line (start 2.9 3.35) (end -2.9 3.35) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -0.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at 0.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -1.8 1.9375) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 1.8 1.9375) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_SM03B-SRSS-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_SM03B-SRSS-TB.kicad_mod deleted file mode 100644 index ca78875e..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_SM03B-SRSS-TB.kicad_mod +++ /dev/null @@ -1,50 +0,0 @@ -(module Connectors_JST_SM03B-SRSS-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST SH series connector, SM03B-SRSS-TB") - (tags "connector jst sh") - (attr smd) - (fp_text reference REF** (at -1 -3.9375) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_SM03B-SRSS-TB (at 0 4.2625) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -2 -2.1875) (end -1.75 -2.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.4 2.6375) (end 1.4 2.6375) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 0.7375) (end -2.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 -1.6125) (end -1.6 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 -1.6125) (end -2 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 -0.4125) (end -2 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 -0.4125) (end -2 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 -1.6125) (end -2 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 -1.1125) (end -2 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 -1.1125) (end -2.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 -1.1125) (end -2.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 -1.1125) (end -2 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 -0.4125) (end -2 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -2 -0.4125) (end -2.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 -0.4125) (end -2.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 -0.4125) (end -2 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 0.7375) (end 2.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 -1.6125) (end 1.6 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 -1.6125) (end 2 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 -0.4125) (end 2 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 -0.4125) (end 2 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 -1.6125) (end 2 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 -1.1125) (end 2 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 -1.1125) (end 2.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 -1.1125) (end 2.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 -1.1125) (end 2 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 -0.4125) (end 2 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 2 -0.4125) (end 2.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 -0.4125) (end 2.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 -0.4125) (end 2 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.4 3.35) (end -3.4 -3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start -3.4 -3.25) (end 3.4 -3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start 3.4 -3.25) (end 3.4 3.35) (layer F.CrtYd) (width 0.05)) - (fp_line (start 3.4 3.35) (end -3.4 3.35) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -1 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at 0 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at 1 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -2.3 1.9375) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 2.3 1.9375) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_SM04B-SRSS-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_SM04B-SRSS-TB.kicad_mod deleted file mode 100644 index 9abcfe1e..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_SM04B-SRSS-TB.kicad_mod +++ /dev/null @@ -1,51 +0,0 @@ -(module Connectors_JST_SM04B-SRSS-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST SH series connector, SM04B-SRSS-TB") - (tags "connector jst sh") - (attr smd) - (fp_text reference REF** (at -1.5 -3.9375) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_SM04B-SRSS-TB (at 0 4.2625) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -2.5 -2.1875) (end -2.25 -2.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.9 2.6375) (end 1.9 2.6375) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 0.7375) (end -3 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 -1.6125) (end -2.1 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 -1.6125) (end -2.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 -0.4125) (end -2.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 -0.4125) (end -2.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 -1.6125) (end -2.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 -1.1125) (end -2.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 -1.1125) (end -3 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 -1.1125) (end -3 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 -1.1125) (end -2.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 -0.4125) (end -2.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.5 -0.4125) (end -3 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 -0.4125) (end -3 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 -0.4125) (end -2.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 0.7375) (end 3 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 -1.6125) (end 2.1 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 -1.6125) (end 2.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 -0.4125) (end 2.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 -0.4125) (end 2.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 -1.6125) (end 2.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 -1.1125) (end 2.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 -1.1125) (end 3 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 -1.1125) (end 3 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 -1.1125) (end 2.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 -0.4125) (end 2.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 2.5 -0.4125) (end 3 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 -0.4125) (end 3 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 -0.4125) (end 2.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.9 3.35) (end -3.9 -3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start -3.9 -3.25) (end 3.9 -3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start 3.9 -3.25) (end 3.9 3.35) (layer F.CrtYd) (width 0.05)) - (fp_line (start 3.9 3.35) (end -3.9 3.35) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -1.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -0.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at 0.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at 1.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -2.8 1.9375) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 2.8 1.9375) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_SM05B-SRSS-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_SM05B-SRSS-TB.kicad_mod deleted file mode 100644 index 4b9f5f32..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_SM05B-SRSS-TB.kicad_mod +++ /dev/null @@ -1,52 +0,0 @@ -(module Connectors_JST_SM05B-SRSS-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST SH series connector, SM05B-SRSS-TB") - (tags "connector jst sh") - (attr smd) - (fp_text reference REF** (at -2 -3.9375) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_SM05B-SRSS-TB (at 0 4.2625) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -3 -2.1875) (end -2.75 -2.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.4 2.6375) (end 2.4 2.6375) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.5 0.7375) (end -3.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.5 -1.6125) (end -2.6 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 -1.6125) (end -3 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 -0.4125) (end -3 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 -0.4125) (end -3 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 -1.6125) (end -3 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 -1.1125) (end -3 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 -1.1125) (end -3.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.5 -1.1125) (end -3.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.5 -1.1125) (end -3 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 -0.4125) (end -3 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -3 -0.4125) (end -3.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.5 -0.4125) (end -3.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.5 -0.4125) (end -3 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 0.7375) (end 3.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 -1.6125) (end 2.6 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 -1.6125) (end 3 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 -0.4125) (end 3 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 -0.4125) (end 3 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 -1.6125) (end 3 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 -1.1125) (end 3 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 -1.1125) (end 3.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 -1.1125) (end 3.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 -1.1125) (end 3 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 -0.4125) (end 3 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 3 -0.4125) (end 3.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 -0.4125) (end 3.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 -0.4125) (end 3 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.4 3.35) (end -4.4 -3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start -4.4 -3.25) (end 4.4 -3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start 4.4 -3.25) (end 4.4 3.35) (layer F.CrtYd) (width 0.05)) - (fp_line (start 4.4 3.35) (end -4.4 3.35) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -2 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -1 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at 0 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at 1 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at 2 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -3.3 1.9375) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 3.3 1.9375) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_SM06B-SRSS-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_SM06B-SRSS-TB.kicad_mod deleted file mode 100644 index ceb4a520..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_SM06B-SRSS-TB.kicad_mod +++ /dev/null @@ -1,53 +0,0 @@ -(module Connectors_JST_SM06B-SRSS-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST SH series connector, SM06B-SRSS-TB") - (tags "connector jst sh") - (attr smd) - (fp_text reference REF** (at -2.5 -3.9375) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_SM06B-SRSS-TB (at 0 4.2625) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -3.5 -2.1875) (end -3.25 -2.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.9 2.6375) (end 2.9 2.6375) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 0.7375) (end -4 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 -1.6125) (end -3.1 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.5 -1.6125) (end -3.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.5 -0.4125) (end -3.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.5 -0.4125) (end -3.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.5 -1.6125) (end -3.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.5 -1.1125) (end -3.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.5 -1.1125) (end -4 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 -1.1125) (end -4 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 -1.1125) (end -3.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.5 -0.4125) (end -3.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.5 -0.4125) (end -4 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 -0.4125) (end -4 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 -0.4125) (end -3.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 0.7375) (end 4 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 -1.6125) (end 3.1 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 -1.6125) (end 3.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 -0.4125) (end 3.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 -0.4125) (end 3.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 -1.6125) (end 3.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 -1.1125) (end 3.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 -1.1125) (end 4 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 -1.1125) (end 4 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 -1.1125) (end 3.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 -0.4125) (end 3.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 3.5 -0.4125) (end 4 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 -0.4125) (end 4 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 -0.4125) (end 3.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.9 3.35) (end -4.9 -3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start -4.9 -3.25) (end 4.9 -3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start 4.9 -3.25) (end 4.9 3.35) (layer F.CrtYd) (width 0.05)) - (fp_line (start 4.9 3.35) (end -4.9 3.35) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -2.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -1.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -0.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at 0.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at 1.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at 2.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -3.8 1.9375) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 3.8 1.9375) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_SM07B-SRSS-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_SM07B-SRSS-TB.kicad_mod deleted file mode 100644 index ccdace4e..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_SM07B-SRSS-TB.kicad_mod +++ /dev/null @@ -1,54 +0,0 @@ -(module Connectors_JST_SM07B-SRSS-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST SH series connector, SM07B-SRSS-TB") - (tags "connector jst sh") - (attr smd) - (fp_text reference REF** (at -3 -3.9375) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_SM07B-SRSS-TB (at 0 4.2625) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -4 -2.1875) (end -3.75 -2.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.4 2.6375) (end 3.4 2.6375) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.5 0.7375) (end -4.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.5 -1.6125) (end -3.6 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 -1.6125) (end -4 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 -0.4125) (end -4 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 -0.4125) (end -4 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 -1.6125) (end -4 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 -1.1125) (end -4 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 -1.1125) (end -4.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.5 -1.1125) (end -4.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.5 -1.1125) (end -4 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 -0.4125) (end -4 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -4 -0.4125) (end -4.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.5 -0.4125) (end -4.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.5 -0.4125) (end -4 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.5 0.7375) (end 4.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.5 -1.6125) (end 3.6 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 -1.6125) (end 4 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 -0.4125) (end 4 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 -0.4125) (end 4 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 -1.6125) (end 4 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 -1.1125) (end 4 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 -1.1125) (end 4.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.5 -1.1125) (end 4.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.5 -1.1125) (end 4 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 -0.4125) (end 4 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 4 -0.4125) (end 4.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.5 -0.4125) (end 4.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.5 -0.4125) (end 4 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.4 3.35) (end -5.4 -3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start -5.4 -3.25) (end 5.4 -3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start 5.4 -3.25) (end 5.4 3.35) (layer F.CrtYd) (width 0.05)) - (fp_line (start 5.4 3.35) (end -5.4 3.35) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -3 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -2 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -1 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at 0 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at 1 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at 2 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at 3 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -4.3 1.9375) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 4.3 1.9375) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_SM08B-SRSS-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_SM08B-SRSS-TB.kicad_mod deleted file mode 100644 index b2761d5b..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_SM08B-SRSS-TB.kicad_mod +++ /dev/null @@ -1,55 +0,0 @@ -(module Connectors_JST_SM08B-SRSS-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST SH series connector, SM08B-SRSS-TB") - (tags "connector jst sh") - (attr smd) - (fp_text reference REF** (at -3.5 -3.9375) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_SM08B-SRSS-TB (at 0 4.2625) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -4.5 -2.1875) (end -4.25 -2.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.9 2.6375) (end 3.9 2.6375) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 0.7375) (end -5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 -1.6125) (end -4.1 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.5 -1.6125) (end -4.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.5 -0.4125) (end -4.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.5 -0.4125) (end -4.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.5 -1.6125) (end -4.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.5 -1.1125) (end -4.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.5 -1.1125) (end -5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 -1.1125) (end -5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 -1.1125) (end -4.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.5 -0.4125) (end -4.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.5 -0.4125) (end -5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 -0.4125) (end -5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 -0.4125) (end -4.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 0.7375) (end 5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 -1.6125) (end 4.1 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.5 -1.6125) (end 4.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.5 -0.4125) (end 4.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.5 -0.4125) (end 4.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.5 -1.6125) (end 4.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.5 -1.1125) (end 4.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.5 -1.1125) (end 5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 -1.1125) (end 5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 -1.1125) (end 4.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.5 -0.4125) (end 4.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.5 -0.4125) (end 5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 -0.4125) (end 5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 -0.4125) (end 4.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.9 3.35) (end -5.9 -3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start -5.9 -3.25) (end 5.9 -3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start 5.9 -3.25) (end 5.9 3.35) (layer F.CrtYd) (width 0.05)) - (fp_line (start 5.9 3.35) (end -5.9 3.35) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -3.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -2.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -1.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -0.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at 0.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at 1.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at 2.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at 3.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -4.8 1.9375) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 4.8 1.9375) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_SM09B-SRSS-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_SM09B-SRSS-TB.kicad_mod deleted file mode 100644 index cbd5150e..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_SM09B-SRSS-TB.kicad_mod +++ /dev/null @@ -1,56 +0,0 @@ -(module Connectors_JST_SM09B-SRSS-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST SH series connector, SM09B-SRSS-TB") - (tags "connector jst sh") - (attr smd) - (fp_text reference REF** (at -4 -3.9375) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_SM09B-SRSS-TB (at 0 4.2625) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -5 -2.1875) (end -4.75 -2.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.4 2.6375) (end 4.4 2.6375) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.5 0.7375) (end -5.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.5 -1.6125) (end -4.6 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 -1.6125) (end -5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 -0.4125) (end -5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 -0.4125) (end -5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 -1.6125) (end -5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 -1.1125) (end -5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 -1.1125) (end -5.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.5 -1.1125) (end -5.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.5 -1.1125) (end -5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 -0.4125) (end -5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -5 -0.4125) (end -5.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.5 -0.4125) (end -5.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.5 -0.4125) (end -5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.5 0.7375) (end 5.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.5 -1.6125) (end 4.6 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 -1.6125) (end 5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 -0.4125) (end 5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 -0.4125) (end 5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 -1.6125) (end 5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 -1.1125) (end 5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 -1.1125) (end 5.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.5 -1.1125) (end 5.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.5 -1.1125) (end 5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 -0.4125) (end 5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 5 -0.4125) (end 5.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.5 -0.4125) (end 5.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.5 -0.4125) (end 5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.4 3.35) (end -6.4 -3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start -6.4 -3.25) (end 6.4 -3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start 6.4 -3.25) (end 6.4 3.35) (layer F.CrtYd) (width 0.05)) - (fp_line (start 6.4 3.35) (end -6.4 3.35) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -4 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -3 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -2 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -1 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at 0 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at 1 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at 2 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at 3 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 9 smd rect (at 4 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -5.3 1.9375) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 5.3 1.9375) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_SM10B-SRSS-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_SM10B-SRSS-TB.kicad_mod deleted file mode 100644 index 7eff42e2..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_SM10B-SRSS-TB.kicad_mod +++ /dev/null @@ -1,57 +0,0 @@ -(module Connectors_JST_SM10B-SRSS-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST SH series connector, SM10B-SRSS-TB") - (tags "connector jst sh") - (attr smd) - (fp_text reference REF** (at -4.5 -3.9375) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_SM10B-SRSS-TB (at 0 4.2625) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -5.5 -2.1875) (end -5.25 -2.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start -4.9 2.6375) (end 4.9 2.6375) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 0.7375) (end -6 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 -1.6125) (end -5.1 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.5 -1.6125) (end -5.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.5 -0.4125) (end -5.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.5 -0.4125) (end -5.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.5 -1.6125) (end -5.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.5 -1.1125) (end -5.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.5 -1.1125) (end -6 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 -1.1125) (end -6 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 -1.1125) (end -5.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.5 -0.4125) (end -5.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.5 -0.4125) (end -6 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 -0.4125) (end -6 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 -0.4125) (end -5.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 0.7375) (end 6 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 -1.6125) (end 5.1 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.5 -1.6125) (end 5.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.5 -0.4125) (end 5.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.5 -0.4125) (end 5.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.5 -1.6125) (end 5.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.5 -1.1125) (end 5.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.5 -1.1125) (end 6 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 -1.1125) (end 6 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 -1.1125) (end 5.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.5 -0.4125) (end 5.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.5 -0.4125) (end 6 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 -0.4125) (end 6 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 -0.4125) (end 5.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.9 3.35) (end -6.9 -3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start -6.9 -3.25) (end 6.9 -3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start 6.9 -3.25) (end 6.9 3.35) (layer F.CrtYd) (width 0.05)) - (fp_line (start 6.9 3.35) (end -6.9 3.35) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -4.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -3.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -2.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -1.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at -0.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at 0.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at 1.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at 2.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 9 smd rect (at 3.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 10 smd rect (at 4.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -5.8 1.9375) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 5.8 1.9375) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_SM11B-SRSS-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_SM11B-SRSS-TB.kicad_mod deleted file mode 100644 index c7ea4171..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_SM11B-SRSS-TB.kicad_mod +++ /dev/null @@ -1,58 +0,0 @@ -(module Connectors_JST_SM11B-SRSS-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST SH series connector, SM11B-SRSS-TB") - (tags "connector jst sh") - (attr smd) - (fp_text reference REF** (at -5 -3.9375) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_SM11B-SRSS-TB (at 0 4.2625) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -6 -2.1875) (end -5.75 -2.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.4 2.6375) (end 5.4 2.6375) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.5 0.7375) (end -6.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.5 -1.6125) (end -5.6 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 -1.6125) (end -6 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 -0.4125) (end -6 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 -0.4125) (end -6 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 -1.6125) (end -6 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 -1.1125) (end -6 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 -1.1125) (end -6.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.5 -1.1125) (end -6.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.5 -1.1125) (end -6 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 -0.4125) (end -6 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -6 -0.4125) (end -6.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.5 -0.4125) (end -6.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.5 -0.4125) (end -6 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.5 0.7375) (end 6.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.5 -1.6125) (end 5.6 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 -1.6125) (end 6 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 -0.4125) (end 6 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 -0.4125) (end 6 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 -1.6125) (end 6 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 -1.1125) (end 6 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 -1.1125) (end 6.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.5 -1.1125) (end 6.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.5 -1.1125) (end 6 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 -0.4125) (end 6 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 6 -0.4125) (end 6.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.5 -0.4125) (end 6.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.5 -0.4125) (end 6 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.4 3.35) (end -7.4 -3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start -7.4 -3.25) (end 7.4 -3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start 7.4 -3.25) (end 7.4 3.35) (layer F.CrtYd) (width 0.05)) - (fp_line (start 7.4 3.35) (end -7.4 3.35) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -4 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -3 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -2 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at -1 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at 0 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at 1 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at 2 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 9 smd rect (at 3 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 10 smd rect (at 4 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 11 smd rect (at 5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -6.3 1.9375) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 6.3 1.9375) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_SM12B-SRSS-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_SM12B-SRSS-TB.kicad_mod deleted file mode 100644 index b512632d..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_SM12B-SRSS-TB.kicad_mod +++ /dev/null @@ -1,59 +0,0 @@ -(module Connectors_JST_SM12B-SRSS-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST SH series connector, SM12B-SRSS-TB") - (tags "connector jst sh") - (attr smd) - (fp_text reference REF** (at -5.5 -3.9375) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_SM12B-SRSS-TB (at 0 4.2625) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -6.5 -2.1875) (end -6.25 -2.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start -5.9 2.6375) (end 5.9 2.6375) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 0.7375) (end -7 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 -1.6125) (end -6.1 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.5 -1.6125) (end -6.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.5 -0.4125) (end -6.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.5 -0.4125) (end -6.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.5 -1.6125) (end -6.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.5 -1.1125) (end -6.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.5 -1.1125) (end -7 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 -1.1125) (end -7 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 -1.1125) (end -6.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.5 -0.4125) (end -6.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.5 -0.4125) (end -7 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 -0.4125) (end -7 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 -0.4125) (end -6.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 0.7375) (end 7 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 -1.6125) (end 6.1 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.5 -1.6125) (end 6.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.5 -0.4125) (end 6.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.5 -0.4125) (end 6.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.5 -1.6125) (end 6.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.5 -1.1125) (end 6.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.5 -1.1125) (end 7 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 -1.1125) (end 7 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 -1.1125) (end 6.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.5 -0.4125) (end 6.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.5 -0.4125) (end 7 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 -0.4125) (end 7 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 -0.4125) (end 6.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.9 3.35) (end -7.9 -3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start -7.9 -3.25) (end 7.9 -3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start 7.9 -3.25) (end 7.9 3.35) (layer F.CrtYd) (width 0.05)) - (fp_line (start 7.9 3.35) (end -7.9 3.35) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -5.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -4.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -3.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -2.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at -1.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at -0.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at 0.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at 1.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 9 smd rect (at 2.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 10 smd rect (at 3.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 11 smd rect (at 4.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 12 smd rect (at 5.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -6.8 1.9375) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 6.8 1.9375) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_SM13B-SRSS-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_SM13B-SRSS-TB.kicad_mod deleted file mode 100644 index 260eaf1b..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_SM13B-SRSS-TB.kicad_mod +++ /dev/null @@ -1,60 +0,0 @@ -(module Connectors_JST_SM13B-SRSS-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST SH series connector, SM13B-SRSS-TB") - (tags "connector jst sh") - (attr smd) - (fp_text reference REF** (at -6 -3.9375) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_SM13B-SRSS-TB (at 0 4.2625) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -7 -2.1875) (end -6.75 -2.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.4 2.6375) (end 6.4 2.6375) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.5 0.7375) (end -7.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.5 -1.6125) (end -6.6 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 -1.6125) (end -7 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 -0.4125) (end -7 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 -0.4125) (end -7 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 -1.6125) (end -7 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 -1.1125) (end -7 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 -1.1125) (end -7.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.5 -1.1125) (end -7.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.5 -1.1125) (end -7 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 -0.4125) (end -7 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -7 -0.4125) (end -7.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.5 -0.4125) (end -7.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.5 -0.4125) (end -7 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.5 0.7375) (end 7.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.5 -1.6125) (end 6.6 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 -1.6125) (end 7 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 -0.4125) (end 7 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 -0.4125) (end 7 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 -1.6125) (end 7 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 -1.1125) (end 7 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 -1.1125) (end 7.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.5 -1.1125) (end 7.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.5 -1.1125) (end 7 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 -0.4125) (end 7 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 7 -0.4125) (end 7.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.5 -0.4125) (end 7.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.5 -0.4125) (end 7 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.4 3.35) (end -8.4 -3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start -8.4 -3.25) (end 8.4 -3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start 8.4 -3.25) (end 8.4 3.35) (layer F.CrtYd) (width 0.05)) - (fp_line (start 8.4 3.35) (end -8.4 3.35) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -6 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -4 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -3 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at -2 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at -1 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at 0 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at 1 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 9 smd rect (at 2 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 10 smd rect (at 3 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 11 smd rect (at 4 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 12 smd rect (at 5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 13 smd rect (at 6 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -7.3 1.9375) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 7.3 1.9375) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_SM14B-SRSS-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_SM14B-SRSS-TB.kicad_mod deleted file mode 100644 index 3e22bf68..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_SM14B-SRSS-TB.kicad_mod +++ /dev/null @@ -1,61 +0,0 @@ -(module Connectors_JST_SM14B-SRSS-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST SH series connector, SM14B-SRSS-TB") - (tags "connector jst sh") - (attr smd) - (fp_text reference REF** (at -6.5 -3.9375) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_SM14B-SRSS-TB (at 0 4.2625) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -7.5 -2.1875) (end -7.25 -2.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start -6.9 2.6375) (end 6.9 2.6375) (layer F.SilkS) (width 0.15)) - (fp_line (start -8 0.7375) (end -8 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -8 -1.6125) (end -7.1 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.5 -1.6125) (end -7.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.5 -0.4125) (end -7.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.5 -0.4125) (end -7.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.5 -1.6125) (end -7.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.5 -1.1125) (end -7.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.5 -1.1125) (end -8 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -8 -1.1125) (end -8 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -8 -1.1125) (end -7.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.5 -0.4125) (end -7.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.5 -0.4125) (end -8 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -8 -0.4125) (end -8 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -8 -0.4125) (end -7.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 8 0.7375) (end 8 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 8 -1.6125) (end 7.1 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.5 -1.6125) (end 7.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.5 -0.4125) (end 7.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.5 -0.4125) (end 7.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.5 -1.6125) (end 7.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.5 -1.1125) (end 7.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.5 -1.1125) (end 8 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 8 -1.1125) (end 8 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 8 -1.1125) (end 7.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.5 -0.4125) (end 7.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 7.5 -0.4125) (end 8 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 8 -0.4125) (end 8 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 8 -0.4125) (end 7.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.9 3.35) (end -8.9 -3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start -8.9 -3.25) (end 8.9 -3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start 8.9 -3.25) (end 8.9 3.35) (layer F.CrtYd) (width 0.05)) - (fp_line (start 8.9 3.35) (end -8.9 3.35) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -6.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -5.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -4.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -3.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at -2.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at -1.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at -0.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at 0.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 9 smd rect (at 1.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 10 smd rect (at 2.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 11 smd rect (at 3.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 12 smd rect (at 4.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 13 smd rect (at 5.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 14 smd rect (at 6.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -7.8 1.9375) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 7.8 1.9375) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_SM15B-SRSS-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_SM15B-SRSS-TB.kicad_mod deleted file mode 100644 index 9fe92f0b..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_SM15B-SRSS-TB.kicad_mod +++ /dev/null @@ -1,62 +0,0 @@ -(module Connectors_JST_SM15B-SRSS-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST SH series connector, SM15B-SRSS-TB") - (tags "connector jst sh") - (attr smd) - (fp_text reference REF** (at -7 -3.9375) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_SM15B-SRSS-TB (at 0 4.2625) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -8 -2.1875) (end -7.75 -2.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start -7.4 2.6375) (end 7.4 2.6375) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.5 0.7375) (end -8.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.5 -1.6125) (end -7.6 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -8 -1.6125) (end -8 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -8 -0.4125) (end -8 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -8 -0.4125) (end -8 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -8 -1.6125) (end -8 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -8 -1.1125) (end -8 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -8 -1.1125) (end -8.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.5 -1.1125) (end -8.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.5 -1.1125) (end -8 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -8 -0.4125) (end -8 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -8 -0.4125) (end -8.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.5 -0.4125) (end -8.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -8.5 -0.4125) (end -8 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.5 0.7375) (end 8.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.5 -1.6125) (end 7.6 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 8 -1.6125) (end 8 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 8 -0.4125) (end 8 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 8 -0.4125) (end 8 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 8 -1.6125) (end 8 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 8 -1.1125) (end 8 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 8 -1.1125) (end 8.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.5 -1.1125) (end 8.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.5 -1.1125) (end 8 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 8 -0.4125) (end 8 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 8 -0.4125) (end 8.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.5 -0.4125) (end 8.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.5 -0.4125) (end 8 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.4 3.35) (end -9.4 -3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start -9.4 -3.25) (end 9.4 -3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start 9.4 -3.25) (end 9.4 3.35) (layer F.CrtYd) (width 0.05)) - (fp_line (start 9.4 3.35) (end -9.4 3.35) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -7 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -6 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -4 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at -3 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at -2 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at -1 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at 0 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 9 smd rect (at 1 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 10 smd rect (at 2 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 11 smd rect (at 3 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 12 smd rect (at 4 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 13 smd rect (at 5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 14 smd rect (at 6 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 15 smd rect (at 7 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -8.3 1.9375) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 8.3 1.9375) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/Connectors_JST_SM20B-SRSS-TB.kicad_mod b/KiCAD/Connectors_JST.pretty/Connectors_JST_SM20B-SRSS-TB.kicad_mod deleted file mode 100644 index 1ad0080d..00000000 --- a/KiCAD/Connectors_JST.pretty/Connectors_JST_SM20B-SRSS-TB.kicad_mod +++ /dev/null @@ -1,67 +0,0 @@ -(module Connectors_JST_SM20B-SRSS-TB (layer F.Cu) (tedit 55F6C32A) - (descr "JST SH series connector, SM20B-SRSS-TB") - (tags "connector jst sh") - (attr smd) - (fp_text reference REF** (at -9.5 -3.9375) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value Connectors_JST_SM20B-SRSS-TB (at 0 4.2625) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -10.5 -2.1875) (end -10.25 -2.1875) (layer F.SilkS) (width 0.15)) - (fp_line (start -9.9 2.6375) (end 9.9 2.6375) (layer F.SilkS) (width 0.15)) - (fp_line (start -11 0.7375) (end -11 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -11 -1.6125) (end -10.1 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.5 -1.6125) (end -10.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.5 -0.4125) (end -10.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.5 -0.4125) (end -10.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.5 -1.6125) (end -10.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.5 -1.1125) (end -10.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.5 -1.1125) (end -11 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -11 -1.1125) (end -11 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -11 -1.1125) (end -10.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.5 -0.4125) (end -10.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -10.5 -0.4125) (end -11 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -11 -0.4125) (end -11 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -11 -0.4125) (end -10.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 11 0.7375) (end 11 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 11 -1.6125) (end 10.1 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.5 -1.6125) (end 10.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.5 -0.4125) (end 10.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.5 -0.4125) (end 10.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.5 -1.6125) (end 10.5 -1.6125) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.5 -1.1125) (end 10.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.5 -1.1125) (end 11 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 11 -1.1125) (end 11 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 11 -1.1125) (end 10.5 -1.1125) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.5 -0.4125) (end 10.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 10.5 -0.4125) (end 11 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 11 -0.4125) (end 11 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start 11 -0.4125) (end 10.5 -0.4125) (layer F.SilkS) (width 0.15)) - (fp_line (start -11.9 3.35) (end -11.9 -3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start -11.9 -3.25) (end 11.9 -3.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start 11.9 -3.25) (end 11.9 3.35) (layer F.CrtYd) (width 0.05)) - (fp_line (start 11.9 3.35) (end -11.9 3.35) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at -9.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at -8.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd rect (at -7.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd rect (at -6.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd rect (at -5.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd rect (at -4.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd rect (at -3.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd rect (at -2.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 9 smd rect (at -1.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 10 smd rect (at -0.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 11 smd rect (at 0.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 12 smd rect (at 1.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 13 smd rect (at 2.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 14 smd rect (at 3.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 15 smd rect (at 4.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 16 smd rect (at 5.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 17 smd rect (at 6.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 18 smd rect (at 7.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 19 smd rect (at 8.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad 20 smd rect (at 9.5 -1.9375) (size 0.6 1.55) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at -10.8 1.9375) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) - (pad "" smd rect (at 10.8 1.9375) (size 1.2 1.8) (drill 0) (layers F.Cu F.Paste F.Mask)) -) diff --git a/KiCAD/Connectors_JST.pretty/README.md b/KiCAD/Connectors_JST.pretty/README.md deleted file mode 100644 index a40f4283..00000000 --- a/KiCAD/Connectors_JST.pretty/README.md +++ /dev/null @@ -1 +0,0 @@ -# Connectors_JST_PH.pretty diff --git a/KiCAD/Connectors_JST.pretty/w_connectors.dcm b/KiCAD/Connectors_JST.pretty/w_connectors.dcm deleted file mode 100644 index 642ac1c7..00000000 --- a/KiCAD/Connectors_JST.pretty/w_connectors.dcm +++ /dev/null @@ -1,73 +0,0 @@ -EESchema-DOCLIB Version 2.0 -# -$CMP DB-100 -K CONN -$ENDCMP -# -$CMP DB-15 -K CONN -$ENDCMP -# -$CMP DB-25 -K CONN -$ENDCMP -# -$CMP DB-26 -K CONN -$ENDCMP -# -$CMP DB-28 -K CONN -$ENDCMP -# -$CMP DB-37 -K CONN -$ENDCMP -# -$CMP DB-50 -K CONN -$ENDCMP -# -$CMP DB-68 -K CONN -$ENDCMP -# -$CMP DB-9 -K CONN -$ENDCMP -# -$CMP RasPI_IO_Header_B+ -D Raspberry PI B+/2 GPIO header -$ENDCMP -# -$CMP STM32F0_Discovery_Header -D STM32F0 Discovery Header -$ENDCMP -# -$CMP STM32F3_Discovery_Header -D STM32F3 Discovery Header -$ENDCMP -# -$CMP STM32F4_Discovery_Header -D STM32F4 Discovery Header -$ENDCMP -# -$CMP STM32VL_Discovery_Header -D STM32VL Discovery Header -$ENDCMP -# -$CMP USB-B -D USB B-TYPE connector -K USB -$ENDCMP -# -$CMP dc_jack -D DC power jack -$ENDCMP -# -$CMP rj45_wurth-7499211122a -D RJ45 + Transformer 10/100BaseT PoE -F /home/walter/Documenti/Elettronica/DATA_SHEET/Meccanici/Connettori/altro/WURTH_7499211122A.pdf -$ENDCMP -# -#End Doc Library diff --git a/KiCAD/Connectors_JST.pretty/w_connectors.lib b/KiCAD/Connectors_JST.pretty/w_connectors.lib deleted file mode 100644 index 1149ea34..00000000 --- a/KiCAD/Connectors_JST.pretty/w_connectors.lib +++ /dev/null @@ -1,6400 +0,0 @@ -EESchema-LIBRARY Version 2.3 -#encoding utf-8 -# -# Arduino_Header -# -DEF Arduino_Header J 0 1 Y Y 1 F N -F0 "J" 0 1000 60 H V C CNN -F1 "Arduino_Header" 0 -1000 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 250 -950 -250 950 0 1 0 N -X IOREF 2 -350 600 100 R 35 30 1 1 P -X RESET 3 -350 500 100 R 35 31 1 1 P -X 3.3V 4 -350 400 100 R 35 39 1 1 P -X 5V 5 -350 300 100 R 35 39 1 1 P -X GND 6 -350 200 100 R 35 39 1 1 P -X GND 7 -350 100 100 R 35 39 1 1 P -X VIN 8 -350 0 100 R 35 39 1 1 P -X AD0 9 -350 -200 100 R 35 30 1 1 P -X AD1 10 -350 -300 100 R 35 30 1 1 P -X T1/PWM/IO5 20 350 -400 100 L 35 30 1 1 P -X AREF 30 350 700 100 L 35 30 1 1 P -X AD2 11 -350 -400 100 R 35 30 1 1 P -X AIN0/PWM/IO6 21 350 -300 100 L 35 30 1 1 P -X AD4/SDA 31 350 800 100 L 35 30 1 1 P -X AD3 12 -350 -500 100 R 35 30 1 1 P -X AIN1/IO7 22 350 -200 100 L 35 30 1 1 P -X AD5/SCL 32 350 900 100 L 35 30 1 1 P -X AD4/SDA 13 -350 -600 100 R 35 30 1 1 P -X ICP/IO8 23 350 0 100 L 35 30 1 1 P -X AD5/SCL 14 -350 -700 100 R 35 30 1 1 P -X OC1/PWM/IO9 24 350 100 100 L 35 30 1 1 P -X RX/IO0 15 350 -900 100 L 35 30 1 1 P -X SS/PWM/IO10 25 350 200 100 L 35 30 1 1 P -X TX/IO1 16 350 -800 100 L 35 30 1 1 P -X MOSI/PWM/IO11 26 350 300 100 L 35 30 1 1 P -X INT0/IO2 17 350 -700 100 L 35 30 1 1 P -X MISO/IO12 27 350 400 100 L 35 30 1 1 P -X INT1/IO3 18 350 -600 100 L 35 30 1 1 P -X SCK/IO13 28 350 500 100 L 35 30 1 1 P -X T0/IO4 19 350 -500 100 L 35 30 1 1 P -X GND 29 350 600 100 L 35 30 1 1 P -ENDDRAW -ENDDEF -# -# Arduino_Mega_Header -# -DEF Arduino_Mega_Header J 0 1 Y Y 1 F N -F0 "J" 0 1250 60 H V C CNN -F1 "Arduino_Mega_Header" 0 -1250 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 400 -1200 -400 1200 0 1 0 N -P 2 0 1 0 -340 480 -380 480 N -P 4 0 1 0 400 220 -20 220 -280 480 -400 480 N -X IOREF 2 -500 1150 100 R 27 30 1 1 P -X RESET 3 -550 1100 150 R 27 30 1 1 P -X 3.3V 4 -500 1050 100 R 27 39 1 1 P -X 5V 5 -550 1000 150 R 27 39 1 1 P -X GND 6 -500 950 100 R 27 39 1 1 P -X GND 7 -550 900 150 R 27 39 1 1 P -X VIN 8 -500 850 100 R 27 39 1 1 P -X AD0 9 -550 750 150 R 27 30 1 1 P -X AD1 10 -500 700 100 R 27 30 1 1 P -X AD11/TXD3 20 -500 150 100 R 27 30 1 1 P -X PIN44 30 -500 -850 100 R 27 30 1 1 P -X PIN24 40 -500 -350 100 R 27 30 1 1 P -X PIN41 50 550 -800 150 L 27 30 1 1 P -X 5V 60 550 -300 150 L 27 39 1 1 P -X TX/UTXD/1 70 550 300 150 L 27 30 1 1 P -X PWM11/11 80 550 850 150 L 27 30 1 1 P -X AD2 11 -550 650 150 R 27 30 1 1 P -X DAC0/CANRX1 21 -550 100 150 R 27 30 1 1 P -X PIN42 31 -550 -800 150 R 27 30 1 1 P -X PIN22 41 -550 -300 150 R 27 30 1 1 P -X PIN39 51 500 -750 100 L 27 30 1 1 P -X SCL0-3/TWCK1/21 61 500 -200 100 L 27 30 1 1 P -X PWM2/2 71 500 350 100 L 27 30 1 1 P -X PWM12/12 81 500 900 100 L 27 30 1 1 P -X AD3 12 -500 600 100 R 27 30 1 1 P -X DAC1 22 -500 50 100 R 27 30 1 1 P -X PIN40 32 -500 -750 100 R 27 30 1 1 P -X 5V 42 -500 -250 100 R 27 39 1 1 P -X PIN37 52 550 -700 150 L 27 30 1 1 P -X SDA0-3/TWD1/20 62 550 -150 150 L 27 30 1 1 P -X PWM3/3 72 550 400 150 L 27 30 1 1 P -X PWM13/13 82 550 950 150 L 27 30 1 1 P -X AD4 13 -550 550 150 R 27 30 1 1 P -X CANRX0 23 -550 0 150 R 27 30 1 1 P -X PIN38 33 -550 -700 150 R 27 30 1 1 P -X GND 43 500 -1150 100 L 27 39 1 1 P -X PIN35 53 500 -650 100 L 27 30 1 1 P -X RXD2/19 63 500 -100 100 L 27 30 1 1 P -X SS1/PWM4/SD-CS/4 73 500 450 100 L 27 30 1 1 P -X GND 83 500 1000 100 L 27 39 1 1 P -X AD5 14 -500 500 100 R 27 30 1 1 P -X CANTX1 24 -500 -50 100 R 27 30 1 1 P -X PIN36 34 -500 -650 100 R 27 30 1 1 P -X CANTX1/IO/PIN53 44 550 -1100 150 L 27 30 1 1 P -X PIN33 54 550 -600 150 L 27 30 1 1 P -X TXD2/18 64 550 -50 150 L 27 30 1 1 P -X PWM5/5 74 550 500 150 L 27 30 1 1 P -X AREF 84 550 1050 150 L 27 30 1 1 P -X AD6 15 -550 450 150 R 27 30 1 1 P -X GND 25 -550 -1100 150 R 27 39 1 1 P -X PIN34 35 -550 -600 150 R 27 30 1 1 P -X PIN51 45 500 -1050 100 L 27 30 1 1 P -X PIN31 55 500 -550 100 L 27 30 1 1 P -X RXD1/17 65 500 0 100 L 27 30 1 1 P -X PWM6/6 75 500 550 100 L 27 30 1 1 P -X SDA1/TWD0 85 500 1100 100 L 27 30 1 1 P -X AD7 16 -500 400 100 R 27 30 1 1 P -X PIN52/AD14/RXD3 26 -500 -1050 100 R 27 30 1 1 P -X PIN32 36 -500 -550 100 R 27 30 1 1 P -X PIN49 46 550 -1000 150 L 27 30 1 1 P -X PIN29 56 550 -500 150 L 27 30 1 1 P -X TXD1/16 66 550 50 150 L 27 30 1 1 P -X PWM7/7 76 550 600 150 L 27 30 1 1 P -X SCL1/TWCK0 86 550 1150 150 L 27 30 1 1 P -X AD8 17 -550 300 150 R 27 30 1 1 P -X PIN50 27 -550 -1000 150 R 27 30 1 1 P -X PIN30 37 -550 -500 150 R 27 30 1 1 P -X PIN47 47 500 -950 100 L 27 30 1 1 P -X PIN27 57 500 -450 100 L 27 30 1 1 P -X RXD0/15 67 500 100 100 L 27 30 1 1 P -X PWM8/8 77 500 700 100 L 27 30 1 1 P -X AD9 18 -500 250 100 R 27 30 1 1 P -X PIN48 28 -500 -950 100 R 27 30 1 1 P -X PIN28 38 -500 -450 100 R 27 30 1 1 P -X PIN45 48 550 -900 150 L 27 30 1 1 P -X PIN25 58 550 -400 150 L 27 30 1 1 P -X TXD0/14 68 550 150 150 L 27 30 1 1 P -X PWM9/9 78 550 750 150 L 27 30 1 1 P -X AD10 19 -550 200 150 R 27 30 1 1 P -X PIN46 29 -550 -900 150 R 27 30 1 1 P -X PIN26 39 -550 -400 150 R 27 30 1 1 P -X PIN43 49 500 -850 100 L 27 30 1 1 P -X PIN23 59 500 -350 100 L 27 30 1 1 P -X RX/URXD/0 69 500 250 100 L 27 30 1 1 P -X SS0/PWM10/ETH-CS/10 79 500 800 100 L 27 30 1 1 P -ENDDRAW -ENDDEF -# -# Arduino_Nano_Header -# -DEF Arduino_Nano_Header J 0 1 Y Y 1 F N -F0 "J" 0 800 60 H V C CNN -F1 "Arduino_Nano_Header" 0 -800 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 250 -750 -250 750 0 1 0 N -X D1/TX 1 -350 700 100 R 35 31 1 1 P -X D0/RX 2 -350 600 100 R 35 31 1 1 P -X RESET 3 -350 500 100 R 35 31 1 1 P -X GND 4 -350 400 100 R 35 39 1 1 P -X D2/INT0 5 -350 300 100 R 35 30 1 1 P -X D3/INT1 6 -350 200 100 R 35 30 1 1 P -X D4/T0 7 -350 100 100 R 35 30 1 1 P -X D5/T1 8 -350 0 100 R 35 30 1 1 P -X D6/AIN0 9 -350 -100 100 R 35 30 1 1 P -X D7/AIN1 10 -350 -200 100 R 35 30 1 1 P -X A1 20 350 -300 100 L 35 30 1 1 P -X VIN 30 350 700 100 L 35 39 1 1 P -X D8/ICP 11 -350 -300 100 R 35 30 1 1 P -X A2 21 350 -200 100 L 35 30 1 1 P -X D9/0C1 12 -350 -400 100 R 35 30 1 1 P -X A3 22 350 -100 100 L 35 30 1 1 P -X D10/SS 13 -350 -500 100 R 35 30 1 1 P -X A4 23 350 0 100 L 35 30 1 1 P -X D11/MOSI 14 -350 -600 100 R 35 30 1 1 P -X A5 24 350 100 100 L 35 30 1 1 P -X D12/MISO 15 -350 -700 100 R 35 30 1 1 P -X A6 25 350 200 100 L 35 30 1 1 P -X SCK/D13 16 350 -700 100 L 35 30 1 1 P -X A7 26 350 300 100 L 35 30 1 1 P -X 3V3 17 350 -600 100 L 35 39 1 1 P -X 5V 27 350 400 100 L 35 39 1 1 P -X AREF 18 350 -500 100 L 35 30 1 1 P -X RESET 28 350 500 100 L 35 30 1 1 P -X A0 19 350 -400 100 L 35 30 1 1 P -X GND 29 350 600 100 L 35 39 1 1 P -ENDDRAW -ENDDEF -# -# DB-100 -# -DEF DB-100 J 0 40 Y N 1 F N -F0 "J" 0 1325 70 H V C CNN -F1 "DB-100" 0 -1350 70 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -$FPLIST - DB37* -$ENDFPLIST -DRAW -A -50 -1245 31 -1615 -1084 0 1 0 N -80 -1255 -60 -1275 -A -50 1245 31 1615 1084 0 1 0 N -80 1255 -60 1275 -A 51 -1264 31 -918 -207 0 1 0 N 50 -1295 80 -1275 -A 51 1264 31 207 918 0 1 0 N 80 1275 50 1295 -C -30 -1225 22 0 1 0 N -C -30 -1175 22 0 1 0 N -C -30 -1125 22 0 1 0 N -C -30 -1075 22 0 1 0 N -C -30 -1025 22 0 1 0 N -C -30 -975 22 0 1 0 N -C -30 -925 22 0 1 0 N -C -30 -875 22 0 1 0 N -C -30 -825 22 0 1 0 N -C -30 -775 22 0 1 0 N -C -30 -725 22 0 1 0 N -C -30 -675 22 0 1 0 N -C -30 -625 22 0 1 0 N -C -30 -575 22 0 1 0 N -C -30 -525 22 0 1 0 N -C -30 -475 22 0 1 0 N -C -30 -425 22 0 1 0 N -C -30 -375 22 0 1 0 N -C -30 -325 22 0 1 0 N -C -30 -275 22 0 1 0 N -C -30 -225 22 0 1 0 N -C -30 -175 22 0 1 0 N -C -30 -125 22 0 1 0 N -C -30 -75 22 0 1 0 N -C -30 -25 22 0 1 0 N -C -30 25 22 0 1 0 N -C -30 75 22 0 1 0 N -C -30 125 22 0 1 0 N -C -30 175 22 0 1 0 N -C -30 225 22 0 1 0 N -C -30 275 22 0 1 0 N -C -30 325 22 0 1 0 N -C -30 375 22 0 1 0 N -C -30 425 22 0 1 0 N -C -30 475 22 0 1 0 N -C -30 525 22 0 1 0 N -C -30 575 22 0 1 0 N -C -30 625 22 0 1 0 N -C -30 675 22 0 1 0 N -C -30 725 22 0 1 0 N -C -30 775 22 0 1 0 N -C -30 825 22 0 1 0 N -C -30 875 22 0 1 0 N -C -30 925 22 0 1 0 N -C -30 975 22 0 1 0 N -C -30 1025 22 0 1 0 N -C -30 1075 22 0 1 0 N -C -30 1125 22 0 1 0 N -C -30 1175 22 0 1 0 N -C -30 1225 22 0 1 0 N -C 30 -1225 22 0 1 0 N -C 30 -1175 22 0 1 0 N -C 30 -1125 22 0 1 0 N -C 30 -1075 22 0 1 0 N -C 30 -1025 22 0 1 0 N -C 30 -975 22 0 1 0 N -C 30 -925 22 0 1 0 N -C 30 -875 22 0 1 0 N -C 30 -825 22 0 1 0 N -C 30 -775 22 0 1 0 N -C 30 -725 22 0 1 0 N -C 30 -675 22 0 1 0 N -C 30 -625 22 0 1 0 N -C 30 -575 22 0 1 0 N -C 30 -525 22 0 1 0 N -C 30 -475 22 0 1 0 N -C 30 -425 22 0 1 0 N -C 30 -375 22 0 1 0 N -C 30 -325 22 0 1 0 N -C 30 -275 22 0 1 0 N -C 30 -225 22 0 1 0 N -C 30 -175 22 0 1 0 N -C 30 -125 22 0 1 0 N -C 30 -75 22 0 1 0 N -C 30 -25 22 0 1 0 N -C 30 25 22 0 1 0 N -C 30 75 22 0 1 0 N -C 30 125 22 0 1 0 N -C 30 175 22 0 1 0 N -C 30 225 22 0 1 0 N -C 30 275 22 0 1 0 N -C 30 325 22 0 1 0 N -C 30 375 22 0 1 0 N -C 30 425 22 0 1 0 N -C 30 475 22 0 1 0 N -C 30 525 22 0 1 0 N -C 30 575 22 0 1 0 N -C 30 625 22 0 1 0 N -C 30 675 22 0 1 0 N -C 30 725 22 0 1 0 N -C 30 775 22 0 1 0 N -C 30 825 22 0 1 0 N -C 30 875 22 0 1 0 N -C 30 925 22 0 1 0 N -C 30 975 22 0 1 0 N -C 30 1025 22 0 1 0 N -C 30 1075 22 0 1 0 N -C 30 1125 22 0 1 0 N -C 30 1175 22 0 1 0 N -C 30 1225 22 0 1 0 N -P 2 0 1 0 -80 -1255 -80 1255 N -P 2 0 1 0 80 1275 80 -1275 N -P 3 0 1 0 -60 -1275 50 -1295 50 -1295 N -P 3 0 1 0 -60 1275 50 1295 50 1295 N -X ~ 1 175 1225 122 L 30 30 1 1 P -X ~ 2 175 1175 122 L 28 28 1 1 P -X ~ 3 175 1125 122 L 28 28 1 1 P -X ~ 4 175 1075 122 L 30 30 1 1 P -X ~ 5 175 1025 122 L 30 30 1 1 P -X ~ 6 175 975 122 L 30 30 1 1 P -X ~ 7 175 925 122 L 30 30 1 1 P -X ~ 8 175 875 122 L 30 30 1 1 P -X ~ 9 175 825 122 L 30 30 1 1 P -X ~ 10 175 775 122 L 30 30 1 1 P -X ~ 20 175 275 122 L 28 28 1 1 P -X ~ 30 175 -225 122 L 28 28 1 1 P -X ~ 40 175 -725 122 L 28 28 1 1 P -X ~ 50 175 -1225 122 L 28 28 1 1 P -X ~ 60 -175 775 122 R 28 28 1 1 P -X ~ 70 -175 275 122 R 28 28 1 1 P -X ~ 80 -175 -225 122 R 28 28 1 1 P -X ~ 90 -175 -725 122 R 28 28 1 1 P -X ~ 11 175 725 122 L 30 30 1 1 P -X ~ 21 175 225 122 L 28 28 1 1 P -X ~ 31 175 -275 122 L 28 28 1 1 P -X ~ 41 175 -775 122 L 28 28 1 1 P -X ~ 51 -175 1225 122 R 28 28 1 1 P -X ~ 61 -175 725 122 R 28 28 1 1 P -X ~ 71 -175 225 122 R 28 28 1 1 P -X ~ 81 -175 -275 122 R 28 28 1 1 P -X ~ 91 -175 -775 122 R 28 28 1 1 P -X ~ 12 175 675 122 L 30 30 1 1 P -X ~ 22 175 175 122 L 28 28 1 1 P -X ~ 32 175 -325 122 L 28 28 1 1 P -X ~ 42 175 -825 122 L 28 28 1 1 P -X ~ 52 -175 1175 122 R 28 28 1 1 P -X ~ 62 -175 675 122 R 28 28 1 1 P -X ~ 72 -175 175 122 R 28 28 1 1 P -X ~ 82 -175 -325 122 R 28 28 1 1 P -X ~ 92 -175 -825 122 R 28 28 1 1 P -X ~ 13 175 625 122 L 30 30 1 1 P -X ~ 23 175 125 122 L 28 28 1 1 P -X ~ 33 175 -375 122 L 28 28 1 1 P -X ~ 43 175 -875 122 L 28 28 1 1 P -X ~ 53 -175 1125 122 R 28 28 1 1 P -X ~ 63 -175 625 122 R 28 28 1 1 P -X ~ 73 -175 125 122 R 28 28 1 1 P -X ~ 83 -175 -375 122 R 28 28 1 1 P -X ~ 93 -175 -875 122 R 28 28 1 1 P -X ~ 14 175 575 122 L 28 28 1 1 P -X ~ 24 175 75 122 L 28 28 1 1 P -X ~ 34 175 -425 122 L 28 28 1 1 P -X ~ 44 175 -925 122 L 28 28 1 1 P -X ~ 54 -175 1075 122 R 28 28 1 1 P -X ~ 64 -175 575 122 R 28 28 1 1 P -X ~ 74 -175 75 122 R 28 28 1 1 P -X ~ 84 -175 -425 122 R 28 28 1 1 P -X ~ 94 -175 -925 122 R 28 28 1 1 P -X ~ 15 175 525 122 L 28 28 1 1 P -X ~ 25 175 25 122 L 28 28 1 1 P -X ~ 35 175 -475 122 L 28 28 1 1 P -X ~ 45 175 -975 122 L 28 28 1 1 P -X ~ 55 -175 1025 122 R 28 28 1 1 P -X ~ 65 -175 525 122 R 28 28 1 1 P -X ~ 75 -175 25 122 R 28 28 1 1 P -X ~ 85 -175 -475 122 R 28 28 1 1 P -X ~ 95 -175 -975 122 R 28 28 1 1 P -X ~ 16 175 475 122 L 28 28 1 1 P -X ~ 26 175 -25 122 L 28 28 1 1 P -X ~ 36 175 -525 122 L 28 28 1 1 P -X ~ 46 175 -1025 122 L 28 28 1 1 P -X ~ 56 -175 975 122 R 28 28 1 1 P -X ~ 66 -175 475 122 R 28 28 1 1 P -X ~ 76 -175 -25 122 R 28 28 1 1 P -X ~ 86 -175 -525 122 R 28 28 1 1 P -X ~ 96 -175 -1025 122 R 28 28 1 1 P -X ~ 17 175 425 122 L 28 28 1 1 P -X ~ 27 175 -75 122 L 28 28 1 1 P -X ~ 37 175 -575 122 L 28 28 1 1 P -X ~ 47 175 -1075 122 L 28 28 1 1 P -X ~ 57 -175 925 122 R 28 28 1 1 P -X ~ 67 -175 425 122 R 28 28 1 1 P -X ~ 77 -175 -75 122 R 28 28 1 1 P -X ~ 87 -175 -575 122 R 28 28 1 1 P -X ~ 97 -175 -1075 122 R 28 28 1 1 P -X ~ 18 175 375 122 L 28 28 1 1 P -X ~ 28 175 -125 122 L 28 28 1 1 P -X ~ 38 175 -625 122 L 28 28 1 1 P -X ~ 48 175 -1125 122 L 28 28 1 1 P -X ~ 58 -175 875 122 R 28 28 1 1 P -X ~ 68 -175 375 122 R 28 28 1 1 P -X ~ 78 -175 -125 122 R 28 28 1 1 P -X ~ 88 -175 -625 122 R 28 28 1 1 P -X ~ 98 -175 -1125 122 R 28 28 1 1 P -X ~ 19 175 325 122 L 28 28 1 1 P -X ~ 29 175 -175 122 L 28 28 1 1 P -X ~ 39 175 -675 122 L 28 28 1 1 P -X ~ 49 175 -1175 122 L 28 28 1 1 P -X ~ 59 -175 825 122 R 28 28 1 1 P -X ~ 69 -175 325 122 R 28 28 1 1 P -X ~ 79 -175 -175 122 R 28 28 1 1 P -X ~ 89 -175 -675 122 R 28 28 1 1 P -X ~ 99 -175 -1175 122 R 28 28 1 1 P -X ~ 100 -175 -1225 122 R 28 28 1 1 P -ENDDRAW -ENDDEF -# -# DB-15 -# -DEF DB-15 J 0 40 Y N 1 F N -F0 "J" 0 500 70 H V C CNN -F1 "DB-15" 0 -500 70 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -$FPLIST - DB37* -$ENDFPLIST -DRAW -A -50 -370 31 -1615 -1084 0 1 0 N -80 -380 -60 -400 -A -50 370 31 1615 1084 0 1 0 N -80 380 -60 400 -A 51 -389 31 -918 -207 0 1 0 N 50 -420 80 -400 -A 51 389 31 207 918 0 1 0 N 80 400 50 420 -C -30 -300 22 0 1 0 N -C -30 -200 22 0 1 0 N -C -30 -100 22 0 1 0 N -C -30 0 22 0 1 0 N -C -30 100 22 0 1 0 N -C -30 200 22 0 1 0 N -C -30 300 22 0 1 0 N -C 30 -350 22 0 1 0 N -C 30 -250 22 0 1 0 N -C 30 -150 22 0 1 0 N -C 30 -50 22 0 1 0 N -C 30 50 22 0 1 0 N -C 30 150 22 0 1 0 N -C 30 250 22 0 1 0 N -C 30 350 22 0 1 0 N -P 2 0 1 0 -52 -350 8 -350 N -P 2 0 1 0 -52 -250 8 -250 N -P 2 0 1 0 -52 -150 8 -150 N -P 2 0 1 0 -52 -50 8 -50 N -P 2 0 1 0 -52 50 8 50 N -P 2 0 1 0 -52 150 8 150 N -P 2 0 1 0 -52 250 8 250 N -P 2 0 1 0 -52 350 8 350 N -P 3 0 1 0 -80 380 -80 -380 -80 -380 N -P 3 0 1 0 -60 -400 50 -420 50 -420 N -P 3 0 1 0 -60 400 50 420 50 420 N -P 3 0 1 0 80 -400 80 400 80 400 N -X ~ 1 -150 350 98 R 30 30 1 1 P -X ~ 2 -150 250 98 R 30 30 1 1 P -X ~ 3 -150 150 98 R 30 30 1 1 P -X ~ 4 -150 50 98 R 30 30 1 1 P -X ~ 5 -150 -50 98 R 30 30 1 1 P -X ~ 6 -150 -150 98 R 30 30 1 1 P -X ~ 7 -150 -250 98 R 30 30 1 1 P -X ~ 8 -150 -350 98 R 30 30 1 1 P -X ~ 9 -150 300 98 R 30 30 1 1 P -X ~ 10 -150 200 98 R 30 30 1 1 P -X ~ 11 -150 100 98 R 30 30 1 1 P -X ~ 12 -150 0 98 R 30 30 1 1 P -X ~ 13 -150 -100 98 R 30 30 1 1 P -X ~ 14 -150 -200 98 R 30 30 1 1 P -X ~ 15 -150 -300 98 R 30 30 1 1 P -ENDDRAW -ENDDEF -# -# DB-25 -# -DEF DB-25 J 0 40 Y N 1 F N -F0 "J" 0 750 70 H V C CNN -F1 "DB-25" 0 -750 70 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -$FPLIST - DB37* -$ENDFPLIST -DRAW -A -50 -620 31 -1615 -1084 0 1 0 N -80 -630 -60 -650 -A -50 620 31 1615 1084 0 1 0 N -80 630 -60 650 -A 51 -639 31 -918 -207 0 1 0 N 50 -670 80 -650 -A 51 639 31 207 918 0 1 0 N 80 650 50 670 -C -30 -550 22 0 1 0 N -C -30 -450 22 0 1 0 N -C -30 -350 22 0 1 0 N -C -30 -250 22 0 1 0 N -C -30 -150 22 0 1 0 N -C -30 -50 22 0 1 0 N -C -30 50 22 0 1 0 N -C -30 150 22 0 1 0 N -C -30 250 22 0 1 0 N -C -30 350 22 0 1 0 N -C -30 450 22 0 1 0 N -C -30 550 22 0 1 0 N -C 30 -600 22 0 1 0 N -C 30 -500 22 0 1 0 N -C 30 -400 22 0 1 0 N -C 30 -300 22 0 1 0 N -C 30 -200 22 0 1 0 N -C 30 -100 22 0 1 0 N -C 30 0 22 0 1 0 N -C 30 100 22 0 1 0 N -C 30 200 22 0 1 0 N -C 30 300 22 0 1 0 N -C 30 400 22 0 1 0 N -C 30 500 22 0 1 0 N -C 30 600 22 0 1 0 N -P 2 0 1 0 -52 -600 8 -600 N -P 2 0 1 0 -52 -500 8 -500 N -P 2 0 1 0 -52 -400 8 -400 N -P 2 0 1 0 -52 -300 8 -300 N -P 2 0 1 0 -52 -200 8 -200 N -P 2 0 1 0 -52 -100 8 -100 N -P 2 0 1 0 -52 0 8 0 N -P 2 0 1 0 -52 100 8 100 N -P 2 0 1 0 -52 200 8 200 N -P 2 0 1 0 -52 300 8 300 N -P 2 0 1 0 -52 400 8 400 N -P 2 0 1 0 -52 500 8 500 N -P 2 0 1 0 -52 600 8 600 N -P 3 0 1 0 -80 630 -80 -630 -80 -630 N -P 3 0 1 0 -60 -650 50 -670 50 -670 N -P 3 0 1 0 -60 650 50 670 50 670 N -P 3 0 1 0 80 -650 80 650 80 650 N -X ~ 1 -150 600 98 R 30 30 1 1 P -X ~ 2 -150 500 98 R 30 30 1 1 P -X ~ 3 -150 400 98 R 30 30 1 1 P -X ~ 4 -150 300 98 R 30 30 1 1 P -X ~ 5 -150 200 98 R 30 30 1 1 P -X ~ 6 -150 100 98 R 30 30 1 1 P -X ~ 7 -150 0 98 R 30 30 1 1 P -X ~ 8 -150 -100 98 R 30 30 1 1 P -X ~ 9 -150 -200 98 R 30 30 1 1 P -X ~ 10 -150 -300 98 R 30 30 1 1 P -X ~ 20 -150 -50 98 R 30 30 1 1 P -X ~ 11 -150 -400 98 R 30 30 1 1 P -X ~ 21 -150 -150 98 R 30 30 1 1 P -X ~ 12 -150 -500 98 R 30 30 1 1 P -X ~ 22 -150 -250 98 R 30 30 1 1 P -X ~ 13 -150 -600 98 R 30 30 1 1 P -X ~ 23 -150 -350 98 R 30 30 1 1 P -X ~ 14 -150 550 98 R 30 30 1 1 P -X ~ 24 -150 -450 98 R 30 30 1 1 P -X ~ 15 -150 450 98 R 30 30 1 1 P -X ~ 25 -150 -550 98 R 30 30 1 1 P -X ~ 16 -150 350 98 R 30 30 1 1 P -X ~ 17 -150 250 98 R 30 30 1 1 P -X ~ 18 -150 150 98 R 30 30 1 1 P -X ~ 19 -150 50 98 R 30 30 1 1 P -ENDDRAW -ENDDEF -# -# DB-26 -# -DEF DB-26 J 0 40 Y N 1 F N -F0 "J" 0 400 70 H V C CNN -F1 "DB-26" 0 -425 70 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -$FPLIST - DB37* -$ENDFPLIST -DRAW -A -50 -320 31 -1615 -1084 0 1 0 N -80 -330 -60 -350 -A -50 320 31 1615 1084 0 1 0 N -80 330 -60 350 -A 51 -339 31 -918 -207 0 1 0 N 50 -370 80 -350 -A 51 339 31 207 918 0 1 0 N 80 350 50 370 -C -30 -300 22 0 1 0 N -C -30 -250 22 0 1 0 N -C -30 -200 22 0 1 0 N -C -30 -150 22 0 1 0 N -C -30 -100 22 0 1 0 N -C -30 -50 22 0 1 0 N -C -30 0 22 0 1 0 N -C -30 50 22 0 1 0 N -C -30 100 22 0 1 0 N -C -30 150 22 0 1 0 N -C -30 200 22 0 1 0 N -C -30 250 22 0 1 0 N -C -30 300 22 0 1 0 N -C 30 -300 22 0 1 0 N -C 30 -250 22 0 1 0 N -C 30 -200 22 0 1 0 N -C 30 -150 22 0 1 0 N -C 30 -100 22 0 1 0 N -C 30 -50 22 0 1 0 N -C 30 0 22 0 1 0 N -C 30 50 22 0 1 0 N -C 30 100 22 0 1 0 N -C 30 150 22 0 1 0 N -C 30 200 22 0 1 0 N -C 30 250 22 0 1 0 N -C 30 300 22 0 1 0 N -P 2 0 1 0 -80 -330 -80 330 N -P 2 0 1 0 80 350 80 -350 N -P 3 0 1 0 -60 -350 50 -370 50 -370 N -P 3 0 1 0 -60 350 50 370 50 370 N -X ~ 1 175 300 122 L 30 30 1 1 P -X ~ 2 175 250 122 L 28 28 1 1 P -X ~ 3 175 200 122 L 28 28 1 1 P -X ~ 4 175 150 122 L 30 30 1 1 P -X ~ 5 175 100 122 L 30 30 1 1 P -X ~ 6 175 50 122 L 30 30 1 1 P -X ~ 7 175 0 122 L 30 30 1 1 P -X ~ 8 175 -50 122 L 30 30 1 1 P -X ~ 9 175 -100 122 L 30 30 1 1 P -X ~ 10 175 -150 122 L 30 30 1 1 P -X ~ 20 -175 0 122 R 28 28 1 1 P -X ~ 11 175 -200 122 L 30 30 1 1 P -X ~ 21 -175 -50 122 R 28 28 1 1 P -X ~ 12 175 -250 122 L 30 30 1 1 P -X ~ 22 -175 -100 122 R 28 28 1 1 P -X ~ 13 175 -300 122 L 30 30 1 1 P -X ~ 23 -175 -150 122 R 28 28 1 1 P -X ~ 14 -175 300 122 R 28 28 1 1 P -X ~ 24 -175 -200 122 R 28 28 1 1 P -X ~ 15 -175 250 122 R 28 28 1 1 P -X ~ 25 -175 -250 122 R 28 28 1 1 P -X ~ 16 -175 200 122 R 28 28 1 1 P -X ~ 26 -175 -300 122 R 28 28 1 1 P -X ~ 17 -175 150 122 R 28 28 1 1 P -X ~ 18 -175 100 122 R 28 28 1 1 P -X ~ 19 -175 50 122 R 28 28 1 1 P -ENDDRAW -ENDDEF -# -# DB-28 -# -DEF DB-28 J 0 40 Y N 1 F N -F0 "J" 0 425 70 H V C CNN -F1 "DB-28" 0 -450 70 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -$FPLIST - DB37* -$ENDFPLIST -DRAW -A -50 -345 31 -1615 -1084 0 1 0 N -80 -355 -60 -375 -A -50 345 31 1615 1084 0 1 0 N -80 355 -60 375 -A 51 -364 31 -918 -207 0 1 0 N 50 -395 80 -375 -A 51 364 31 207 918 0 1 0 N 80 375 50 395 -C -30 -325 22 0 1 0 N -C -30 -275 22 0 1 0 N -C -30 -225 22 0 1 0 N -C -30 -175 22 0 1 0 N -C -30 -125 22 0 1 0 N -C -30 -75 22 0 1 0 N -C -30 -25 22 0 1 0 N -C -30 25 22 0 1 0 N -C -30 75 22 0 1 0 N -C -30 125 22 0 1 0 N -C -30 175 22 0 1 0 N -C -30 225 22 0 1 0 N -C -30 275 22 0 1 0 N -C -30 325 22 0 1 0 N -C 30 -325 22 0 1 0 N -C 30 -275 22 0 1 0 N -C 30 -225 22 0 1 0 N -C 30 -175 22 0 1 0 N -C 30 -125 22 0 1 0 N -C 30 -75 22 0 1 0 N -C 30 -25 22 0 1 0 N -C 30 25 22 0 1 0 N -C 30 75 22 0 1 0 N -C 30 125 22 0 1 0 N -C 30 175 22 0 1 0 N -C 30 225 22 0 1 0 N -C 30 275 22 0 1 0 N -C 30 325 22 0 1 0 N -P 2 0 1 0 -80 355 -80 -354 N -P 2 0 1 0 80 -375 80 375 N -P 3 0 1 0 -60 -375 50 -395 50 -395 N -P 3 0 1 0 -60 375 50 395 50 395 N -X ~ 1 175 325 122 L 30 30 1 1 P -X ~ 2 175 275 122 L 28 28 1 1 P -X ~ 3 175 225 122 L 28 28 1 1 P -X ~ 4 175 175 122 L 30 30 1 1 P -X ~ 5 175 125 122 L 30 30 1 1 P -X ~ 6 175 75 122 L 30 30 1 1 P -X ~ 7 175 25 122 L 30 30 1 1 P -X ~ 8 175 -25 122 L 30 30 1 1 P -X ~ 9 175 -75 122 L 30 30 1 1 P -X ~ 10 175 -125 122 L 30 30 1 1 P -X ~ 20 -175 75 122 R 28 28 1 1 P -X ~ 11 175 -175 122 L 30 30 1 1 P -X ~ 21 -175 25 122 R 28 28 1 1 P -X ~ 12 175 -225 122 L 30 30 1 1 P -X ~ 22 -175 -25 122 R 28 28 1 1 P -X ~ 13 175 -275 122 L 30 30 1 1 P -X ~ 23 -175 -75 122 R 28 28 1 1 P -X ~ 14 175 -325 122 L 30 30 1 1 P -X ~ 24 -175 -125 122 R 28 28 1 1 P -X ~ 15 -175 325 122 R 28 28 1 1 P -X ~ 25 -175 -175 122 R 28 28 1 1 P -X ~ 16 -175 275 122 R 28 28 1 1 P -X ~ 26 -175 -225 122 R 28 28 1 1 P -X ~ 17 -175 225 122 R 28 28 1 1 P -X ~ 27 -175 -275 122 R 28 28 1 1 P -X ~ 18 -175 175 122 R 28 28 1 1 P -X ~ 28 -175 -325 122 R 28 28 1 1 P -X ~ 19 -175 125 122 R 28 28 1 1 P -ENDDRAW -ENDDEF -# -# DB-37 -# -DEF DB-37 J 0 40 Y N 1 F N -F0 "J" 0 1050 70 H V C CNN -F1 "DB-37" 0 -1050 70 H V C CNN -F2 "" 0 300 60 H V C CNN -F3 "" 0 300 60 H V C CNN -$FPLIST - DB37* -$ENDFPLIST -DRAW -A -50 -920 31 -1615 -1084 0 1 0 N -80 -930 -60 -950 -A -50 920 31 1615 1084 0 1 0 N -80 930 -60 950 -A 51 -939 31 -918 -207 0 1 0 N 50 -970 80 -950 -A 51 939 31 207 918 0 1 0 N 80 950 50 970 -C -30 -850 22 0 1 0 N -C -30 -750 22 0 1 0 N -C -30 -650 22 0 1 0 N -C -30 -550 22 0 1 0 N -C -30 -450 22 0 1 0 N -C -30 -350 22 0 1 0 N -C -30 -250 22 0 1 0 N -C -30 -150 22 0 1 0 N -C -30 -50 22 0 1 0 N -C -30 50 22 0 1 0 N -C -30 150 22 0 1 0 N -C -30 250 22 0 1 0 N -C -30 350 22 0 1 0 N -C -30 450 22 0 1 0 N -C -30 550 22 0 1 0 N -C -30 650 22 0 1 0 N -C -30 750 22 0 1 0 N -C -30 850 22 0 1 0 N -C 30 -900 22 0 1 0 N -C 30 -800 22 0 1 0 N -C 30 -700 22 0 1 0 N -C 30 -600 22 0 1 0 N -C 30 -500 22 0 1 0 N -C 30 -400 22 0 1 0 N -C 30 -300 22 0 1 0 N -C 30 -200 22 0 1 0 N -C 30 -100 22 0 1 0 N -C 30 0 22 0 1 0 N -C 30 100 22 0 1 0 N -C 30 200 22 0 1 0 N -C 30 300 22 0 1 0 N -C 30 400 22 0 1 0 N -C 30 500 22 0 1 0 N -C 30 600 22 0 1 0 N -C 30 700 22 0 1 0 N -C 30 800 22 0 1 0 N -C 30 900 22 0 1 0 N -P 2 0 1 0 -80 930 -80 -930 N -P 2 0 1 0 -52 -900 8 -900 N -P 2 0 1 0 -52 -800 8 -800 N -P 2 0 1 0 -52 -700 8 -700 N -P 2 0 1 0 -52 -600 8 -600 N -P 2 0 1 0 -52 -500 8 -500 N -P 2 0 1 0 -52 -400 8 -400 N -P 2 0 1 0 -52 -300 8 -300 N -P 2 0 1 0 -52 -300 8 -300 N -P 2 0 1 0 -52 -200 8 -200 N -P 2 0 1 0 -52 -100 8 -100 N -P 2 0 1 0 -52 0 8 0 N -P 2 0 1 0 -52 100 8 100 N -P 2 0 1 0 -52 200 8 200 N -P 2 0 1 0 -52 300 8 300 N -P 2 0 1 0 -52 400 8 400 N -P 2 0 1 0 -52 500 8 500 N -P 2 0 1 0 -52 600 8 600 N -P 2 0 1 0 -52 700 8 700 N -P 2 0 1 0 -52 800 8 800 N -P 2 0 1 0 -52 900 8 900 N -P 2 0 1 0 80 950 80 -950 N -P 3 0 1 0 -60 -950 50 -970 50 -970 N -P 3 0 1 0 -60 950 50 970 50 970 N -X ~ 1 -150 900 98 R 30 30 1 1 P -X ~ 2 -150 800 98 R 30 30 1 1 P -X ~ 3 -150 700 98 R 30 30 1 1 P -X ~ 4 -150 600 98 R 30 30 1 1 P -X ~ 5 -150 500 98 R 30 30 1 1 P -X ~ 6 -150 400 98 R 30 30 1 1 P -X ~ 7 -150 300 98 R 30 30 1 1 P -X ~ 8 -150 200 98 R 30 30 1 1 P -X ~ 9 -150 100 98 R 30 30 1 1 P -X ~ 10 -150 0 98 R 30 30 1 1 P -X ~ 20 -150 850 98 R 30 30 1 1 P -X ~ 30 -150 -150 98 R 30 30 1 1 P -X ~ 11 -150 -100 98 R 30 30 1 1 P -X ~ 21 -150 750 98 R 30 30 1 1 P -X ~ 31 -150 -250 98 R 30 30 1 1 P -X ~ 12 -150 -200 98 R 30 30 1 1 P -X ~ 22 -150 650 98 R 30 30 1 1 P -X ~ 32 -150 -350 98 R 30 30 1 1 P -X ~ 13 -150 -300 98 R 30 30 1 1 P -X ~ 23 -150 550 98 R 30 30 1 1 P -X ~ 33 -150 -450 98 R 30 30 1 1 P -X ~ 14 -150 -400 98 R 30 30 1 1 P -X ~ 24 -150 450 98 R 30 30 1 1 P -X ~ 34 -150 -550 98 R 30 30 1 1 P -X ~ 15 -150 -500 98 R 30 30 1 1 P -X ~ 25 -150 350 98 R 30 30 1 1 P -X ~ 35 -150 -650 98 R 30 30 1 1 P -X ~ 16 -150 -600 98 R 30 30 1 1 P -X ~ 26 -150 250 98 R 30 30 1 1 P -X ~ 36 -150 -750 98 R 30 30 1 1 P -X ~ 17 -150 -700 98 R 30 30 1 1 P -X ~ 27 -150 150 98 R 30 30 1 1 P -X ~ 37 -150 -850 98 R 30 30 1 1 P -X ~ 18 -150 -800 98 R 30 30 1 1 P -X ~ 28 -150 50 98 R 30 30 1 1 P -X ~ 19 -150 -900 98 R 30 30 1 1 P -X ~ 29 -150 -50 98 R 30 30 1 1 P -ENDDRAW -ENDDEF -# -# DB-50 -# -DEF DB-50 J 0 40 Y N 1 F N -F0 "J" 0 700 70 H V C CNN -F1 "DB-50" 0 -725 70 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -$FPLIST - DB37* -$ENDFPLIST -DRAW -A -50 -620 31 -1615 -1084 0 1 0 N -80 -630 -60 -650 -A -50 620 31 1615 1084 0 1 0 N -80 630 -60 650 -A 51 -639 31 -918 -207 0 1 0 N 50 -670 80 -650 -A 51 639 31 207 918 0 1 0 N 80 650 50 670 -C -30 -600 22 0 1 0 N -C -30 -550 22 0 1 0 N -C -30 -500 22 0 1 0 N -C -30 -450 22 0 1 0 N -C -30 -400 22 0 1 0 N -C -30 -350 22 0 1 0 N -C -30 -300 22 0 1 0 N -C -30 -250 22 0 1 0 N -C -30 -200 22 0 1 0 N -C -30 -150 22 0 1 0 N -C -30 -100 22 0 1 0 N -C -30 -50 22 0 1 0 N -C -30 0 22 0 1 0 N -C -30 50 22 0 1 0 N -C -30 100 22 0 1 0 N -C -30 150 22 0 1 0 N -C -30 200 22 0 1 0 N -C -30 250 22 0 1 0 N -C -30 300 22 0 1 0 N -C -30 350 22 0 1 0 N -C -30 400 22 0 1 0 N -C -30 450 22 0 1 0 N -C -30 500 22 0 1 0 N -C -30 550 22 0 1 0 N -C -30 600 22 0 1 0 N -C 30 -600 22 0 1 0 N -C 30 -550 22 0 1 0 N -C 30 -500 22 0 1 0 N -C 30 -450 22 0 1 0 N -C 30 -400 22 0 1 0 N -C 30 -350 22 0 1 0 N -C 30 -300 22 0 1 0 N -C 30 -250 22 0 1 0 N -C 30 -200 22 0 1 0 N -C 30 -150 22 0 1 0 N -C 30 -100 22 0 1 0 N -C 30 -50 22 0 1 0 N -C 30 0 22 0 1 0 N -C 30 50 22 0 1 0 N -C 30 100 22 0 1 0 N -C 30 150 22 0 1 0 N -C 30 200 22 0 1 0 N -C 30 250 22 0 1 0 N -C 30 300 22 0 1 0 N -C 30 350 22 0 1 0 N -C 30 400 22 0 1 0 N -C 30 450 22 0 1 0 N -C 30 500 22 0 1 0 N -C 30 550 22 0 1 0 N -C 30 600 22 0 1 0 N -P 2 0 1 0 -80 630 -80 -629 N -P 2 0 1 0 80 -650 80 649 N -P 3 0 1 0 -60 -650 50 -670 50 -670 N -P 3 0 1 0 -60 650 50 670 50 670 N -X ~ 1 175 600 122 L 30 30 1 1 P -X ~ 2 175 550 122 L 28 28 1 1 P -X ~ 3 175 500 122 L 28 28 1 1 P -X ~ 4 175 450 122 L 30 30 1 1 P -X ~ 5 175 400 122 L 30 30 1 1 P -X ~ 6 175 350 122 L 30 30 1 1 P -X ~ 7 175 300 122 L 30 30 1 1 P -X ~ 8 175 250 122 L 30 30 1 1 P -X ~ 9 175 200 122 L 30 30 1 1 P -X ~ 10 175 150 122 L 30 30 1 1 P -X ~ 20 175 -350 122 L 28 28 1 1 P -X ~ 30 -175 400 122 R 28 28 1 1 P -X ~ 40 -175 -100 122 R 28 28 1 1 P -X ~ 50 -175 -600 122 R 28 28 1 1 P -X ~ 11 175 100 122 L 30 30 1 1 P -X ~ 21 175 -400 122 L 28 28 1 1 P -X ~ 31 -175 350 122 R 28 28 1 1 P -X ~ 41 -175 -150 122 R 28 28 1 1 P -X ~ 12 175 50 122 L 30 30 1 1 P -X ~ 22 175 -450 122 L 28 28 1 1 P -X ~ 32 -175 300 122 R 28 28 1 1 P -X ~ 42 -175 -200 122 R 28 28 1 1 P -X ~ 13 175 0 122 L 30 30 1 1 P -X ~ 23 175 -500 122 L 28 28 1 1 P -X ~ 33 -175 250 122 R 28 28 1 1 P -X ~ 43 -175 -250 122 R 28 28 1 1 P -X ~ 14 175 -50 122 L 28 28 1 1 P -X ~ 24 175 -550 122 L 28 28 1 1 P -X ~ 34 -175 200 122 R 28 28 1 1 P -X ~ 44 -175 -300 122 R 28 28 1 1 P -X ~ 15 175 -100 122 L 28 28 1 1 P -X ~ 25 175 -600 122 L 28 28 1 1 P -X ~ 35 -175 150 122 R 28 28 1 1 P -X ~ 45 -175 -350 122 R 28 28 1 1 P -X ~ 16 175 -150 122 L 28 28 1 1 P -X ~ 26 -175 600 122 R 28 28 1 1 P -X ~ 36 -175 100 122 R 28 28 1 1 P -X ~ 46 -175 -400 122 R 28 28 1 1 P -X ~ 17 175 -200 122 L 28 28 1 1 P -X ~ 27 -175 550 122 R 28 28 1 1 P -X ~ 37 -175 50 122 R 28 28 1 1 P -X ~ 47 -175 -450 122 R 28 28 1 1 P -X ~ 18 175 -250 122 L 28 28 1 1 P -X ~ 28 -175 500 122 R 28 28 1 1 P -X ~ 38 -175 0 122 R 28 28 1 1 P -X ~ 48 -175 -500 122 R 28 28 1 1 P -X ~ 19 175 -300 122 L 28 28 1 1 P -X ~ 29 -175 450 122 R 28 28 1 1 P -X ~ 39 -175 -50 122 R 28 28 1 1 P -X ~ 49 -175 -550 122 R 28 28 1 1 P -ENDDRAW -ENDDEF -# -# DB-68 -# -DEF DB-68 J 0 40 Y N 1 F N -F0 "J" 0 925 70 H V C CNN -F1 "DB-68" 0 -950 70 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -$FPLIST - DB37* -$ENDFPLIST -DRAW -A -50 -845 31 -1615 -1084 0 1 0 N -80 -855 -60 -875 -A -50 845 31 1615 1084 0 1 0 N -80 855 -60 875 -A 51 -864 31 -918 -207 0 1 0 N 50 -895 80 -875 -A 51 864 31 207 918 0 1 0 N 80 875 50 895 -C -30 -825 22 0 1 0 N -C -30 -775 22 0 1 0 N -C -30 -725 22 0 1 0 N -C -30 -675 22 0 1 0 N -C -30 -625 22 0 1 0 N -C -30 -575 22 0 1 0 N -C -30 -525 22 0 1 0 N -C -30 -475 22 0 1 0 N -C -30 -425 22 0 1 0 N -C -30 -375 22 0 1 0 N -C -30 -325 22 0 1 0 N -C -30 -275 22 0 1 0 N -C -30 -225 22 0 1 0 N -C -30 -175 22 0 1 0 N -C -30 -125 22 0 1 0 N -C -30 -75 22 0 1 0 N -C -30 -25 22 0 1 0 N -C -30 25 22 0 1 0 N -C -30 75 22 0 1 0 N -C -30 125 22 0 1 0 N -C -30 175 22 0 1 0 N -C -30 225 22 0 1 0 N -C -30 275 22 0 1 0 N -C -30 325 22 0 1 0 N -C -30 375 22 0 1 0 N -C -30 425 22 0 1 0 N -C -30 475 22 0 1 0 N -C -30 525 22 0 1 0 N -C -30 575 22 0 1 0 N -C -30 625 22 0 1 0 N -C -30 675 22 0 1 0 N -C -30 725 22 0 1 0 N -C -30 775 22 0 1 0 N -C -30 825 22 0 1 0 N -C 30 -825 22 0 1 0 N -C 30 -775 22 0 1 0 N -C 30 -725 22 0 1 0 N -C 30 -675 22 0 1 0 N -C 30 -625 22 0 1 0 N -C 30 -575 22 0 1 0 N -C 30 -525 22 0 1 0 N -C 30 -475 22 0 1 0 N -C 30 -425 22 0 1 0 N -C 30 -375 22 0 1 0 N -C 30 -325 22 0 1 0 N -C 30 -275 22 0 1 0 N -C 30 -225 22 0 1 0 N -C 30 -175 22 0 1 0 N -C 30 -125 22 0 1 0 N -C 30 -75 22 0 1 0 N -C 30 -25 22 0 1 0 N -C 30 25 22 0 1 0 N -C 30 75 22 0 1 0 N -C 30 125 22 0 1 0 N -C 30 175 22 0 1 0 N -C 30 225 22 0 1 0 N -C 30 275 22 0 1 0 N -C 30 325 22 0 1 0 N -C 30 375 22 0 1 0 N -C 30 425 22 0 1 0 N -C 30 475 22 0 1 0 N -C 30 525 22 0 1 0 N -C 30 575 22 0 1 0 N -C 30 625 22 0 1 0 N -C 30 675 22 0 1 0 N -C 30 725 22 0 1 0 N -C 30 775 22 0 1 0 N -C 30 825 22 0 1 0 N -P 2 0 1 0 -80 -855 -80 854 N -P 2 0 1 0 80 -875 80 875 N -P 3 0 1 0 -60 -875 50 -895 50 -895 N -P 3 0 1 0 -60 875 50 895 50 895 N -X ~ 1 175 825 122 L 30 30 1 1 P -X ~ 2 175 775 122 L 28 28 1 1 P -X ~ 3 175 725 122 L 28 28 1 1 P -X ~ 4 175 675 122 L 30 30 1 1 P -X ~ 5 175 625 122 L 30 30 1 1 P -X ~ 6 175 575 122 L 30 30 1 1 P -X ~ 7 175 525 122 L 30 30 1 1 P -X ~ 8 175 475 122 L 30 30 1 1 P -X ~ 9 175 425 122 L 30 30 1 1 P -X ~ 10 175 375 122 L 30 30 1 1 P -X ~ 20 175 -125 122 L 28 28 1 1 P -X ~ 30 175 -625 122 L 28 28 1 1 P -X ~ 40 -175 575 122 R 28 28 1 1 P -X ~ 50 -175 75 122 R 28 28 1 1 P -X ~ 60 -175 -425 122 R 28 28 1 1 P -X ~ 11 175 325 122 L 30 30 1 1 P -X ~ 21 175 -175 122 L 28 28 1 1 P -X ~ 31 175 -675 122 L 28 28 1 1 P -X ~ 41 -175 525 122 R 28 28 1 1 P -X ~ 51 -175 25 122 R 28 28 1 1 P -X ~ 61 -175 -475 122 R 28 28 1 1 P -X ~ 12 175 275 122 L 30 30 1 1 P -X ~ 22 175 -225 122 L 28 28 1 1 P -X ~ 32 175 -725 122 L 28 28 1 1 P -X ~ 42 -175 475 122 R 28 28 1 1 P -X ~ 52 -175 -25 122 R 28 28 1 1 P -X ~ 62 -175 -525 122 R 28 28 1 1 P -X ~ 13 175 225 122 L 30 30 1 1 P -X ~ 23 175 -275 122 L 28 28 1 1 P -X ~ 33 175 -775 122 L 28 28 1 1 P -X ~ 43 -175 425 122 R 28 28 1 1 P -X ~ 53 -175 -75 122 R 28 28 1 1 P -X ~ 63 -175 -575 122 R 28 28 1 1 P -X ~ 14 175 175 122 L 28 28 1 1 P -X ~ 24 175 -325 122 L 28 28 1 1 P -X ~ 34 175 -825 122 L 28 28 1 1 P -X ~ 44 -175 375 122 R 28 28 1 1 P -X ~ 54 -175 -125 122 R 28 28 1 1 P -X ~ 64 -175 -625 122 R 28 28 1 1 P -X ~ 15 175 125 122 L 28 28 1 1 P -X ~ 25 175 -375 122 L 28 28 1 1 P -X ~ 35 -175 825 122 R 28 28 1 1 P -X ~ 45 -175 325 122 R 28 28 1 1 P -X ~ 55 -175 -175 122 R 28 28 1 1 P -X ~ 65 -175 -675 122 R 28 28 1 1 P -X ~ 16 175 75 122 L 28 28 1 1 P -X ~ 26 175 -425 122 L 28 28 1 1 P -X ~ 36 -175 775 122 R 28 28 1 1 P -X ~ 46 -175 275 122 R 28 28 1 1 P -X ~ 56 -175 -225 122 R 28 28 1 1 P -X ~ 66 -175 -725 122 R 28 28 1 1 P -X ~ 17 175 25 122 L 28 28 1 1 P -X ~ 27 175 -475 122 L 28 28 1 1 P -X ~ 37 -175 725 122 R 28 28 1 1 P -X ~ 47 -175 225 122 R 28 28 1 1 P -X ~ 57 -175 -275 122 R 28 28 1 1 P -X ~ 67 -175 -775 122 R 28 28 1 1 P -X ~ 18 175 -25 122 L 28 28 1 1 P -X ~ 28 175 -525 122 L 28 28 1 1 P -X ~ 38 -175 675 122 R 28 28 1 1 P -X ~ 48 -175 175 122 R 28 28 1 1 P -X ~ 58 -175 -325 122 R 28 28 1 1 P -X ~ 68 -175 -825 122 R 28 28 1 1 P -X ~ 19 175 -75 122 L 28 28 1 1 P -X ~ 29 175 -575 122 L 28 28 1 1 P -X ~ 39 -175 625 122 R 28 28 1 1 P -X ~ 49 -175 125 122 R 28 28 1 1 P -X ~ 59 -175 -375 122 R 28 28 1 1 P -ENDDRAW -ENDDEF -# -# DB-9 -# -DEF DB-9 J 0 40 Y N 1 F N -F0 "J" 0 400 70 H V C CNN -F1 "DB-9" 0 -300 70 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -$FPLIST - DB37* -$ENDFPLIST -DRAW -A -50 -170 31 -1615 -1084 0 1 0 N -80 -180 -60 -200 -A -50 270 31 1615 1084 0 1 0 N -80 280 -60 300 -A 51 -189 31 -918 -207 0 1 0 N 50 -220 80 -200 -A 51 289 31 207 918 0 1 0 N 80 300 50 320 -C -30 -100 22 0 1 0 N -C -30 0 22 0 1 0 N -C -30 100 22 0 1 0 N -C -30 200 22 0 1 0 N -C 30 -150 22 0 1 0 N -C 30 -50 22 0 1 0 N -C 30 50 22 0 1 0 N -C 30 150 22 0 1 0 N -C 30 250 22 0 1 0 N -P 2 0 1 0 -52 -150 8 -150 N -P 2 0 1 0 -52 -50 8 -50 N -P 2 0 1 0 -52 50 8 50 N -P 2 0 1 0 -52 150 8 150 N -P 2 0 1 0 -52 250 8 250 N -P 3 0 1 0 -80 -180 -80 280 -80 280 N -P 3 0 1 0 -60 -200 50 -220 50 -220 N -P 3 0 1 0 -60 300 50 320 50 320 N -P 3 0 1 0 80 300 80 -200 80 -200 N -X ~ 1 -150 250 98 R 30 30 1 1 P -X ~ 2 -150 150 98 R 30 30 1 1 P -X ~ 3 -150 50 98 R 30 30 1 1 P -X ~ 4 -150 -50 98 R 30 30 1 1 P -X ~ 5 -150 -150 98 R 30 30 1 1 P -X ~ 6 -150 200 98 R 30 30 1 1 P -X ~ 7 -150 100 98 R 30 30 1 1 P -X ~ 8 -150 0 98 R 30 30 1 1 P -X ~ 9 -150 -100 98 R 30 30 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_1 -# -DEF HEADER_1 J 0 0 Y Y 1 F N -F0 "J" 0 150 60 H V C CNN -F1 "HEADER_1" 0 -150 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 100 50 0 -50 0 1 0 N -X ~ 1 -100 0 100 R 50 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_10 -# -DEF HEADER_10 J 0 0 Y Y 1 F N -F0 "J" 0 550 60 H V C CNN -F1 "HEADER_10" 0 -550 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 100 500 0 -500 0 1 0 N -X ~ 1 -100 450 100 R 35 50 1 1 P -X ~ 2 -100 350 100 R 35 50 1 1 P -X ~ 3 -100 250 100 R 35 50 1 1 P -X ~ 4 -100 150 100 R 35 50 1 1 P -X ~ 5 -100 50 100 R 35 50 1 1 P -X ~ 6 -100 -50 100 R 35 50 1 1 P -X ~ 7 -100 -150 100 R 35 50 1 1 P -X ~ 8 -100 -250 100 R 35 50 1 1 P -X ~ 9 -100 -350 100 R 35 50 1 1 P -X ~ 10 -100 -450 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_10x2 -# -DEF HEADER_10x2 J 0 0 Y Y 1 F N -F0 "J" 0 550 60 H V C CNN -F1 "HEADER_10x2" 0 -550 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 50 500 -50 -500 0 1 0 N -X ~ 1 -150 450 100 R 35 50 1 1 P -X ~ 2 150 450 100 L 35 50 1 1 P -X ~ 3 -150 350 100 R 35 50 1 1 P -X ~ 4 150 350 100 L 35 50 1 1 P -X ~ 5 -150 250 100 R 35 50 1 1 P -X ~ 6 150 250 100 L 35 50 1 1 P -X ~ 7 -150 150 100 R 35 50 1 1 P -X ~ 8 150 150 100 L 35 50 1 1 P -X ~ 9 -150 50 100 R 35 50 1 1 P -X ~ 10 150 50 100 L 35 50 1 1 P -X ~ 20 150 -450 100 L 35 50 1 1 P -X ~ 11 -150 -50 100 R 35 50 1 1 P -X ~ 12 150 -50 100 L 35 50 1 1 P -X ~ 13 -150 -150 100 R 35 50 1 1 P -X ~ 14 150 -150 100 L 35 50 1 1 P -X ~ 15 -150 -250 100 R 35 50 1 1 P -X ~ 16 150 -250 100 L 35 50 1 1 P -X ~ 17 -150 -350 100 R 35 50 1 1 P -X ~ 18 150 -350 100 L 35 50 1 1 P -X ~ 19 -150 -450 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_11 -# -DEF HEADER_11 J 0 0 Y Y 1 F N -F0 "J" 0 600 60 H V C CNN -F1 "HEADER_11" 0 -600 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 100 550 0 -550 0 1 0 N -X ~ 1 -100 500 100 R 35 50 1 1 P -X ~ 2 -100 400 100 R 35 50 1 1 P -X ~ 3 -100 300 100 R 35 50 1 1 P -X ~ 4 -100 200 100 R 35 50 1 1 P -X ~ 5 -100 100 100 R 35 50 1 1 P -X ~ 6 -100 0 100 R 35 50 1 1 P -X ~ 7 -100 -100 100 R 35 50 1 1 P -X ~ 8 -100 -200 100 R 35 50 1 1 P -X ~ 9 -100 -300 100 R 35 50 1 1 P -X ~ 10 -100 -400 100 R 35 50 1 1 P -X ~ 11 -100 -500 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_11x2 -# -DEF HEADER_11x2 J 0 0 Y Y 1 F N -F0 "J" 0 600 60 H V C CNN -F1 "HEADER_11x2" 0 -600 60 H V C CNN -F2 "" 0 -100 60 H V C CNN -F3 "" 0 -100 60 H V C CNN -DRAW -S -50 550 50 -550 0 1 0 N -X ~ 1 -150 500 100 R 35 35 1 1 P -X ~ 2 150 500 100 L 35 50 1 1 P -X ~ 3 -150 400 100 R 35 50 1 1 P -X ~ 4 150 400 100 L 35 50 1 1 P -X ~ 5 -150 300 100 R 35 50 1 1 P -X ~ 6 150 300 100 L 35 50 1 1 P -X ~ 7 -150 200 100 R 35 50 1 1 P -X ~ 8 150 200 100 L 35 50 1 1 P -X ~ 9 -150 100 100 R 35 50 1 1 P -X ~ 10 150 100 100 L 35 50 1 1 P -X ~ 20 150 -400 100 L 35 50 1 1 P -X ~ 11 -150 0 100 R 35 50 1 1 P -X ~ 21 -150 -500 100 R 35 50 1 1 P -X ~ 12 150 0 100 L 35 50 1 1 P -X ~ 22 150 -500 100 L 35 50 1 1 P -X ~ 13 -150 -100 100 R 35 50 1 1 P -X ~ 14 150 -100 100 L 35 50 1 1 P -X ~ 15 -150 -200 100 R 35 50 1 1 P -X ~ 16 150 -200 100 L 35 50 1 1 P -X ~ 17 -150 -300 100 R 35 50 1 1 P -X ~ 18 150 -300 100 L 35 50 1 1 P -X ~ 19 -150 -400 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_12 -# -DEF HEADER_12 J 0 0 Y Y 1 F N -F0 "J" 0 650 60 H V C CNN -F1 "HEADER_12" 0 -650 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 100 600 0 -600 0 1 0 N -X ~ 1 -100 550 100 R 35 50 1 1 P -X ~ 2 -100 450 100 R 35 50 1 1 P -X ~ 3 -100 350 100 R 35 50 1 1 P -X ~ 4 -100 250 100 R 35 50 1 1 P -X ~ 5 -100 150 100 R 35 50 1 1 P -X ~ 6 -100 50 100 R 35 50 1 1 P -X ~ 7 -100 -50 100 R 35 50 1 1 P -X ~ 8 -100 -150 100 R 35 50 1 1 P -X ~ 9 -100 -250 100 R 35 50 1 1 P -X ~ 10 -100 -350 100 R 35 50 1 1 P -X ~ 11 -100 -450 100 R 35 50 1 1 P -X ~ 12 -100 -550 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_12x2 -# -DEF HEADER_12x2 J 0 0 Y Y 1 F N -F0 "J" 0 650 60 H V C CNN -F1 "HEADER_12x2" 0 -650 60 H V C CNN -F2 "" 0 -50 60 H V C CNN -F3 "" 0 -50 60 H V C CNN -DRAW -S 50 -600 -50 600 0 1 0 N -X ~ 1 -150 550 100 R 35 35 1 1 P -X ~ 2 150 550 100 L 35 50 1 1 P -X ~ 3 -150 450 100 R 35 50 1 1 P -X ~ 4 150 450 100 L 35 50 1 1 P -X ~ 5 -150 350 100 R 35 50 1 1 P -X ~ 6 150 350 100 L 35 50 1 1 P -X ~ 7 -150 250 100 R 35 50 1 1 P -X ~ 8 150 250 100 L 35 50 1 1 P -X ~ 9 -150 150 100 R 35 50 1 1 P -X ~ 10 150 150 100 L 35 50 1 1 P -X ~ 20 150 -350 100 L 35 50 1 1 P -X ~ 11 -150 50 100 R 35 50 1 1 P -X ~ 21 -150 -450 100 R 35 50 1 1 P -X ~ 12 150 50 100 L 35 50 1 1 P -X ~ 22 150 -450 100 L 35 50 1 1 P -X ~ 13 -150 -50 100 R 35 50 1 1 P -X ~ 23 -150 -550 100 R 35 50 1 1 P -X ~ 14 150 -50 100 L 35 50 1 1 P -X ~ 24 150 -550 100 L 35 50 1 1 P -X ~ 15 -150 -150 100 R 35 50 1 1 P -X ~ 16 150 -150 100 L 35 50 1 1 P -X ~ 17 -150 -250 100 R 35 50 1 1 P -X ~ 18 150 -250 100 L 35 50 1 1 P -X ~ 19 -150 -350 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_13 -# -DEF HEADER_13 J 0 0 Y Y 1 F N -F0 "J" 0 700 60 H V C CNN -F1 "HEADER_13" 0 -700 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 100 650 0 -650 0 1 0 N -X ~ 1 -100 600 100 R 35 50 1 1 P -X ~ 2 -100 500 100 R 35 50 1 1 P -X ~ 3 -100 400 100 R 35 50 1 1 P -X ~ 4 -100 300 100 R 35 50 1 1 P -X ~ 5 -100 200 100 R 35 50 1 1 P -X ~ 6 -100 100 100 R 35 50 1 1 P -X ~ 7 -100 0 100 R 35 50 1 1 P -X ~ 8 -100 -100 100 R 35 50 1 1 P -X ~ 9 -100 -200 100 R 35 50 1 1 P -X ~ 10 -100 -300 100 R 35 50 1 1 P -X ~ 11 -100 -400 100 R 35 50 1 1 P -X ~ 12 -100 -500 100 R 35 50 1 1 P -X ~ 13 -100 -600 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_13x2 -# -DEF HEADER_13x2 J 0 0 Y Y 1 F N -F0 "J" 0 700 60 H V C CNN -F1 "HEADER_13x2" 0 -700 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 50 650 -50 -650 0 1 0 N -X ~ 1 -150 600 100 R 35 35 1 1 P -X ~ 2 150 600 100 L 35 50 1 1 P -X ~ 3 -150 500 100 R 35 50 1 1 P -X ~ 4 150 500 100 L 35 50 1 1 P -X ~ 5 -150 400 100 R 35 50 1 1 P -X ~ 6 150 400 100 L 35 50 1 1 P -X ~ 7 -150 300 100 R 35 50 1 1 P -X ~ 8 150 300 100 L 35 50 1 1 P -X ~ 9 -150 200 100 R 35 50 1 1 P -X ~ 10 150 200 100 L 35 50 1 1 P -X ~ 20 150 -300 100 L 35 50 1 1 P -X ~ 11 -150 100 100 R 35 50 1 1 P -X ~ 21 -150 -400 100 R 35 50 1 1 P -X ~ 12 150 100 100 L 35 50 1 1 P -X ~ 22 150 -400 100 L 35 50 1 1 P -X ~ 13 -150 0 100 R 35 50 1 1 P -X ~ 23 -150 -500 100 R 35 50 1 1 P -X ~ 14 150 0 100 L 35 50 1 1 P -X ~ 24 150 -500 100 L 35 50 1 1 P -X ~ 15 -150 -100 100 R 35 50 1 1 P -X ~ 25 -150 -600 100 R 35 50 1 1 P -X ~ 16 150 -100 100 L 35 50 1 1 P -X ~ 26 150 -600 100 L 35 50 1 1 P -X ~ 17 -150 -200 100 R 35 50 1 1 P -X ~ 18 150 -200 100 L 35 50 1 1 P -X ~ 19 -150 -300 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_14 -# -DEF HEADER_14 J 0 0 Y Y 1 F N -F0 "J" 0 750 60 H V C CNN -F1 "HEADER_14" 0 -750 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 100 700 0 -700 0 1 0 N -X ~ 1 -100 650 100 R 35 50 1 1 P -X ~ 2 -100 550 100 R 35 50 1 1 P -X ~ 3 -100 450 100 R 35 50 1 1 P -X ~ 4 -100 350 100 R 35 50 1 1 P -X ~ 5 -100 250 100 R 35 50 1 1 P -X ~ 6 -100 150 100 R 35 50 1 1 P -X ~ 7 -100 50 100 R 35 50 1 1 P -X ~ 8 -100 -50 100 R 35 50 1 1 P -X ~ 9 -100 -150 100 R 35 50 1 1 P -X ~ 10 -100 -250 100 R 35 50 1 1 P -X ~ 11 -100 -350 100 R 35 50 1 1 P -X ~ 12 -100 -450 100 R 35 50 1 1 P -X ~ 13 -100 -550 100 R 35 50 1 1 P -X ~ 14 -100 -650 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_14x2 -# -DEF HEADER_14x2 J 0 0 Y Y 1 F N -F0 "J" 0 750 60 H V C CNN -F1 "HEADER_14x2" 0 -750 60 H V C CNN -F2 "" 0 -50 60 H V C CNN -F3 "" 0 -50 60 H V C CNN -DRAW -S -50 700 50 -700 0 1 0 N -X ~ 1 -150 650 100 R 35 35 1 1 P -X ~ 2 150 650 100 L 35 50 1 1 P -X ~ 3 -150 550 100 R 35 50 1 1 P -X ~ 4 150 550 100 L 35 50 1 1 P -X ~ 5 -150 450 100 R 35 50 1 1 P -X ~ 6 150 450 100 L 35 50 1 1 P -X ~ 7 -150 350 100 R 35 50 1 1 P -X ~ 8 150 350 100 L 35 50 1 1 P -X ~ 9 -150 250 100 R 35 50 1 1 P -X ~ 10 150 250 100 L 35 50 1 1 P -X ~ 20 150 -250 100 L 35 50 1 1 P -X ~ 11 -150 150 100 R 35 50 1 1 P -X ~ 21 -150 -350 100 R 35 50 1 1 P -X ~ 12 150 150 100 L 35 50 1 1 P -X ~ 22 150 -350 100 L 35 50 1 1 P -X ~ 13 -150 50 100 R 35 50 1 1 P -X ~ 23 -150 -450 100 R 35 50 1 1 P -X ~ 14 150 50 100 L 35 50 1 1 P -X ~ 24 150 -450 100 L 35 50 1 1 P -X ~ 15 -150 -50 100 R 35 50 1 1 P -X ~ 25 -150 -550 100 R 35 50 1 1 P -X ~ 16 150 -50 100 L 35 50 1 1 P -X ~ 26 150 -550 100 L 35 50 1 1 P -X ~ 17 -150 -150 100 R 35 50 1 1 P -X ~ 27 -150 -650 100 R 35 50 1 1 P -X ~ 18 150 -150 100 L 35 50 1 1 P -X ~ 28 150 -650 100 L 35 50 1 1 P -X ~ 19 -150 -250 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_15 -# -DEF HEADER_15 J 0 0 Y Y 1 F N -F0 "J" 0 800 60 H V C CNN -F1 "HEADER_15" 0 -800 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 100 750 0 -750 0 1 0 N -X ~ 1 -100 700 100 R 35 50 1 1 P -X ~ 2 -100 600 100 R 35 50 1 1 P -X ~ 3 -100 500 100 R 35 50 1 1 P -X ~ 4 -100 400 100 R 35 50 1 1 P -X ~ 5 -100 300 100 R 35 50 1 1 P -X ~ 6 -100 200 100 R 35 50 1 1 P -X ~ 7 -100 100 100 R 35 50 1 1 P -X ~ 8 -100 0 100 R 35 50 1 1 P -X ~ 9 -100 -100 100 R 35 50 1 1 P -X ~ 10 -100 -200 100 R 35 50 1 1 P -X ~ 11 -100 -300 100 R 35 50 1 1 P -X ~ 12 -100 -400 100 R 35 50 1 1 P -X ~ 13 -100 -500 100 R 35 50 1 1 P -X ~ 14 -100 -600 100 R 35 50 1 1 P -X ~ 15 -100 -700 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_15x2 -# -DEF HEADER_15x2 J 0 0 Y Y 1 F N -F0 "J" 0 800 60 H V C CNN -F1 "HEADER_15x2" 0 -800 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S -50 750 50 -750 0 1 0 N -X ~ 1 -150 700 100 R 35 35 1 1 P -X ~ 2 150 700 100 L 35 50 1 1 P -X ~ 3 -150 600 100 R 35 50 1 1 P -X ~ 4 150 600 100 L 35 50 1 1 P -X ~ 5 -150 500 100 R 35 50 1 1 P -X ~ 6 150 500 100 L 35 50 1 1 P -X ~ 7 -150 400 100 R 35 50 1 1 P -X ~ 8 150 400 100 L 35 50 1 1 P -X ~ 9 -150 300 100 R 35 50 1 1 P -X ~ 10 150 300 100 L 35 50 1 1 P -X ~ 20 150 -200 100 L 35 50 1 1 P -X ~ 30 150 -700 100 L 35 50 1 1 P -X ~ 11 -150 200 100 R 35 50 1 1 P -X ~ 21 -150 -300 100 R 35 50 1 1 P -X ~ 12 150 200 100 L 35 50 1 1 P -X ~ 22 150 -300 100 L 35 50 1 1 P -X ~ 13 -150 100 100 R 35 50 1 1 P -X ~ 23 -150 -400 100 R 35 50 1 1 P -X ~ 14 150 100 100 L 35 50 1 1 P -X ~ 24 150 -400 100 L 35 50 1 1 P -X ~ 15 -150 0 100 R 35 50 1 1 P -X ~ 25 -150 -500 100 R 35 50 1 1 P -X ~ 16 150 0 100 L 35 50 1 1 P -X ~ 26 150 -500 100 L 35 50 1 1 P -X ~ 17 -150 -100 100 R 35 50 1 1 P -X ~ 27 -150 -600 100 R 35 50 1 1 P -X ~ 18 150 -100 100 L 35 50 1 1 P -X ~ 28 150 -600 100 L 35 50 1 1 P -X ~ 19 -150 -200 100 R 35 50 1 1 P -X ~ 29 -150 -700 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_16 -# -DEF HEADER_16 J 0 0 Y Y 1 F N -F0 "J" 0 850 60 H V C CNN -F1 "HEADER_16" 0 -850 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 100 800 0 -800 0 1 0 N -X ~ 1 -100 750 100 R 35 35 1 1 P -X ~ 2 -100 650 100 R 35 50 1 1 P -X ~ 3 -100 550 100 R 35 50 1 1 P -X ~ 4 -100 450 100 R 35 50 1 1 P -X ~ 5 -100 350 100 R 35 50 1 1 P -X ~ 6 -100 250 100 R 35 50 1 1 P -X ~ 7 -100 150 100 R 35 50 1 1 P -X ~ 8 -100 50 100 R 35 50 1 1 P -X ~ 9 -100 -50 100 R 35 50 1 1 P -X ~ 10 -100 -150 100 R 35 50 1 1 P -X ~ 11 -100 -250 100 R 35 50 1 1 P -X ~ 12 -100 -350 100 R 35 50 1 1 P -X ~ 13 -100 -450 100 R 35 50 1 1 P -X ~ 14 -100 -550 100 R 35 50 1 1 P -X ~ 15 -100 -650 100 R 35 50 1 1 P -X ~ 16 -100 -750 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_16x2 -# -DEF HEADER_16x2 J 0 0 Y Y 1 F N -F0 "J" 0 850 60 H V C CNN -F1 "HEADER_16x2" 0 -850 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S -50 800 50 -800 0 1 0 N -X ~ 1 -150 750 100 R 35 35 1 1 P -X ~ 2 150 750 100 L 35 50 1 1 P -X ~ 3 -150 650 100 R 35 50 1 1 P -X ~ 4 150 650 100 L 35 50 1 1 P -X ~ 5 -150 550 100 R 35 50 1 1 P -X ~ 6 150 550 100 L 35 50 1 1 P -X ~ 7 -150 450 100 R 35 50 1 1 P -X ~ 8 150 450 100 L 35 50 1 1 P -X ~ 9 -150 350 100 R 35 50 1 1 P -X ~ 10 150 350 100 L 35 50 1 1 P -X ~ 20 150 -150 100 L 35 50 1 1 P -X ~ 30 150 -650 100 L 35 50 1 1 P -X ~ 11 -150 250 100 R 35 50 1 1 P -X ~ 21 -150 -250 100 R 35 50 1 1 P -X ~ 31 -150 -750 100 R 35 50 1 1 P -X ~ 12 150 250 100 L 35 50 1 1 P -X ~ 22 150 -250 100 L 35 50 1 1 P -X ~ 32 150 -750 100 L 35 50 1 1 P -X ~ 13 -150 150 100 R 35 50 1 1 P -X ~ 23 -150 -350 100 R 35 50 1 1 P -X ~ 14 150 150 100 L 35 50 1 1 P -X ~ 24 150 -350 100 L 35 50 1 1 P -X ~ 15 -150 50 100 R 35 50 1 1 P -X ~ 25 -150 -450 100 R 35 50 1 1 P -X ~ 16 150 50 100 L 35 50 1 1 P -X ~ 26 150 -450 100 L 35 50 1 1 P -X ~ 17 -150 -50 100 R 35 50 1 1 P -X ~ 27 -150 -550 100 R 35 50 1 1 P -X ~ 18 150 -50 100 L 35 50 1 1 P -X ~ 28 150 -550 100 L 35 50 1 1 P -X ~ 19 -150 -150 100 R 35 50 1 1 P -X ~ 29 -150 -650 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_17 -# -DEF HEADER_17 J 0 0 Y Y 1 F N -F0 "J" 0 900 60 H V C CNN -F1 "HEADER_17" 0 -900 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 100 850 0 -850 0 1 0 N -X ~ 1 -100 800 100 R 35 35 1 1 P -X ~ 2 -100 700 100 R 35 50 1 1 P -X ~ 3 -100 600 100 R 35 50 1 1 P -X ~ 4 -100 500 100 R 35 50 1 1 P -X ~ 5 -100 400 100 R 35 50 1 1 P -X ~ 6 -100 300 100 R 35 50 1 1 P -X ~ 7 -100 200 100 R 35 50 1 1 P -X ~ 8 -100 100 100 R 35 50 1 1 P -X ~ 9 -100 0 100 R 35 50 1 1 P -X ~ 10 -100 -100 100 R 35 50 1 1 P -X ~ 11 -100 -200 100 R 35 50 1 1 P -X ~ 12 -100 -300 100 R 35 50 1 1 P -X ~ 13 -100 -400 100 R 35 50 1 1 P -X ~ 14 -100 -500 100 R 35 50 1 1 P -X ~ 15 -100 -600 100 R 35 50 1 1 P -X ~ 16 -100 -700 100 R 35 50 1 1 P -X ~ 17 -100 -800 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_17x2 -# -DEF HEADER_17x2 J 0 0 Y Y 1 F N -F0 "J" 0 900 60 H V C CNN -F1 "HEADER_17x2" 0 -900 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 50 850 -50 -850 0 1 0 N -X ~ 1 -150 800 100 R 35 35 1 1 P -X ~ 2 150 800 100 L 35 50 1 1 P -X ~ 3 -150 700 100 R 35 50 1 1 P -X ~ 4 150 700 100 L 35 50 1 1 P -X ~ 5 -150 600 100 R 35 50 1 1 P -X ~ 6 150 600 100 L 35 50 1 1 P -X ~ 7 -150 500 100 R 35 50 1 1 P -X ~ 8 150 500 100 L 35 50 1 1 P -X ~ 9 -150 400 100 R 35 50 1 1 P -X ~ 10 150 400 100 L 35 50 1 1 P -X ~ 20 150 -100 100 L 35 50 1 1 P -X ~ 30 150 -600 100 L 35 50 1 1 P -X ~ 11 -150 300 100 R 35 50 1 1 P -X ~ 21 -150 -200 100 R 35 50 1 1 P -X ~ 31 -150 -700 100 R 35 50 1 1 P -X ~ 12 150 300 100 L 35 50 1 1 P -X ~ 22 150 -200 100 L 35 50 1 1 P -X ~ 32 150 -700 100 L 35 50 1 1 P -X ~ 13 -150 200 100 R 35 50 1 1 P -X ~ 23 -150 -300 100 R 35 50 1 1 P -X ~ 33 -150 -800 100 R 35 50 1 1 P -X ~ 14 150 200 100 L 35 50 1 1 P -X ~ 24 150 -300 100 L 35 50 1 1 P -X ~ 34 150 -800 100 L 35 50 1 1 P -X ~ 15 -150 100 100 R 35 50 1 1 P -X ~ 25 -150 -400 100 R 35 50 1 1 P -X ~ 16 150 100 100 L 35 50 1 1 P -X ~ 26 150 -400 100 L 35 50 1 1 P -X ~ 17 -150 0 100 R 35 50 1 1 P -X ~ 27 -150 -500 100 R 35 50 1 1 P -X ~ 18 150 0 100 L 35 50 1 1 P -X ~ 28 150 -500 100 L 35 50 1 1 P -X ~ 19 -150 -100 100 R 35 50 1 1 P -X ~ 29 -150 -600 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_18 -# -DEF HEADER_18 J 0 0 Y Y 1 F N -F0 "J" 0 950 60 H V C CNN -F1 "HEADER_18" 0 -950 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 100 900 0 -900 0 1 0 N -X ~ 1 -100 850 100 R 35 35 1 1 P -X ~ 2 -100 750 100 R 35 50 1 1 P -X ~ 3 -100 650 100 R 35 50 1 1 P -X ~ 4 -100 550 100 R 35 50 1 1 P -X ~ 5 -100 450 100 R 35 50 1 1 P -X ~ 6 -100 350 100 R 35 50 1 1 P -X ~ 7 -100 250 100 R 35 50 1 1 P -X ~ 8 -100 150 100 R 35 50 1 1 P -X ~ 9 -100 50 100 R 35 50 1 1 P -X ~ 10 -100 -50 100 R 35 50 1 1 P -X ~ 11 -100 -150 100 R 35 50 1 1 P -X ~ 12 -100 -250 100 R 35 50 1 1 P -X ~ 13 -100 -350 100 R 35 50 1 1 P -X ~ 14 -100 -450 100 R 35 50 1 1 P -X ~ 15 -100 -550 100 R 35 50 1 1 P -X ~ 16 -100 -650 100 R 35 50 1 1 P -X ~ 17 -100 -750 100 R 35 50 1 1 P -X ~ 18 -100 -850 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_18x2 -# -DEF HEADER_18x2 J 0 0 Y Y 1 F N -F0 "J" 0 950 60 H V C CNN -F1 "HEADER_18x2" 0 -950 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S -50 900 50 -900 0 1 0 N -X ~ 1 -150 850 100 R 35 35 1 1 P -X ~ 2 150 850 100 L 35 50 1 1 P -X ~ 3 -150 750 100 R 35 50 1 1 P -X ~ 4 150 750 100 L 35 50 1 1 P -X ~ 5 -150 650 100 R 35 50 1 1 P -X ~ 6 150 650 100 L 35 50 1 1 P -X ~ 7 -150 550 100 R 35 50 1 1 P -X ~ 8 150 550 100 L 35 50 1 1 P -X ~ 9 -150 450 100 R 35 50 1 1 P -X ~ 10 150 450 100 L 35 50 1 1 P -X ~ 20 150 -50 100 L 35 50 1 1 P -X ~ 30 150 -550 100 L 35 50 1 1 P -X ~ 11 -150 350 100 R 35 50 1 1 P -X ~ 21 -150 -150 100 R 35 50 1 1 P -X ~ 31 -150 -650 100 R 35 50 1 1 P -X ~ 12 150 350 100 L 35 50 1 1 P -X ~ 22 150 -150 100 L 35 50 1 1 P -X ~ 32 150 -650 100 L 35 50 1 1 P -X ~ 13 -150 250 100 R 35 50 1 1 P -X ~ 23 -150 -250 100 R 35 50 1 1 P -X ~ 33 -150 -750 100 R 35 50 1 1 P -X ~ 14 150 250 100 L 35 50 1 1 P -X ~ 24 150 -250 100 L 35 50 1 1 P -X ~ 34 150 -750 100 L 35 50 1 1 P -X ~ 15 -150 150 100 R 35 50 1 1 P -X ~ 25 -150 -350 100 R 35 50 1 1 P -X ~ 35 -150 -850 100 R 35 50 1 1 P -X ~ 16 150 150 100 L 35 50 1 1 P -X ~ 26 150 -350 100 L 35 50 1 1 P -X ~ 36 150 -850 100 L 35 50 1 1 P -X ~ 17 -150 50 100 R 35 50 1 1 P -X ~ 27 -150 -450 100 R 35 50 1 1 P -X ~ 18 150 50 100 L 35 50 1 1 P -X ~ 28 150 -450 100 L 35 50 1 1 P -X ~ 19 -150 -50 100 R 35 50 1 1 P -X ~ 29 -150 -550 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_19 -# -DEF HEADER_19 J 0 0 Y Y 1 F N -F0 "J" 0 1000 60 H V C CNN -F1 "HEADER_19" 0 -1000 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 0 950 100 -950 0 1 0 N -X ~ 1 -100 900 100 R 35 35 1 1 P -X ~ 2 -100 800 100 R 35 50 1 1 P -X ~ 3 -100 700 100 R 35 50 1 1 P -X ~ 4 -100 600 100 R 35 50 1 1 P -X ~ 5 -100 500 100 R 35 50 1 1 P -X ~ 6 -100 400 100 R 35 50 1 1 P -X ~ 7 -100 300 100 R 35 50 1 1 P -X ~ 8 -100 200 100 R 35 50 1 1 P -X ~ 9 -100 100 100 R 35 50 1 1 P -X ~ 10 -100 0 100 R 35 50 1 1 P -X ~ 11 -100 -100 100 R 35 50 1 1 P -X ~ 12 -100 -200 100 R 35 50 1 1 P -X ~ 13 -100 -300 100 R 35 50 1 1 P -X ~ 14 -100 -400 100 R 35 50 1 1 P -X ~ 15 -100 -500 100 R 35 50 1 1 P -X ~ 16 -100 -600 100 R 35 50 1 1 P -X ~ 17 -100 -700 100 R 35 50 1 1 P -X ~ 18 -100 -800 100 R 35 50 1 1 P -X ~ 19 -100 -900 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_19x2 -# -DEF HEADER_19x2 J 0 0 Y Y 1 F N -F0 "J" 0 1000 60 H V C CNN -F1 "HEADER_19x2" 0 -1000 60 H V C CNN -F2 "" 0 -50 60 H V C CNN -F3 "" 0 -50 60 H V C CNN -DRAW -S -50 950 50 -950 0 1 0 N -X ~ 1 -150 900 100 R 35 35 1 1 P -X ~ 2 150 900 100 L 35 50 1 1 P -X ~ 3 -150 800 100 R 35 50 1 1 P -X ~ 4 150 800 100 L 35 50 1 1 P -X ~ 5 -150 700 100 R 35 50 1 1 P -X ~ 6 150 700 100 L 35 50 1 1 P -X ~ 7 -150 600 100 R 35 50 1 1 P -X ~ 8 150 600 100 L 35 50 1 1 P -X ~ 9 -150 500 100 R 35 50 1 1 P -X ~ 10 150 500 100 L 35 50 1 1 P -X ~ 20 150 0 100 L 35 50 1 1 P -X ~ 30 150 -500 100 L 35 50 1 1 P -X ~ 11 -150 400 100 R 35 50 1 1 P -X ~ 21 -150 -100 100 R 35 50 1 1 P -X ~ 31 -150 -600 100 R 35 50 1 1 P -X ~ 12 150 400 100 L 35 50 1 1 P -X ~ 22 150 -100 100 L 35 50 1 1 P -X ~ 32 150 -600 100 L 35 50 1 1 P -X ~ 13 -150 300 100 R 35 50 1 1 P -X ~ 23 -150 -200 100 R 35 50 1 1 P -X ~ 33 -150 -700 100 R 35 50 1 1 P -X ~ 14 150 300 100 L 35 50 1 1 P -X ~ 24 150 -200 100 L 35 50 1 1 P -X ~ 34 150 -700 100 L 35 50 1 1 P -X ~ 15 -150 200 100 R 35 50 1 1 P -X ~ 25 -150 -300 100 R 35 50 1 1 P -X ~ 35 -150 -800 100 R 35 50 1 1 P -X ~ 16 150 200 100 L 35 50 1 1 P -X ~ 26 150 -300 100 L 35 50 1 1 P -X ~ 36 150 -800 100 L 35 50 1 1 P -X ~ 17 -150 100 100 R 35 50 1 1 P -X ~ 27 -150 -400 100 R 35 50 1 1 P -X ~ 37 -150 -900 100 R 35 50 1 1 P -X ~ 18 150 100 100 L 35 50 1 1 P -X ~ 28 150 -400 100 L 35 50 1 1 P -X ~ 38 150 -900 100 L 35 50 1 1 P -X ~ 19 -150 0 100 R 35 50 1 1 P -X ~ 29 -150 -500 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_2 -# -DEF HEADER_2 J 0 0 Y Y 1 F N -F0 "J" 0 150 60 H V C CNN -F1 "HEADER_2" 0 -150 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 100 100 0 -100 0 1 0 N -X ~ 1 -100 50 100 R 35 50 1 1 P -X ~ 2 -100 -50 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_20 -# -DEF HEADER_20 J 0 0 Y Y 1 F N -F0 "J" 0 1050 60 H V C CNN -F1 "HEADER_20" 0 -1050 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 100 1000 0 -1000 0 1 0 N -X ~ 1 -100 950 100 R 35 50 1 1 P -X ~ 2 -100 850 100 R 35 50 1 1 P -X ~ 3 -100 750 100 R 35 50 1 1 P -X ~ 4 -100 650 100 R 35 50 1 1 P -X ~ 5 -100 550 100 R 35 50 1 1 P -X ~ 6 -100 450 100 R 35 50 1 1 P -X ~ 7 -100 350 100 R 35 50 1 1 P -X ~ 8 -100 250 100 R 35 50 1 1 P -X ~ 9 -100 150 100 R 35 50 1 1 P -X ~ 10 -100 50 100 R 35 50 1 1 P -X ~ 20 -100 -950 100 R 35 50 1 1 P -X ~ 11 -100 -50 100 R 35 35 1 1 P -X ~ 12 -100 -150 100 R 35 50 1 1 P -X ~ 13 -100 -250 100 R 35 50 1 1 P -X ~ 14 -100 -350 100 R 35 50 1 1 P -X ~ 15 -100 -450 100 R 35 50 1 1 P -X ~ 16 -100 -550 100 R 35 50 1 1 P -X ~ 17 -100 -650 100 R 35 50 1 1 P -X ~ 18 -100 -750 100 R 35 50 1 1 P -X ~ 19 -100 -850 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_20x2 -# -DEF HEADER_20x2 J 0 0 Y Y 1 F N -F0 "J" 0 1050 60 H V C CNN -F1 "HEADER_20x2" 0 -1050 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 50 1000 -50 -1000 0 1 0 N -X ~ 1 -150 950 100 R 35 35 1 1 P -X ~ 2 150 950 100 L 35 50 1 1 P -X ~ 3 -150 850 100 R 35 50 1 1 P -X ~ 4 150 850 100 L 35 50 1 1 P -X ~ 5 -150 750 100 R 35 50 1 1 P -X ~ 6 150 750 100 L 35 50 1 1 P -X ~ 7 -150 650 100 R 35 50 1 1 P -X ~ 8 150 650 100 L 35 50 1 1 P -X ~ 9 -150 550 100 R 35 50 1 1 P -X ~ 10 150 550 100 L 35 50 1 1 P -X ~ 20 150 50 100 L 35 50 1 1 P -X ~ 30 150 -450 100 L 35 50 1 1 P -X ~ 40 150 -950 100 L 35 50 1 1 P -X ~ 11 -150 450 100 R 35 50 1 1 P -X ~ 21 -150 -50 100 R 35 50 1 1 P -X ~ 31 -150 -550 100 R 35 50 1 1 P -X ~ 12 150 450 100 L 35 50 1 1 P -X ~ 22 150 -50 100 L 35 50 1 1 P -X ~ 32 150 -550 100 L 35 50 1 1 P -X ~ 13 -150 350 100 R 35 50 1 1 P -X ~ 23 -150 -150 100 R 35 50 1 1 P -X ~ 33 -150 -650 100 R 35 50 1 1 P -X ~ 14 150 350 100 L 35 50 1 1 P -X ~ 24 150 -150 100 L 35 50 1 1 P -X ~ 34 150 -650 100 L 35 50 1 1 P -X ~ 15 -150 250 100 R 35 50 1 1 P -X ~ 25 -150 -250 100 R 35 50 1 1 P -X ~ 35 -150 -750 100 R 35 50 1 1 P -X ~ 16 150 250 100 L 35 50 1 1 P -X ~ 26 150 -250 100 L 35 50 1 1 P -X ~ 36 150 -750 100 L 35 50 1 1 P -X ~ 17 -150 150 100 R 35 50 1 1 P -X ~ 27 -150 -350 100 R 35 50 1 1 P -X ~ 37 -150 -850 100 R 35 50 1 1 P -X ~ 18 150 150 100 L 35 50 1 1 P -X ~ 28 150 -350 100 L 35 50 1 1 P -X ~ 38 150 -850 100 L 35 50 1 1 P -X ~ 19 -150 50 100 R 35 50 1 1 P -X ~ 29 -150 -450 100 R 35 50 1 1 P -X ~ 39 -150 -950 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_21x2 -# -DEF HEADER_21x2 J 0 0 Y Y 1 F N -F0 "J" 0 1100 60 H V C CNN -F1 "HEADER_21x2" 0 -1100 60 H V C CNN -F2 "" 0 -200 60 H V C CNN -F3 "" 0 -200 60 H V C CNN -DRAW -S 50 -1050 -50 1050 0 1 0 N -X ~ 1 -150 1000 100 R 35 35 1 1 P -X ~ 2 150 1000 100 L 35 50 1 1 P -X ~ 3 -150 900 100 R 35 50 1 1 P -X ~ 4 150 900 100 L 35 50 1 1 P -X ~ 5 -150 800 100 R 35 50 1 1 P -X ~ 6 150 800 100 L 35 50 1 1 P -X ~ 7 -150 700 100 R 35 50 1 1 P -X ~ 8 150 700 100 L 35 50 1 1 P -X ~ 9 -150 600 100 R 35 50 1 1 P -X ~ 10 150 600 100 L 35 50 1 1 P -X ~ 20 150 100 100 L 35 50 1 1 P -X ~ 30 150 -400 100 L 35 50 1 1 P -X ~ 40 150 -900 100 L 35 50 1 1 P -X ~ 11 -150 500 100 R 35 50 1 1 P -X ~ 21 -150 0 100 R 35 50 1 1 P -X ~ 31 -150 -500 100 R 35 50 1 1 P -X ~ 41 -150 -1000 100 R 35 50 1 1 P -X ~ 12 150 500 100 L 35 50 1 1 P -X ~ 22 150 0 100 L 35 50 1 1 P -X ~ 32 150 -500 100 L 35 50 1 1 P -X ~ 42 150 -1000 100 L 35 50 1 1 P -X ~ 13 -150 400 100 R 35 50 1 1 P -X ~ 23 -150 -100 100 R 35 50 1 1 P -X ~ 33 -150 -600 100 R 35 50 1 1 P -X ~ 14 150 400 100 L 35 50 1 1 P -X ~ 24 150 -100 100 L 35 50 1 1 P -X ~ 34 150 -600 100 L 35 50 1 1 P -X ~ 15 -150 300 100 R 35 50 1 1 P -X ~ 25 -150 -200 100 R 35 50 1 1 P -X ~ 35 -150 -700 100 R 35 50 1 1 P -X ~ 16 150 300 100 L 35 50 1 1 P -X ~ 26 150 -200 100 L 35 50 1 1 P -X ~ 36 150 -700 100 L 35 50 1 1 P -X ~ 17 -150 200 100 R 35 50 1 1 P -X ~ 27 -150 -300 100 R 35 50 1 1 P -X ~ 37 -150 -800 100 R 35 50 1 1 P -X ~ 18 150 200 100 L 35 50 1 1 P -X ~ 28 150 -300 100 L 35 50 1 1 P -X ~ 38 150 -800 100 L 35 50 1 1 P -X ~ 19 -150 100 100 R 35 50 1 1 P -X ~ 29 -150 -400 100 R 35 50 1 1 P -X ~ 39 -150 -900 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_22x2 -# -DEF HEADER_22x2 J 0 0 Y Y 1 F N -F0 "J" 0 1150 60 H V C CNN -F1 "HEADER_22x2" 0 -1150 60 H V C CNN -F2 "" 0 -150 60 H V C CNN -F3 "" 0 -150 60 H V C CNN -DRAW -S 50 -1100 -50 1100 0 1 0 N -X ~ 1 -150 1050 100 R 35 35 1 1 P -X ~ 2 150 1050 100 L 35 50 1 1 P -X ~ 3 -150 950 100 R 35 50 1 1 P -X ~ 4 150 950 100 L 35 50 1 1 P -X ~ 5 -150 850 100 R 35 50 1 1 P -X ~ 6 150 850 100 L 35 50 1 1 P -X ~ 7 -150 750 100 R 35 50 1 1 P -X ~ 8 150 750 100 L 35 50 1 1 P -X ~ 9 -150 650 100 R 35 50 1 1 P -X ~ 10 150 650 100 L 35 50 1 1 P -X ~ 20 150 150 100 L 35 50 1 1 P -X ~ 30 150 -350 100 L 35 50 1 1 P -X ~ 40 150 -850 100 L 35 50 1 1 P -X ~ 11 -150 550 100 R 35 50 1 1 P -X ~ 21 -150 50 100 R 35 50 1 1 P -X ~ 31 -150 -450 100 R 35 50 1 1 P -X ~ 41 -150 -950 100 R 35 50 1 1 P -X ~ 12 150 550 100 L 35 50 1 1 P -X ~ 22 150 50 100 L 35 50 1 1 P -X ~ 32 150 -450 100 L 35 50 1 1 P -X ~ 42 150 -950 100 L 35 50 1 1 P -X ~ 13 -150 450 100 R 35 50 1 1 P -X ~ 23 -150 -50 100 R 35 50 1 1 P -X ~ 33 -150 -550 100 R 35 50 1 1 P -X ~ 43 -150 -1050 100 R 35 50 1 1 P -X ~ 14 150 450 100 L 35 50 1 1 P -X ~ 24 150 -50 100 L 35 50 1 1 P -X ~ 34 150 -550 100 L 35 50 1 1 P -X ~ 44 150 -1050 100 L 35 50 1 1 P -X ~ 15 -150 350 100 R 35 50 1 1 P -X ~ 25 -150 -150 100 R 35 50 1 1 P -X ~ 35 -150 -650 100 R 35 50 1 1 P -X ~ 16 150 350 100 L 35 50 1 1 P -X ~ 26 150 -150 100 L 35 50 1 1 P -X ~ 36 150 -650 100 L 35 50 1 1 P -X ~ 17 -150 250 100 R 35 50 1 1 P -X ~ 27 -150 -250 100 R 35 50 1 1 P -X ~ 37 -150 -750 100 R 35 50 1 1 P -X ~ 18 150 250 100 L 35 50 1 1 P -X ~ 28 150 -250 100 L 35 50 1 1 P -X ~ 38 150 -750 100 L 35 50 1 1 P -X ~ 19 -150 150 100 R 35 50 1 1 P -X ~ 29 -150 -350 100 R 35 50 1 1 P -X ~ 39 -150 -850 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_23x2 -# -DEF HEADER_23x2 J 0 0 Y Y 1 F N -F0 "J" 0 1200 60 H V C CNN -F1 "HEADER_23x2" 0 -1200 60 H V C CNN -F2 "" 0 -100 60 H V C CNN -F3 "" 0 -100 60 H V C CNN -DRAW -S 50 -1150 -50 1150 0 1 0 N -X ~ 1 -150 1100 100 R 35 35 1 1 P -X ~ 2 150 1100 100 L 35 50 1 1 P -X ~ 3 -150 1000 100 R 35 50 1 1 P -X ~ 4 150 1000 100 L 35 50 1 1 P -X ~ 5 -150 900 100 R 35 50 1 1 P -X ~ 6 150 900 100 L 35 50 1 1 P -X ~ 7 -150 800 100 R 35 50 1 1 P -X ~ 8 150 800 100 L 35 50 1 1 P -X ~ 9 -150 700 100 R 35 50 1 1 P -X ~ 10 150 700 100 L 35 50 1 1 P -X ~ 20 150 200 100 L 35 50 1 1 P -X ~ 30 150 -300 100 L 35 50 1 1 P -X ~ 40 150 -800 100 L 35 50 1 1 P -X ~ 11 -150 600 100 R 35 50 1 1 P -X ~ 21 -150 100 100 R 35 50 1 1 P -X ~ 31 -150 -400 100 R 35 50 1 1 P -X ~ 41 -150 -900 100 R 35 50 1 1 P -X ~ 12 150 600 100 L 35 50 1 1 P -X ~ 22 150 100 100 L 35 50 1 1 P -X ~ 32 150 -400 100 L 35 50 1 1 P -X ~ 42 150 -900 100 L 35 50 1 1 P -X ~ 13 -150 500 100 R 35 50 1 1 P -X ~ 23 -150 0 100 R 35 50 1 1 P -X ~ 33 -150 -500 100 R 35 50 1 1 P -X ~ 43 -150 -1000 100 R 35 50 1 1 P -X ~ 14 150 500 100 L 35 50 1 1 P -X ~ 24 150 0 100 L 35 50 1 1 P -X ~ 34 150 -500 100 L 35 50 1 1 P -X ~ 44 150 -1000 100 L 35 50 1 1 P -X ~ 15 -150 400 100 R 35 50 1 1 P -X ~ 25 -150 -100 100 R 35 50 1 1 P -X ~ 35 -150 -600 100 R 35 50 1 1 P -X ~ 45 -150 -1100 100 R 35 50 1 1 P -X ~ 16 150 400 100 L 35 50 1 1 P -X ~ 26 150 -100 100 L 35 50 1 1 P -X ~ 36 150 -600 100 L 35 50 1 1 P -X ~ 46 150 -1100 100 L 35 50 1 1 P -X ~ 17 -150 300 100 R 35 50 1 1 P -X ~ 27 -150 -200 100 R 35 50 1 1 P -X ~ 37 -150 -700 100 R 35 50 1 1 P -X ~ 18 150 300 100 L 35 50 1 1 P -X ~ 28 150 -200 100 L 35 50 1 1 P -X ~ 38 150 -700 100 L 35 50 1 1 P -X ~ 19 -150 200 100 R 35 50 1 1 P -X ~ 29 -150 -300 100 R 35 50 1 1 P -X ~ 39 -150 -800 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_24x2 -# -DEF HEADER_24x2 J 0 0 Y Y 1 F N -F0 "J" 0 1250 60 H V C CNN -F1 "HEADER_24x2" 0 -1250 60 H V C CNN -F2 "" 0 -50 60 H V C CNN -F3 "" 0 -50 60 H V C CNN -DRAW -S 50 -1200 -50 1200 0 1 0 N -X ~ 1 -150 1150 100 R 35 35 1 1 P -X ~ 2 150 1150 100 L 35 50 1 1 P -X ~ 3 -150 1050 100 R 35 50 1 1 P -X ~ 4 150 1050 100 L 35 50 1 1 P -X ~ 5 -150 950 100 R 35 50 1 1 P -X ~ 6 150 950 100 L 35 50 1 1 P -X ~ 7 -150 850 100 R 35 50 1 1 P -X ~ 8 150 850 100 L 35 50 1 1 P -X ~ 9 -150 750 100 R 35 50 1 1 P -X ~ 10 150 750 100 L 35 50 1 1 P -X ~ 20 150 250 100 L 35 50 1 1 P -X ~ 30 150 -250 100 L 35 50 1 1 P -X ~ 40 150 -750 100 L 35 50 1 1 P -X ~ 11 -150 650 100 R 35 50 1 1 P -X ~ 21 -150 150 100 R 35 50 1 1 P -X ~ 31 -150 -350 100 R 35 50 1 1 P -X ~ 41 -150 -850 100 R 35 50 1 1 P -X ~ 12 150 650 100 L 35 50 1 1 P -X ~ 22 150 150 100 L 35 50 1 1 P -X ~ 32 150 -350 100 L 35 50 1 1 P -X ~ 42 150 -850 100 L 35 50 1 1 P -X ~ 13 -150 550 100 R 35 50 1 1 P -X ~ 23 -150 50 100 R 35 50 1 1 P -X ~ 33 -150 -450 100 R 35 50 1 1 P -X ~ 43 -150 -950 100 R 35 50 1 1 P -X ~ 14 150 550 100 L 35 50 1 1 P -X ~ 24 150 50 100 L 35 50 1 1 P -X ~ 34 150 -450 100 L 35 50 1 1 P -X ~ 44 150 -950 100 L 35 50 1 1 P -X ~ 15 -150 450 100 R 35 50 1 1 P -X ~ 25 -150 -50 100 R 35 50 1 1 P -X ~ 35 -150 -550 100 R 35 50 1 1 P -X ~ 45 -150 -1050 100 R 35 50 1 1 P -X ~ 16 150 450 100 L 35 50 1 1 P -X ~ 26 150 -50 100 L 35 50 1 1 P -X ~ 36 150 -550 100 L 35 50 1 1 P -X ~ 46 150 -1050 100 L 35 50 1 1 P -X ~ 17 -150 350 100 R 35 50 1 1 P -X ~ 27 -150 -150 100 R 35 50 1 1 P -X ~ 37 -150 -650 100 R 35 50 1 1 P -X ~ 47 -150 -1150 100 R 35 50 1 1 P -X ~ 18 150 350 100 L 35 50 1 1 P -X ~ 28 150 -150 100 L 35 50 1 1 P -X ~ 38 150 -650 100 L 35 50 1 1 P -X ~ 48 150 -1150 100 L 35 50 1 1 P -X ~ 19 -150 250 100 R 35 50 1 1 P -X ~ 29 -150 -250 100 R 35 50 1 1 P -X ~ 39 -150 -750 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_25x2 -# -DEF HEADER_25x2 J 0 0 Y Y 1 F N -F0 "J" 0 1300 60 H V C CNN -F1 "HEADER_25x2" 0 -1300 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 50 1250 -50 -1250 0 1 0 N -X ~ 1 -150 1200 100 R 35 35 1 1 P -X ~ 2 150 1200 100 L 35 50 1 1 P -X ~ 3 -150 1100 100 R 35 50 1 1 P -X ~ 4 150 1100 100 L 35 50 1 1 P -X ~ 5 -150 1000 100 R 35 50 1 1 P -X ~ 6 150 1000 100 L 35 50 1 1 P -X ~ 7 -150 900 100 R 35 50 1 1 P -X ~ 8 150 900 100 L 35 50 1 1 P -X ~ 9 -150 800 100 R 35 50 1 1 P -X ~ 10 150 800 100 L 35 50 1 1 P -X ~ 20 150 300 100 L 35 50 1 1 P -X ~ 30 150 -200 100 L 35 50 1 1 P -X ~ 40 150 -700 100 L 35 50 1 1 P -X ~ 50 150 -1200 100 L 35 50 1 1 P -X ~ 11 -150 700 100 R 35 50 1 1 P -X ~ 21 -150 200 100 R 35 50 1 1 P -X ~ 31 -150 -300 100 R 35 50 1 1 P -X ~ 41 -150 -800 100 R 35 50 1 1 P -X ~ 12 150 700 100 L 35 50 1 1 P -X ~ 22 150 200 100 L 35 50 1 1 P -X ~ 32 150 -300 100 L 35 50 1 1 P -X ~ 42 150 -800 100 L 35 50 1 1 P -X ~ 13 -150 600 100 R 35 50 1 1 P -X ~ 23 -150 100 100 R 35 50 1 1 P -X ~ 33 -150 -400 100 R 35 50 1 1 P -X ~ 43 -150 -900 100 R 35 50 1 1 P -X ~ 14 150 600 100 L 35 50 1 1 P -X ~ 24 150 100 100 L 35 50 1 1 P -X ~ 34 150 -400 100 L 35 50 1 1 P -X ~ 44 150 -900 100 L 35 50 1 1 P -X ~ 15 -150 500 100 R 35 50 1 1 P -X ~ 25 -150 0 100 R 35 50 1 1 P -X ~ 35 -150 -500 100 R 35 50 1 1 P -X ~ 45 -150 -1000 100 R 35 50 1 1 P -X ~ 16 150 500 100 L 35 50 1 1 P -X ~ 26 150 0 100 L 35 50 1 1 P -X ~ 36 150 -500 100 L 35 50 1 1 P -X ~ 46 150 -1000 100 L 35 50 1 1 P -X ~ 17 -150 400 100 R 35 50 1 1 P -X ~ 27 -150 -100 100 R 35 50 1 1 P -X ~ 37 -150 -600 100 R 35 50 1 1 P -X ~ 47 -150 -1100 100 R 35 50 1 1 P -X ~ 18 150 400 100 L 35 50 1 1 P -X ~ 28 150 -100 100 L 35 50 1 1 P -X ~ 38 150 -600 100 L 35 50 1 1 P -X ~ 48 150 -1100 100 L 35 50 1 1 P -X ~ 19 -150 300 100 R 35 50 1 1 P -X ~ 29 -150 -200 100 R 35 50 1 1 P -X ~ 39 -150 -700 100 R 35 50 1 1 P -X ~ 49 -150 -1200 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_26x2 -# -DEF HEADER_26x2 J 0 0 Y Y 1 F N -F0 "J" 0 1350 60 H V C CNN -F1 "HEADER_26x2" 0 -1350 60 H V C CNN -F2 "" 0 -200 60 H V C CNN -F3 "" 0 -200 60 H V C CNN -DRAW -S 50 -1300 -50 1300 0 1 0 N -X ~ 1 -150 1250 100 R 35 50 1 1 P -X ~ 2 150 1250 100 L 35 50 1 1 P -X ~ 3 -150 1150 100 R 35 50 1 1 P -X ~ 4 150 1150 100 L 35 50 1 1 P -X ~ 5 -150 1050 100 R 35 50 1 1 P -X ~ 6 150 1050 100 L 35 50 1 1 P -X ~ 7 -150 950 100 R 35 50 1 1 P -X ~ 8 150 950 100 L 35 50 1 1 P -X ~ 9 -150 850 100 R 35 50 1 1 P -X ~ 10 150 850 100 L 35 50 1 1 P -X ~ 20 150 350 100 L 35 50 1 1 P -X ~ 30 150 -150 100 L 35 50 1 1 P -X ~ 40 150 -650 100 L 35 50 1 1 P -X ~ 50 150 -1150 100 L 35 50 1 1 P -X ~ 11 -150 750 100 R 35 50 1 1 P -X ~ 21 -150 250 100 R 35 50 1 1 P -X ~ 31 -150 -250 100 R 35 50 1 1 P -X ~ 41 -150 -750 100 R 35 50 1 1 P -X ~ 51 -150 -1250 100 R 35 50 1 1 P -X ~ 12 150 750 100 L 35 50 1 1 P -X ~ 22 150 250 100 L 35 50 1 1 P -X ~ 32 150 -250 100 L 35 50 1 1 P -X ~ 42 150 -750 100 L 35 50 1 1 P -X ~ 52 150 -1250 100 L 35 50 1 1 P -X ~ 13 -150 650 100 R 35 50 1 1 P -X ~ 23 -150 150 100 R 35 50 1 1 P -X ~ 33 -150 -350 100 R 35 50 1 1 P -X ~ 43 -150 -850 100 R 35 50 1 1 P -X ~ 14 150 650 100 L 35 50 1 1 P -X ~ 24 150 150 100 L 35 50 1 1 P -X ~ 34 150 -350 100 L 35 50 1 1 P -X ~ 44 150 -850 100 L 35 50 1 1 P -X ~ 15 -150 550 100 R 35 50 1 1 P -X ~ 25 -150 50 100 R 35 50 1 1 P -X ~ 35 -150 -450 100 R 35 50 1 1 P -X ~ 45 -150 -950 100 R 35 50 1 1 P -X ~ 16 150 550 100 L 35 50 1 1 P -X ~ 26 150 50 100 L 35 50 1 1 P -X ~ 36 150 -450 100 L 35 50 1 1 P -X ~ 46 150 -950 100 L 35 50 1 1 P -X ~ 17 -150 450 100 R 35 50 1 1 P -X ~ 27 -150 -50 100 R 35 50 1 1 P -X ~ 37 -150 -550 100 R 35 35 1 1 P -X ~ 47 -150 -1050 100 R 35 50 1 1 P -X ~ 18 150 450 100 L 35 50 1 1 P -X ~ 28 150 -50 100 L 35 50 1 1 P -X ~ 38 150 -550 100 L 35 50 1 1 P -X ~ 48 150 -1050 100 L 35 50 1 1 P -X ~ 19 -150 350 100 R 35 50 1 1 P -X ~ 29 -150 -150 100 R 35 50 1 1 P -X ~ 39 -150 -650 100 R 35 50 1 1 P -X ~ 49 -150 -1150 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_27x2 -# -DEF HEADER_27x2 J 0 0 Y Y 1 F N -F0 "J" 0 1400 60 H V C CNN -F1 "HEADER_27x2" 0 -1400 60 H V C CNN -F2 "" 0 -150 60 H V C CNN -F3 "" 0 -150 60 H V C CNN -DRAW -S 50 -1350 -50 1350 0 1 0 N -X ~ 1 -150 1300 100 R 35 50 1 1 P -X ~ 2 150 1300 100 L 35 50 1 1 P -X ~ 3 -150 1200 100 R 35 50 1 1 P -X ~ 4 150 1200 100 L 35 50 1 1 P -X ~ 5 -150 1100 100 R 35 50 1 1 P -X ~ 6 150 1100 100 L 35 50 1 1 P -X ~ 7 -150 1000 100 R 35 50 1 1 P -X ~ 8 150 1000 100 L 35 50 1 1 P -X ~ 9 -150 900 100 R 35 50 1 1 P -X ~ 10 150 900 100 L 35 50 1 1 P -X ~ 20 150 400 100 L 35 50 1 1 P -X ~ 30 150 -100 100 L 35 50 1 1 P -X ~ 40 150 -600 100 L 35 50 1 1 P -X ~ 50 150 -1100 100 L 35 50 1 1 P -X ~ 11 -150 800 100 R 35 50 1 1 P -X ~ 21 -150 300 100 R 35 50 1 1 P -X ~ 31 -150 -200 100 R 35 50 1 1 P -X ~ 41 -150 -700 100 R 35 50 1 1 P -X ~ 51 -150 -1200 100 R 35 50 1 1 P -X ~ 12 150 800 100 L 35 50 1 1 P -X ~ 22 150 300 100 L 35 50 1 1 P -X ~ 32 150 -200 100 L 35 50 1 1 P -X ~ 42 150 -700 100 L 35 50 1 1 P -X ~ 52 150 -1200 100 L 35 50 1 1 P -X ~ 13 -150 700 100 R 35 50 1 1 P -X ~ 23 -150 200 100 R 35 50 1 1 P -X ~ 33 -150 -300 100 R 35 50 1 1 P -X ~ 43 -150 -800 100 R 35 50 1 1 P -X ~ 53 -150 -1300 100 R 35 50 1 1 P -X ~ 14 150 700 100 L 35 50 1 1 P -X ~ 24 150 200 100 L 35 50 1 1 P -X ~ 34 150 -300 100 L 35 50 1 1 P -X ~ 44 150 -800 100 L 35 50 1 1 P -X ~ 54 150 -1300 100 L 35 50 1 1 P -X ~ 15 -150 600 100 R 35 50 1 1 P -X ~ 25 -150 100 100 R 35 50 1 1 P -X ~ 35 -150 -400 100 R 35 50 1 1 P -X ~ 45 -150 -900 100 R 35 50 1 1 P -X ~ 16 150 600 100 L 35 50 1 1 P -X ~ 26 150 100 100 L 35 50 1 1 P -X ~ 36 150 -400 100 L 35 50 1 1 P -X ~ 46 150 -900 100 L 35 50 1 1 P -X ~ 17 -150 500 100 R 35 50 1 1 P -X ~ 27 -150 0 100 R 35 50 1 1 P -X ~ 37 -150 -500 100 R 35 35 1 1 P -X ~ 47 -150 -1000 100 R 35 50 1 1 P -X ~ 18 150 500 100 L 35 50 1 1 P -X ~ 28 150 0 100 L 35 50 1 1 P -X ~ 38 150 -500 100 L 35 50 1 1 P -X ~ 48 150 -1000 100 L 35 50 1 1 P -X ~ 19 -150 400 100 R 35 50 1 1 P -X ~ 29 -150 -100 100 R 35 50 1 1 P -X ~ 39 -150 -600 100 R 35 50 1 1 P -X ~ 49 -150 -1100 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_28x2 -# -DEF HEADER_28x2 J 0 0 Y Y 1 F N -F0 "J" 0 1450 60 H V C CNN -F1 "HEADER_28x2" 0 -1450 60 H V C CNN -F2 "" 0 -100 60 H V C CNN -F3 "" 0 -100 60 H V C CNN -DRAW -S 50 -1400 -50 1400 0 1 0 N -X ~ 1 -150 1350 100 R 35 50 1 1 P -X ~ 2 150 1350 100 L 35 50 1 1 P -X ~ 3 -150 1250 100 R 35 50 1 1 P -X ~ 4 150 1250 100 L 35 50 1 1 P -X ~ 5 -150 1150 100 R 35 50 1 1 P -X ~ 6 150 1150 100 L 35 50 1 1 P -X ~ 7 -150 1050 100 R 35 50 1 1 P -X ~ 8 150 1050 100 L 35 50 1 1 P -X ~ 9 -150 950 100 R 35 50 1 1 P -X ~ 10 150 950 100 L 35 50 1 1 P -X ~ 20 150 450 100 L 35 50 1 1 P -X ~ 30 150 -50 100 L 35 50 1 1 P -X ~ 40 150 -550 100 L 35 50 1 1 P -X ~ 50 150 -1050 100 L 35 50 1 1 P -X ~ 11 -150 850 100 R 35 50 1 1 P -X ~ 21 -150 350 100 R 35 50 1 1 P -X ~ 31 -150 -150 100 R 35 50 1 1 P -X ~ 41 -150 -650 100 R 35 50 1 1 P -X ~ 51 -150 -1150 100 R 35 50 1 1 P -X ~ 12 150 850 100 L 35 50 1 1 P -X ~ 22 150 350 100 L 35 50 1 1 P -X ~ 32 150 -150 100 L 35 50 1 1 P -X ~ 42 150 -650 100 L 35 50 1 1 P -X ~ 52 150 -1150 100 L 35 50 1 1 P -X ~ 13 -150 750 100 R 35 50 1 1 P -X ~ 23 -150 250 100 R 35 50 1 1 P -X ~ 33 -150 -250 100 R 35 50 1 1 P -X ~ 43 -150 -750 100 R 35 50 1 1 P -X ~ 53 -150 -1250 100 R 35 50 1 1 P -X ~ 14 150 750 100 L 35 50 1 1 P -X ~ 24 150 250 100 L 35 50 1 1 P -X ~ 34 150 -250 100 L 35 50 1 1 P -X ~ 44 150 -750 100 L 35 50 1 1 P -X ~ 54 150 -1250 100 L 35 50 1 1 P -X ~ 15 -150 650 100 R 35 50 1 1 P -X ~ 25 -150 150 100 R 35 50 1 1 P -X ~ 35 -150 -350 100 R 35 50 1 1 P -X ~ 45 -150 -850 100 R 35 50 1 1 P -X ~ 55 -150 -1350 100 R 35 50 1 1 P -X ~ 16 150 650 100 L 35 50 1 1 P -X ~ 26 150 150 100 L 35 50 1 1 P -X ~ 36 150 -350 100 L 35 50 1 1 P -X ~ 46 150 -850 100 L 35 50 1 1 P -X ~ 56 150 -1350 100 L 35 50 1 1 P -X ~ 17 -150 550 100 R 35 50 1 1 P -X ~ 27 -150 50 100 R 35 50 1 1 P -X ~ 37 -150 -450 100 R 35 35 1 1 P -X ~ 47 -150 -950 100 R 35 50 1 1 P -X ~ 18 150 550 100 L 35 50 1 1 P -X ~ 28 150 50 100 L 35 50 1 1 P -X ~ 38 150 -450 100 L 35 50 1 1 P -X ~ 48 150 -950 100 L 35 50 1 1 P -X ~ 19 -150 450 100 R 35 50 1 1 P -X ~ 29 -150 -50 100 R 35 50 1 1 P -X ~ 39 -150 -550 100 R 35 50 1 1 P -X ~ 49 -150 -1050 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_29x2 -# -DEF HEADER_29x2 J 0 0 Y Y 1 F N -F0 "J" 0 1500 60 H V C CNN -F1 "HEADER_29x2" 0 -1500 60 H V C CNN -F2 "" 0 -50 60 H V C CNN -F3 "" 0 -50 60 H V C CNN -DRAW -S 50 -1450 -50 1450 0 1 0 N -X ~ 1 -150 1400 100 R 35 50 1 1 P -X ~ 2 150 1400 100 L 35 50 1 1 P -X ~ 3 -150 1300 100 R 35 50 1 1 P -X ~ 4 150 1300 100 L 35 50 1 1 P -X ~ 5 -150 1200 100 R 35 50 1 1 P -X ~ 6 150 1200 100 L 35 50 1 1 P -X ~ 7 -150 1100 100 R 35 50 1 1 P -X ~ 8 150 1100 100 L 35 50 1 1 P -X ~ 9 -150 1000 100 R 35 50 1 1 P -X ~ 10 150 1000 100 L 35 50 1 1 P -X ~ 20 150 500 100 L 35 50 1 1 P -X ~ 30 150 0 100 L 35 50 1 1 P -X ~ 40 150 -500 100 L 35 50 1 1 P -X ~ 50 150 -1000 100 L 35 50 1 1 P -X ~ 11 -150 900 100 R 35 50 1 1 P -X ~ 21 -150 400 100 R 35 50 1 1 P -X ~ 31 -150 -100 100 R 35 50 1 1 P -X ~ 41 -150 -600 100 R 35 50 1 1 P -X ~ 51 -150 -1100 100 R 35 50 1 1 P -X ~ 12 150 900 100 L 35 50 1 1 P -X ~ 22 150 400 100 L 35 50 1 1 P -X ~ 32 150 -100 100 L 35 50 1 1 P -X ~ 42 150 -600 100 L 35 50 1 1 P -X ~ 52 150 -1100 100 L 35 50 1 1 P -X ~ 13 -150 800 100 R 35 50 1 1 P -X ~ 23 -150 300 100 R 35 50 1 1 P -X ~ 33 -150 -200 100 R 35 50 1 1 P -X ~ 43 -150 -700 100 R 35 50 1 1 P -X ~ 53 -150 -1200 100 R 35 50 1 1 P -X ~ 14 150 800 100 L 35 50 1 1 P -X ~ 24 150 300 100 L 35 50 1 1 P -X ~ 34 150 -200 100 L 35 50 1 1 P -X ~ 44 150 -700 100 L 35 50 1 1 P -X ~ 54 150 -1200 100 L 35 50 1 1 P -X ~ 15 -150 700 100 R 35 50 1 1 P -X ~ 25 -150 200 100 R 35 50 1 1 P -X ~ 35 -150 -300 100 R 35 50 1 1 P -X ~ 45 -150 -800 100 R 35 50 1 1 P -X ~ 55 -150 -1300 100 R 35 50 1 1 P -X ~ 16 150 700 100 L 35 50 1 1 P -X ~ 26 150 200 100 L 35 50 1 1 P -X ~ 36 150 -300 100 L 35 50 1 1 P -X ~ 46 150 -800 100 L 35 50 1 1 P -X ~ 56 150 -1300 100 L 35 50 1 1 P -X ~ 17 -150 600 100 R 35 50 1 1 P -X ~ 27 -150 100 100 R 35 50 1 1 P -X ~ 37 -150 -400 100 R 35 35 1 1 P -X ~ 47 -150 -900 100 R 35 50 1 1 P -X ~ 57 -150 -1400 100 R 35 50 1 1 P -X ~ 18 150 600 100 L 35 50 1 1 P -X ~ 28 150 100 100 L 35 50 1 1 P -X ~ 38 150 -400 100 L 35 50 1 1 P -X ~ 48 150 -900 100 L 35 50 1 1 P -X ~ 58 150 -1400 100 L 35 50 1 1 P -X ~ 19 -150 500 100 R 35 50 1 1 P -X ~ 29 -150 0 100 R 35 50 1 1 P -X ~ 39 -150 -500 100 R 35 50 1 1 P -X ~ 49 -150 -1000 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_2x2 -# -DEF HEADER_2x2 J 0 0 Y Y 1 F N -F0 "J" 0 150 60 H V C CNN -F1 "HEADER_2x2" 0 -150 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 50 100 -50 -100 0 1 0 N -S 50 100 -50 -100 0 1 0 N -X ~ 1 -150 50 100 R 35 50 1 1 P -X ~ 2 150 50 100 L 35 50 1 1 P -X ~ 3 -150 -50 100 R 35 50 1 1 P -X ~ 4 150 -50 100 L 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_3 -# -DEF HEADER_3 J 0 0 Y Y 1 F N -F0 "J" 0 200 60 H V C CNN -F1 "HEADER_3" 0 -200 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 100 150 0 -150 0 1 0 N -X ~ 1 -100 100 100 R 35 50 1 1 P -X ~ 2 -100 0 100 R 35 50 1 1 P -X ~ 3 -100 -100 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_30x2 -# -DEF HEADER_30x2 J 0 0 Y Y 1 F N -F0 "J" 0 1550 60 H V C CNN -F1 "HEADER_30x2" 0 -1550 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 50 -1500 -50 1500 0 1 0 N -X ~ 1 -150 1450 100 R 35 50 1 1 P -X ~ 2 150 1450 100 L 35 50 1 1 P -X ~ 3 -150 1350 100 R 35 50 1 1 P -X ~ 4 150 1350 100 L 35 50 1 1 P -X ~ 5 -150 1250 100 R 35 50 1 1 P -X ~ 6 150 1250 100 L 35 50 1 1 P -X ~ 7 -150 1150 100 R 35 50 1 1 P -X ~ 8 150 1150 100 L 35 50 1 1 P -X ~ 9 -150 1050 100 R 35 50 1 1 P -X ~ 10 150 1050 100 L 35 50 1 1 P -X ~ 20 150 550 100 L 35 50 1 1 P -X ~ 30 150 50 100 L 35 50 1 1 P -X ~ 40 150 -450 100 L 35 50 1 1 P -X ~ 50 150 -950 100 L 35 50 1 1 P -X ~ 60 150 -1450 100 L 35 50 1 1 P -X ~ 11 -150 950 100 R 35 50 1 1 P -X ~ 21 -150 450 100 R 35 50 1 1 P -X ~ 31 -150 -50 100 R 35 50 1 1 P -X ~ 41 -150 -550 100 R 35 50 1 1 P -X ~ 51 -150 -1050 100 R 35 50 1 1 P -X ~ 12 150 950 100 L 35 50 1 1 P -X ~ 22 150 450 100 L 35 50 1 1 P -X ~ 32 150 -50 100 L 35 50 1 1 P -X ~ 42 150 -550 100 L 35 50 1 1 P -X ~ 52 150 -1050 100 L 35 50 1 1 P -X ~ 13 -150 850 100 R 35 50 1 1 P -X ~ 23 -150 350 100 R 35 50 1 1 P -X ~ 33 -150 -150 100 R 35 50 1 1 P -X ~ 43 -150 -650 100 R 35 50 1 1 P -X ~ 53 -150 -1150 100 R 35 50 1 1 P -X ~ 14 150 850 100 L 35 50 1 1 P -X ~ 24 150 350 100 L 35 50 1 1 P -X ~ 34 150 -150 100 L 35 50 1 1 P -X ~ 44 150 -650 100 L 35 50 1 1 P -X ~ 54 150 -1150 100 L 35 50 1 1 P -X ~ 15 -150 750 100 R 35 50 1 1 P -X ~ 25 -150 250 100 R 35 50 1 1 P -X ~ 35 -150 -250 100 R 35 50 1 1 P -X ~ 45 -150 -750 100 R 35 50 1 1 P -X ~ 55 -150 -1250 100 R 35 50 1 1 P -X ~ 16 150 750 100 L 35 50 1 1 P -X ~ 26 150 250 100 L 35 50 1 1 P -X ~ 36 150 -250 100 L 35 50 1 1 P -X ~ 46 150 -750 100 L 35 50 1 1 P -X ~ 56 150 -1250 100 L 35 50 1 1 P -X ~ 17 -150 650 100 R 35 50 1 1 P -X ~ 27 -150 150 100 R 35 50 1 1 P -X ~ 37 -150 -350 100 R 35 35 1 1 P -X ~ 47 -150 -850 100 R 35 50 1 1 P -X ~ 57 -150 -1350 100 R 35 50 1 1 P -X ~ 18 150 650 100 L 35 50 1 1 P -X ~ 28 150 150 100 L 35 50 1 1 P -X ~ 38 150 -350 100 L 35 50 1 1 P -X ~ 48 150 -850 100 L 35 50 1 1 P -X ~ 58 150 -1350 100 L 35 50 1 1 P -X ~ 19 -150 550 100 R 35 50 1 1 P -X ~ 29 -150 50 100 R 35 50 1 1 P -X ~ 39 -150 -450 100 R 35 50 1 1 P -X ~ 49 -150 -950 100 R 35 50 1 1 P -X ~ 59 -150 -1450 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_31x2 -# -DEF HEADER_31x2 J 0 0 Y Y 1 F N -F0 "J" 0 1600 60 H V C CNN -F1 "HEADER_31x2" 0 -1600 60 H V C CNN -F2 "" 0 -50 60 H V C CNN -F3 "" 0 -50 60 H V C CNN -DRAW -S 50 -1550 -50 1550 0 1 0 N -X ~ 1 -150 1500 100 R 35 50 1 1 P -X ~ 2 150 1500 100 L 35 50 1 1 P -X ~ 3 -150 1400 100 R 35 50 1 1 P -X ~ 4 150 1400 100 L 35 50 1 1 P -X ~ 5 -150 1300 100 R 35 50 1 1 P -X ~ 6 150 1300 100 L 35 50 1 1 P -X ~ 7 -150 1200 100 R 35 50 1 1 P -X ~ 8 150 1200 100 L 35 50 1 1 P -X ~ 9 -150 1100 100 R 35 50 1 1 P -X ~ 10 150 1100 100 L 35 50 1 1 P -X ~ 20 150 600 100 L 35 50 1 1 P -X ~ 30 150 100 100 L 35 50 1 1 P -X ~ 40 150 -400 100 L 35 50 1 1 P -X ~ 50 150 -900 100 L 35 50 1 1 P -X ~ 60 150 -1400 100 L 35 50 1 1 P -X ~ 11 -150 1000 100 R 35 50 1 1 P -X ~ 21 -150 500 100 R 35 50 1 1 P -X ~ 31 -150 0 100 R 35 50 1 1 P -X ~ 41 -150 -500 100 R 35 50 1 1 P -X ~ 51 -150 -1000 100 R 35 50 1 1 P -X ~ 61 -150 -1500 100 R 35 50 1 1 P -X ~ 12 150 1000 100 L 35 50 1 1 P -X ~ 22 150 500 100 L 35 50 1 1 P -X ~ 32 150 0 100 L 35 50 1 1 P -X ~ 42 150 -500 100 L 35 50 1 1 P -X ~ 52 150 -1000 100 L 35 50 1 1 P -X ~ 62 150 -1500 100 L 35 50 1 1 P -X ~ 13 -150 900 100 R 35 50 1 1 P -X ~ 23 -150 400 100 R 35 50 1 1 P -X ~ 33 -150 -100 100 R 35 50 1 1 P -X ~ 43 -150 -600 100 R 35 50 1 1 P -X ~ 53 -150 -1100 100 R 35 50 1 1 P -X ~ 14 150 900 100 L 35 50 1 1 P -X ~ 24 150 400 100 L 35 50 1 1 P -X ~ 34 150 -100 100 L 35 50 1 1 P -X ~ 44 150 -600 100 L 35 50 1 1 P -X ~ 54 150 -1100 100 L 35 50 1 1 P -X ~ 15 -150 800 100 R 35 50 1 1 P -X ~ 25 -150 300 100 R 35 50 1 1 P -X ~ 35 -150 -200 100 R 35 50 1 1 P -X ~ 45 -150 -700 100 R 35 50 1 1 P -X ~ 55 -150 -1200 100 R 35 50 1 1 P -X ~ 16 150 800 100 L 35 50 1 1 P -X ~ 26 150 300 100 L 35 50 1 1 P -X ~ 36 150 -200 100 L 35 50 1 1 P -X ~ 46 150 -700 100 L 35 50 1 1 P -X ~ 56 150 -1200 100 L 35 50 1 1 P -X ~ 17 -150 700 100 R 35 50 1 1 P -X ~ 27 -150 200 100 R 35 50 1 1 P -X ~ 37 -150 -300 100 R 35 35 1 1 P -X ~ 47 -150 -800 100 R 35 50 1 1 P -X ~ 57 -150 -1300 100 R 35 50 1 1 P -X ~ 18 150 700 100 L 35 50 1 1 P -X ~ 28 150 200 100 L 35 50 1 1 P -X ~ 38 150 -300 100 L 35 50 1 1 P -X ~ 48 150 -800 100 L 35 50 1 1 P -X ~ 58 150 -1300 100 L 35 50 1 1 P -X ~ 19 -150 600 100 R 35 50 1 1 P -X ~ 29 -150 100 100 R 35 50 1 1 P -X ~ 39 -150 -400 100 R 35 50 1 1 P -X ~ 49 -150 -900 100 R 35 50 1 1 P -X ~ 59 -150 -1400 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_32x2 -# -DEF HEADER_32x2 J 0 0 Y Y 1 F N -F0 "J" 0 1650 60 H V C CNN -F1 "HEADER_32x2" 0 -1650 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 50 -1600 -50 1600 0 1 0 N -X ~ 1 -150 1550 100 R 35 50 1 1 P -X ~ 2 150 1550 100 L 35 50 1 1 P -X ~ 3 -150 1450 100 R 35 50 1 1 P -X ~ 4 150 1450 100 L 35 50 1 1 P -X ~ 5 -150 1350 100 R 35 50 1 1 P -X ~ 6 150 1350 100 L 35 50 1 1 P -X ~ 7 -150 1250 100 R 35 50 1 1 P -X ~ 8 150 1250 100 L 35 50 1 1 P -X ~ 9 -150 1150 100 R 35 50 1 1 P -X ~ 10 150 1150 100 L 35 50 1 1 P -X ~ 20 150 650 100 L 35 50 1 1 P -X ~ 30 150 150 100 L 35 50 1 1 P -X ~ 40 150 -350 100 L 35 50 1 1 P -X ~ 50 150 -850 100 L 35 50 1 1 P -X ~ 60 150 -1350 100 L 35 50 1 1 P -X ~ 11 -150 1050 100 R 35 50 1 1 P -X ~ 21 -150 550 100 R 35 50 1 1 P -X ~ 31 -150 50 100 R 35 50 1 1 P -X ~ 41 -150 -450 100 R 35 50 1 1 P -X ~ 51 -150 -950 100 R 35 50 1 1 P -X ~ 61 -150 -1450 100 R 35 50 1 1 P -X ~ 12 150 1050 100 L 35 50 1 1 P -X ~ 22 150 550 100 L 35 50 1 1 P -X ~ 32 150 50 100 L 35 50 1 1 P -X ~ 42 150 -450 100 L 35 50 1 1 P -X ~ 52 150 -950 100 L 35 50 1 1 P -X ~ 62 150 -1450 100 L 35 50 1 1 P -X ~ 13 -150 950 100 R 35 50 1 1 P -X ~ 23 -150 450 100 R 35 50 1 1 P -X ~ 33 -150 -50 100 R 35 50 1 1 P -X ~ 43 -150 -550 100 R 35 50 1 1 P -X ~ 53 -150 -1050 100 R 35 50 1 1 P -X ~ 63 -150 -1550 100 R 35 50 1 1 P -X ~ 14 150 950 100 L 35 50 1 1 P -X ~ 24 150 450 100 L 35 50 1 1 P -X ~ 34 150 -50 100 L 35 50 1 1 P -X ~ 44 150 -550 100 L 35 50 1 1 P -X ~ 54 150 -1050 100 L 35 50 1 1 P -X ~ 64 150 -1550 100 L 35 50 1 1 P -X ~ 15 -150 850 100 R 35 50 1 1 P -X ~ 25 -150 350 100 R 35 50 1 1 P -X ~ 35 -150 -150 100 R 35 50 1 1 P -X ~ 45 -150 -650 100 R 35 50 1 1 P -X ~ 55 -150 -1150 100 R 35 50 1 1 P -X ~ 16 150 850 100 L 35 50 1 1 P -X ~ 26 150 350 100 L 35 50 1 1 P -X ~ 36 150 -150 100 L 35 50 1 1 P -X ~ 46 150 -650 100 L 35 50 1 1 P -X ~ 56 150 -1150 100 L 35 50 1 1 P -X ~ 17 -150 750 100 R 35 50 1 1 P -X ~ 27 -150 250 100 R 35 50 1 1 P -X ~ 37 -150 -250 100 R 35 35 1 1 P -X ~ 47 -150 -750 100 R 35 50 1 1 P -X ~ 57 -150 -1250 100 R 35 50 1 1 P -X ~ 18 150 750 100 L 35 50 1 1 P -X ~ 28 150 250 100 L 35 50 1 1 P -X ~ 38 150 -250 100 L 35 50 1 1 P -X ~ 48 150 -750 100 L 35 50 1 1 P -X ~ 58 150 -1250 100 L 35 50 1 1 P -X ~ 19 -150 650 100 R 35 50 1 1 P -X ~ 29 -150 150 100 R 35 50 1 1 P -X ~ 39 -150 -350 100 R 35 50 1 1 P -X ~ 49 -150 -850 100 R 35 50 1 1 P -X ~ 59 -150 -1350 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_33x2 -# -DEF HEADER_33x2 J 0 0 Y Y 1 F N -F0 "J" 0 1700 60 H V C CNN -F1 "HEADER_33x2" 0 -1700 60 H V C CNN -F2 "" 0 -50 60 H V C CNN -F3 "" 0 -50 60 H V C CNN -DRAW -S 50 -1650 -50 1650 0 1 0 N -X ~ 1 -150 1600 100 R 35 50 1 1 P -X ~ 2 150 1600 100 L 35 50 1 1 P -X ~ 3 -150 1500 100 R 35 50 1 1 P -X ~ 4 150 1500 100 L 35 50 1 1 P -X ~ 5 -150 1400 100 R 35 50 1 1 P -X ~ 6 150 1400 100 L 35 50 1 1 P -X ~ 7 -150 1300 100 R 35 50 1 1 P -X ~ 8 150 1300 100 L 35 50 1 1 P -X ~ 9 -150 1200 100 R 35 50 1 1 P -X ~ 10 150 1200 100 L 35 50 1 1 P -X ~ 20 150 700 100 L 35 50 1 1 P -X ~ 30 150 200 100 L 35 50 1 1 P -X ~ 40 150 -300 100 L 35 50 1 1 P -X ~ 50 150 -800 100 L 35 50 1 1 P -X ~ 60 150 -1300 100 L 35 50 1 1 P -X ~ 11 -150 1100 100 R 35 50 1 1 P -X ~ 21 -150 600 100 R 35 50 1 1 P -X ~ 31 -150 100 100 R 35 50 1 1 P -X ~ 41 -150 -400 100 R 35 50 1 1 P -X ~ 51 -150 -900 100 R 35 50 1 1 P -X ~ 61 -150 -1400 100 R 35 50 1 1 P -X ~ 12 150 1100 100 L 35 50 1 1 P -X ~ 22 150 600 100 L 35 50 1 1 P -X ~ 32 150 100 100 L 35 50 1 1 P -X ~ 42 150 -400 100 L 35 50 1 1 P -X ~ 52 150 -900 100 L 35 50 1 1 P -X ~ 62 150 -1400 100 L 35 50 1 1 P -X ~ 13 -150 1000 100 R 35 50 1 1 P -X ~ 23 -150 500 100 R 35 50 1 1 P -X ~ 33 -150 0 100 R 35 50 1 1 P -X ~ 43 -150 -500 100 R 35 50 1 1 P -X ~ 53 -150 -1000 100 R 35 50 1 1 P -X ~ 63 -150 -1500 100 R 35 35 1 1 P -X ~ 14 150 1000 100 L 35 50 1 1 P -X ~ 24 150 500 100 L 35 50 1 1 P -X ~ 34 150 0 100 L 35 50 1 1 P -X ~ 44 150 -500 100 L 35 50 1 1 P -X ~ 54 150 -1000 100 L 35 50 1 1 P -X ~ 64 150 -1500 100 L 35 50 1 1 P -X ~ 15 -150 900 100 R 35 50 1 1 P -X ~ 25 -150 400 100 R 35 50 1 1 P -X ~ 35 -150 -100 100 R 35 50 1 1 P -X ~ 45 -150 -600 100 R 35 50 1 1 P -X ~ 55 -150 -1100 100 R 35 50 1 1 P -X ~ 65 -150 -1600 98 R 35 20 1 1 P -X ~ 16 150 900 100 L 35 50 1 1 P -X ~ 26 150 400 100 L 35 50 1 1 P -X ~ 36 150 -100 100 L 35 50 1 1 P -X ~ 46 150 -600 100 L 35 50 1 1 P -X ~ 56 150 -1100 100 L 35 50 1 1 P -X ~ 66 150 -1600 98 L 35 20 1 1 P -X ~ 17 -150 800 100 R 35 50 1 1 P -X ~ 27 -150 300 100 R 35 50 1 1 P -X ~ 37 -150 -200 100 R 35 50 1 1 P -X ~ 47 -150 -700 100 R 35 50 1 1 P -X ~ 57 -150 -1200 100 R 35 50 1 1 P -X ~ 18 150 800 100 L 35 50 1 1 P -X ~ 28 150 300 100 L 35 50 1 1 P -X ~ 38 150 -200 100 L 35 50 1 1 P -X ~ 48 150 -700 100 L 35 50 1 1 P -X ~ 58 150 -1200 100 L 35 50 1 1 P -X ~ 19 -150 700 100 R 35 50 1 1 P -X ~ 29 -150 200 100 R 35 50 1 1 P -X ~ 39 -150 -300 100 R 35 50 1 1 P -X ~ 49 -150 -800 100 R 35 50 1 1 P -X ~ 59 -150 -1300 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_34x2 -# -DEF HEADER_34x2 J 0 0 Y Y 1 F N -F0 "J" 0 1750 60 H V C CNN -F1 "HEADER_34x2" -50 -1750 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 50 -1700 -50 1700 0 1 0 N -X ~ 1 -150 1650 100 R 35 50 1 1 P -X ~ 2 150 1650 100 L 35 50 1 1 P -X ~ 3 -150 1550 100 R 35 50 1 1 P -X ~ 4 150 1550 100 L 35 50 1 1 P -X ~ 5 -150 1450 100 R 35 50 1 1 P -X ~ 6 150 1450 100 L 35 50 1 1 P -X ~ 7 -150 1350 100 R 35 50 1 1 P -X ~ 8 150 1350 100 L 35 50 1 1 P -X ~ 9 -150 1250 100 R 35 50 1 1 P -X ~ 10 150 1250 100 L 35 50 1 1 P -X ~ 20 150 750 100 L 35 50 1 1 P -X ~ 30 150 250 100 L 35 50 1 1 P -X ~ 40 150 -250 100 L 35 50 1 1 P -X ~ 50 150 -750 100 L 35 50 1 1 P -X ~ 60 150 -1250 100 L 35 50 1 1 P -X ~ 11 -150 1150 100 R 35 50 1 1 P -X ~ 21 -150 650 100 R 35 50 1 1 P -X ~ 31 -150 150 100 R 35 50 1 1 P -X ~ 41 -150 -350 100 R 35 50 1 1 P -X ~ 51 -150 -850 100 R 35 50 1 1 P -X ~ 61 -150 -1350 100 R 35 50 1 1 P -X ~ 12 150 1150 100 L 35 50 1 1 P -X ~ 22 150 650 100 L 35 50 1 1 P -X ~ 32 150 150 100 L 35 50 1 1 P -X ~ 42 150 -350 100 L 35 50 1 1 P -X ~ 52 150 -850 100 L 35 50 1 1 P -X ~ 62 150 -1350 100 L 35 50 1 1 P -X ~ 13 -150 1050 100 R 35 50 1 1 P -X ~ 23 -150 550 100 R 35 50 1 1 P -X ~ 33 -150 50 100 R 35 50 1 1 P -X ~ 43 -150 -450 100 R 35 50 1 1 P -X ~ 53 -150 -950 100 R 35 50 1 1 P -X ~ 63 -150 -1450 100 R 35 35 1 1 P -X ~ 14 150 1050 100 L 35 50 1 1 P -X ~ 24 150 550 100 L 35 50 1 1 P -X ~ 34 150 50 100 L 35 50 1 1 P -X ~ 44 150 -450 100 L 35 50 1 1 P -X ~ 54 150 -950 100 L 35 50 1 1 P -X ~ 64 150 -1450 100 L 35 50 1 1 P -X ~ 15 -150 950 100 R 35 50 1 1 P -X ~ 25 -150 450 100 R 35 50 1 1 P -X ~ 35 -150 -50 100 R 35 50 1 1 P -X ~ 45 -150 -550 100 R 35 50 1 1 P -X ~ 55 -150 -1050 100 R 35 50 1 1 P -X ~ 65 -150 -1550 98 R 35 20 1 1 P -X ~ 16 150 950 100 L 35 50 1 1 P -X ~ 26 150 450 100 L 35 50 1 1 P -X ~ 36 150 -50 100 L 35 50 1 1 P -X ~ 46 150 -550 100 L 35 50 1 1 P -X ~ 56 150 -1050 100 L 35 50 1 1 P -X ~ 66 150 -1550 98 L 35 20 1 1 P -X ~ 17 -150 850 100 R 35 50 1 1 P -X ~ 27 -150 350 100 R 35 50 1 1 P -X ~ 37 -150 -150 100 R 35 50 1 1 P -X ~ 47 -150 -650 100 R 35 50 1 1 P -X ~ 57 -150 -1150 100 R 35 50 1 1 P -X ~ 67 -150 -1650 98 R 35 20 1 1 P -X ~ 18 150 850 100 L 35 50 1 1 P -X ~ 28 150 350 100 L 35 50 1 1 P -X ~ 38 150 -150 100 L 35 50 1 1 P -X ~ 48 150 -650 100 L 35 50 1 1 P -X ~ 58 150 -1150 100 L 35 50 1 1 P -X ~ 68 150 -1650 98 L 35 20 1 1 P -X ~ 19 -150 750 100 R 35 50 1 1 P -X ~ 29 -150 250 100 R 35 50 1 1 P -X ~ 39 -150 -250 100 R 35 50 1 1 P -X ~ 49 -150 -750 100 R 35 50 1 1 P -X ~ 59 -150 -1250 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_35x2 -# -DEF HEADER_35x2 J 0 0 Y Y 1 F N -F0 "J" 0 950 60 H V C CNN -F1 "HEADER_35x2" 0 -1000 60 H V C CNN -F2 "" 0 -100 60 H V C CNN -F3 "" 0 -100 60 H V C CNN -DRAW -S 50 -950 -50 900 0 1 0 N -P 2 0 1 0 -150 -800 -50 -800 N -P 2 0 1 0 -150 -700 -50 -700 N -P 2 0 1 0 -150 -600 -50 -600 N -P 2 0 1 0 -150 -500 -50 -500 N -P 2 0 1 0 -150 -400 -50 -400 N -P 2 0 1 0 -150 -300 -50 -300 N -P 2 0 1 0 -150 -200 -50 -200 N -P 2 0 1 0 -150 -100 -50 -100 N -P 2 0 1 0 -150 0 -50 0 N -P 2 0 1 0 -150 100 -50 100 N -P 2 0 1 0 -150 200 -50 200 N -P 2 0 1 0 -150 300 -50 300 N -P 2 0 1 0 -150 400 -50 400 N -P 2 0 1 0 -150 500 -50 500 N -P 2 0 1 0 -150 600 -50 600 N -P 2 0 1 0 -150 700 -50 700 N -P 2 0 1 0 -150 800 -50 800 N -P 2 0 1 0 50 -800 150 -800 N -P 2 0 1 0 50 -700 150 -700 N -P 2 0 1 0 50 -600 150 -600 N -P 2 0 1 0 50 -500 150 -500 N -P 2 0 1 0 50 -400 150 -400 N -P 2 0 1 0 50 -300 150 -300 N -P 2 0 1 0 50 -200 150 -200 N -P 2 0 1 0 50 -100 150 -100 N -P 2 0 1 0 50 0 150 0 N -P 2 0 1 0 50 100 150 100 N -P 2 0 1 0 50 200 150 200 N -P 2 0 1 0 50 300 150 300 N -P 2 0 1 0 50 400 150 400 N -P 2 0 1 0 50 500 150 500 N -P 2 0 1 0 50 600 150 600 N -P 2 0 1 0 50 700 150 700 N -P 2 0 1 0 50 800 150 800 N -X ~ 1 -150 850 100 R 35 50 1 1 P -X ~ 2 150 850 100 L 35 50 1 1 P -X ~ 3 -250 800 100 R 35 50 1 1 P -X ~ 4 250 800 100 L 35 50 1 1 P -X ~ 5 -150 750 100 R 35 50 1 1 P -X ~ 6 150 750 100 L 35 50 1 1 P -X ~ 7 -250 700 100 R 35 50 1 1 P -X ~ 8 250 700 100 L 35 50 1 1 P -X ~ 9 -150 650 100 R 35 50 1 1 P -X ~ 10 150 650 100 L 35 50 1 1 P -X ~ 20 250 400 100 L 35 50 1 1 P -X ~ 30 150 150 100 L 35 50 1 1 P -X ~ 40 250 -100 100 L 35 50 1 1 P -X ~ 50 150 -350 100 L 35 50 1 1 P -X ~ 60 250 -600 100 L 35 50 1 1 P -X ~ 70 150 -850 100 L 35 50 1 1 P -X ~ 11 -250 600 100 R 35 50 1 1 P -X ~ 21 -150 350 100 R 35 50 1 1 P -X ~ 31 -250 100 100 R 35 50 1 1 P -X ~ 41 -150 -150 100 R 35 50 1 1 P -X ~ 51 -250 -400 100 R 35 50 1 1 P -X ~ 61 -150 -650 100 R 35 50 1 1 P -X ~ 12 250 600 100 L 35 50 1 1 P -X ~ 22 150 350 100 L 35 50 1 1 P -X ~ 32 250 100 100 L 35 50 1 1 P -X ~ 42 150 -150 100 L 35 50 1 1 P -X ~ 52 250 -400 100 L 35 50 1 1 P -X ~ 62 150 -650 100 L 35 50 1 1 P -X ~ 13 -150 550 100 R 35 50 1 1 P -X ~ 23 -250 300 100 R 35 50 1 1 P -X ~ 33 -150 50 100 R 35 50 1 1 P -X ~ 43 -250 -200 100 R 35 50 1 1 P -X ~ 53 -150 -450 100 R 35 50 1 1 P -X ~ 63 -250 -700 100 R 35 50 1 1 P -X ~ 14 150 550 100 L 35 50 1 1 P -X ~ 24 250 300 100 L 35 50 1 1 P -X ~ 34 150 50 100 L 35 50 1 1 P -X ~ 44 250 -200 100 L 35 50 1 1 P -X ~ 54 150 -450 100 L 35 50 1 1 P -X ~ 64 250 -700 100 L 35 50 1 1 P -X ~ 15 -250 500 100 R 35 50 1 1 P -X ~ 25 -150 250 100 R 35 50 1 1 P -X ~ 35 -250 0 100 R 35 50 1 1 P -X ~ 45 -150 -250 100 R 35 50 1 1 P -X ~ 55 -250 -500 100 R 35 50 1 1 P -X ~ 65 -150 -750 100 R 35 50 1 1 P -X ~ 16 250 500 100 L 35 50 1 1 P -X ~ 26 150 250 100 L 35 50 1 1 P -X ~ 36 250 0 100 L 35 50 1 1 P -X ~ 46 150 -250 100 L 35 50 1 1 P -X ~ 56 250 -500 100 L 35 50 1 1 P -X ~ 66 150 -750 100 L 35 50 1 1 P -X ~ 17 -150 450 100 R 35 50 1 1 P -X ~ 27 -250 200 100 R 35 50 1 1 P -X ~ 37 -150 -50 100 R 35 35 1 1 P -X ~ 47 -250 -300 100 R 35 50 1 1 P -X ~ 57 -150 -550 100 R 35 50 1 1 P -X ~ 67 -250 -800 100 R 35 50 1 1 P -X ~ 18 150 450 100 L 35 50 1 1 P -X ~ 28 250 200 100 L 35 50 1 1 P -X ~ 38 150 -50 100 L 35 50 1 1 P -X ~ 48 250 -300 100 L 35 50 1 1 P -X ~ 58 150 -550 100 L 35 50 1 1 P -X ~ 68 250 -800 100 L 35 50 1 1 P -X ~ 19 -250 400 100 R 35 50 1 1 P -X ~ 29 -150 150 100 R 35 50 1 1 P -X ~ 39 -250 -100 100 R 35 50 1 1 P -X ~ 49 -150 -350 100 R 35 50 1 1 P -X ~ 59 -250 -600 100 R 35 50 1 1 P -X ~ 69 -150 -850 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_36x2 -# -DEF HEADER_36x2 J 0 0 Y Y 1 F N -F0 "J" 0 950 60 H V C CNN -F1 "HEADER_36x2" 0 -1000 60 H V C CNN -F2 "" 0 -100 60 H V C CNN -F3 "" 0 -100 60 H V C CNN -DRAW -S 50 -950 -50 900 0 1 0 N -P 2 0 1 0 -150 -900 -50 -900 N -P 2 0 1 0 -150 -800 -50 -800 N -P 2 0 1 0 -150 -700 -50 -700 N -P 2 0 1 0 -150 -600 -50 -600 N -P 2 0 1 0 -150 -500 -50 -500 N -P 2 0 1 0 -150 -400 -50 -400 N -P 2 0 1 0 -150 -300 -50 -300 N -P 2 0 1 0 -150 -200 -50 -200 N -P 2 0 1 0 -150 -100 -50 -100 N -P 2 0 1 0 -150 0 -50 0 N -P 2 0 1 0 -150 100 -50 100 N -P 2 0 1 0 -150 200 -50 200 N -P 2 0 1 0 -150 300 -50 300 N -P 2 0 1 0 -150 400 -50 400 N -P 2 0 1 0 -150 500 -50 500 N -P 2 0 1 0 -150 600 -50 600 N -P 2 0 1 0 -150 700 -50 700 N -P 2 0 1 0 -150 800 -50 800 N -P 2 0 1 0 50 -900 150 -900 N -P 2 0 1 0 50 -800 150 -800 N -P 2 0 1 0 50 -700 150 -700 N -P 2 0 1 0 50 -600 150 -600 N -P 2 0 1 0 50 -500 150 -500 N -P 2 0 1 0 50 -400 150 -400 N -P 2 0 1 0 50 -300 150 -300 N -P 2 0 1 0 50 -200 150 -200 N -P 2 0 1 0 50 -100 150 -100 N -P 2 0 1 0 50 0 150 0 N -P 2 0 1 0 50 100 150 100 N -P 2 0 1 0 50 200 150 200 N -P 2 0 1 0 50 300 150 300 N -P 2 0 1 0 50 400 150 400 N -P 2 0 1 0 50 500 150 500 N -P 2 0 1 0 50 600 150 600 N -P 2 0 1 0 50 700 150 700 N -P 2 0 1 0 50 800 150 800 N -X ~ 1 -150 850 100 R 35 50 1 1 P -X ~ 2 150 850 100 L 35 50 1 1 P -X ~ 3 -250 800 100 R 35 50 1 1 P -X ~ 4 250 800 100 L 35 50 1 1 P -X ~ 5 -150 750 100 R 35 50 1 1 P -X ~ 6 150 750 100 L 35 50 1 1 P -X ~ 7 -250 700 100 R 35 50 1 1 P -X ~ 8 250 700 100 L 35 50 1 1 P -X ~ 9 -150 650 100 R 35 50 1 1 P -X ~ 10 150 650 100 L 35 50 1 1 P -X ~ 20 250 400 100 L 35 50 1 1 P -X ~ 30 150 150 100 L 35 50 1 1 P -X ~ 40 250 -100 100 L 35 50 1 1 P -X ~ 50 150 -350 100 L 35 50 1 1 P -X ~ 60 250 -600 100 L 35 50 1 1 P -X ~ 70 150 -850 100 L 35 50 1 1 P -X ~ 11 -250 600 100 R 35 50 1 1 P -X ~ 21 -150 350 100 R 35 50 1 1 P -X ~ 31 -250 100 100 R 35 50 1 1 P -X ~ 41 -150 -150 100 R 35 50 1 1 P -X ~ 51 -250 -400 100 R 35 50 1 1 P -X ~ 61 -150 -650 100 R 35 50 1 1 P -X ~ 71 -250 -900 100 R 35 50 1 1 P -X ~ 12 250 600 100 L 35 50 1 1 P -X ~ 22 150 350 100 L 35 50 1 1 P -X ~ 32 250 100 100 L 35 50 1 1 P -X ~ 42 150 -150 100 L 35 50 1 1 P -X ~ 52 250 -400 100 L 35 50 1 1 P -X ~ 62 150 -650 100 L 35 50 1 1 P -X ~ 72 250 -900 100 L 35 50 1 1 P -X ~ 13 -150 550 100 R 35 50 1 1 P -X ~ 23 -250 300 100 R 35 50 1 1 P -X ~ 33 -150 50 100 R 35 50 1 1 P -X ~ 43 -250 -200 100 R 35 50 1 1 P -X ~ 53 -150 -450 100 R 35 50 1 1 P -X ~ 63 -250 -700 100 R 35 50 1 1 P -X ~ 14 150 550 100 L 35 50 1 1 P -X ~ 24 250 300 100 L 35 50 1 1 P -X ~ 34 150 50 100 L 35 50 1 1 P -X ~ 44 250 -200 100 L 35 50 1 1 P -X ~ 54 150 -450 100 L 35 50 1 1 P -X ~ 64 250 -700 100 L 35 50 1 1 P -X ~ 15 -250 500 100 R 35 50 1 1 P -X ~ 25 -150 250 100 R 35 50 1 1 P -X ~ 35 -250 0 100 R 35 50 1 1 P -X ~ 45 -150 -250 100 R 35 50 1 1 P -X ~ 55 -250 -500 100 R 35 50 1 1 P -X ~ 65 -150 -750 100 R 35 50 1 1 P -X ~ 16 250 500 100 L 35 50 1 1 P -X ~ 26 150 250 100 L 35 50 1 1 P -X ~ 36 250 0 100 L 35 50 1 1 P -X ~ 46 150 -250 100 L 35 50 1 1 P -X ~ 56 250 -500 100 L 35 50 1 1 P -X ~ 66 150 -750 100 L 35 50 1 1 P -X ~ 17 -150 450 100 R 35 50 1 1 P -X ~ 27 -250 200 100 R 35 50 1 1 P -X ~ 37 -150 -50 100 R 35 35 1 1 P -X ~ 47 -250 -300 100 R 35 50 1 1 P -X ~ 57 -150 -550 100 R 35 50 1 1 P -X ~ 67 -250 -800 100 R 35 50 1 1 P -X ~ 18 150 450 100 L 35 50 1 1 P -X ~ 28 250 200 100 L 35 50 1 1 P -X ~ 38 150 -50 100 L 35 50 1 1 P -X ~ 48 250 -300 100 L 35 50 1 1 P -X ~ 58 150 -550 100 L 35 50 1 1 P -X ~ 68 250 -800 100 L 35 50 1 1 P -X ~ 19 -250 400 100 R 35 50 1 1 P -X ~ 29 -150 150 100 R 35 50 1 1 P -X ~ 39 -250 -100 100 R 35 50 1 1 P -X ~ 49 -150 -350 100 R 35 50 1 1 P -X ~ 59 -250 -600 100 R 35 50 1 1 P -X ~ 69 -150 -850 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_37x2 -# -DEF HEADER_37x2 J 0 0 Y Y 1 F N -F0 "J" 0 1000 60 H V C CNN -F1 "HEADER_37x2" 0 -1050 60 H V C CNN -F2 "" 0 -50 60 H V C CNN -F3 "" 0 -50 60 H V C CNN -DRAW -S 50 -1000 -50 950 0 1 0 N -P 2 0 1 0 -150 -850 -50 -850 N -P 2 0 1 0 -150 -750 -50 -750 N -P 2 0 1 0 -150 -650 -50 -650 N -P 2 0 1 0 -150 -550 -50 -550 N -P 2 0 1 0 -150 -450 -50 -450 N -P 2 0 1 0 -150 -350 -50 -350 N -P 2 0 1 0 -150 -250 -50 -250 N -P 2 0 1 0 -150 -150 -50 -150 N -P 2 0 1 0 -150 -50 -50 -50 N -P 2 0 1 0 -150 50 -50 50 N -P 2 0 1 0 -150 150 -50 150 N -P 2 0 1 0 -150 250 -50 250 N -P 2 0 1 0 -150 350 -50 350 N -P 2 0 1 0 -150 450 -50 450 N -P 2 0 1 0 -150 550 -50 550 N -P 2 0 1 0 -150 650 -50 650 N -P 2 0 1 0 -150 750 -50 750 N -P 2 0 1 0 -150 850 -50 850 N -P 2 0 1 0 50 -850 150 -850 N -P 2 0 1 0 50 -750 150 -750 N -P 2 0 1 0 50 -650 150 -650 N -P 2 0 1 0 50 -550 150 -550 N -P 2 0 1 0 50 -450 150 -450 N -P 2 0 1 0 50 -350 150 -350 N -P 2 0 1 0 50 -250 150 -250 N -P 2 0 1 0 50 -150 150 -150 N -P 2 0 1 0 50 -50 150 -50 N -P 2 0 1 0 50 50 150 50 N -P 2 0 1 0 50 150 150 150 N -P 2 0 1 0 50 250 150 250 N -P 2 0 1 0 50 350 150 350 N -P 2 0 1 0 50 450 150 450 N -P 2 0 1 0 50 550 150 550 N -P 2 0 1 0 50 650 150 650 N -P 2 0 1 0 50 750 150 750 N -P 2 0 1 0 50 850 150 850 N -X ~ 1 -150 900 100 R 35 50 1 1 P -X ~ 2 150 900 100 L 35 50 1 1 P -X ~ 3 -250 850 100 R 35 50 1 1 P -X ~ 4 250 850 100 L 35 50 1 1 P -X ~ 5 -150 800 100 R 35 50 1 1 P -X ~ 6 150 800 100 L 35 50 1 1 P -X ~ 7 -250 750 100 R 35 50 1 1 P -X ~ 8 250 750 100 L 35 50 1 1 P -X ~ 9 -150 700 100 R 35 50 1 1 P -X ~ 10 150 700 100 L 35 50 1 1 P -X ~ 20 250 450 100 L 35 50 1 1 P -X ~ 30 150 200 100 L 35 50 1 1 P -X ~ 40 250 -50 100 L 35 50 1 1 P -X ~ 50 150 -300 100 L 35 50 1 1 P -X ~ 60 250 -550 100 L 35 50 1 1 P -X ~ 70 150 -800 100 L 35 50 1 1 P -X ~ 11 -250 650 100 R 35 50 1 1 P -X ~ 21 -150 400 100 R 35 50 1 1 P -X ~ 31 -250 150 100 R 35 50 1 1 P -X ~ 41 -150 -100 100 R 35 50 1 1 P -X ~ 51 -250 -350 100 R 35 50 1 1 P -X ~ 61 -150 -600 100 R 35 50 1 1 P -X ~ 71 -250 -850 100 R 35 50 1 1 P -X ~ 12 250 650 100 L 35 50 1 1 P -X ~ 22 150 400 100 L 35 50 1 1 P -X ~ 32 250 150 100 L 35 50 1 1 P -X ~ 42 150 -100 100 L 35 50 1 1 P -X ~ 52 250 -350 100 L 35 50 1 1 P -X ~ 62 150 -600 100 L 35 50 1 1 P -X ~ 72 250 -850 100 L 35 50 1 1 P -X ~ 13 -150 600 100 R 35 50 1 1 P -X ~ 23 -250 350 100 R 35 50 1 1 P -X ~ 33 -150 100 100 R 35 50 1 1 P -X ~ 43 -250 -150 100 R 35 50 1 1 P -X ~ 53 -150 -400 100 R 35 50 1 1 P -X ~ 63 -250 -650 100 R 35 50 1 1 P -X ~ 73 -150 -900 100 R 35 50 1 1 P -X ~ 14 150 600 100 L 35 50 1 1 P -X ~ 24 250 350 100 L 35 50 1 1 P -X ~ 34 150 100 100 L 35 50 1 1 P -X ~ 44 250 -150 100 L 35 50 1 1 P -X ~ 54 150 -400 100 L 35 50 1 1 P -X ~ 64 250 -650 100 L 35 50 1 1 P -X ~ 74 150 -900 100 L 35 50 1 1 P -X ~ 15 -250 550 100 R 35 50 1 1 P -X ~ 25 -150 300 100 R 35 50 1 1 P -X ~ 35 -250 50 100 R 35 50 1 1 P -X ~ 45 -150 -200 100 R 35 50 1 1 P -X ~ 55 -250 -450 100 R 35 50 1 1 P -X ~ 65 -150 -700 100 R 35 50 1 1 P -X ~ 16 250 550 100 L 35 50 1 1 P -X ~ 26 150 300 100 L 35 50 1 1 P -X ~ 36 250 50 100 L 35 50 1 1 P -X ~ 46 150 -200 100 L 35 50 1 1 P -X ~ 56 250 -450 100 L 35 50 1 1 P -X ~ 66 150 -700 100 L 35 50 1 1 P -X ~ 17 -150 500 100 R 35 50 1 1 P -X ~ 27 -250 250 100 R 35 50 1 1 P -X ~ 37 -150 0 100 R 35 35 1 1 P -X ~ 47 -250 -250 100 R 35 50 1 1 P -X ~ 57 -150 -500 100 R 35 50 1 1 P -X ~ 67 -250 -750 100 R 35 50 1 1 P -X ~ 18 150 500 100 L 35 50 1 1 P -X ~ 28 250 250 100 L 35 50 1 1 P -X ~ 38 150 0 100 L 35 50 1 1 P -X ~ 48 250 -250 100 L 35 50 1 1 P -X ~ 58 150 -500 100 L 35 50 1 1 P -X ~ 68 250 -750 100 L 35 50 1 1 P -X ~ 19 -250 450 100 R 35 50 1 1 P -X ~ 29 -150 200 100 R 35 50 1 1 P -X ~ 39 -250 -50 100 R 35 50 1 1 P -X ~ 49 -150 -300 100 R 35 50 1 1 P -X ~ 59 -250 -550 100 R 35 50 1 1 P -X ~ 69 -150 -800 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_38x2 -# -DEF HEADER_38x2 J 0 0 Y Y 1 F N -F0 "J" 0 1000 60 H V C CNN -F1 "HEADER_38x2" 0 -1050 60 H V C CNN -F2 "" 0 -50 60 H V C CNN -F3 "" 0 -50 60 H V C CNN -DRAW -S 50 -1000 -50 950 0 1 0 N -P 2 0 1 0 -150 -950 -50 -950 N -P 2 0 1 0 -150 -850 -50 -850 N -P 2 0 1 0 -150 -750 -50 -750 N -P 2 0 1 0 -150 -650 -50 -650 N -P 2 0 1 0 -150 -550 -50 -550 N -P 2 0 1 0 -150 -450 -50 -450 N -P 2 0 1 0 -150 -350 -50 -350 N -P 2 0 1 0 -150 -250 -50 -250 N -P 2 0 1 0 -150 -150 -50 -150 N -P 2 0 1 0 -150 -50 -50 -50 N -P 2 0 1 0 -150 50 -50 50 N -P 2 0 1 0 -150 150 -50 150 N -P 2 0 1 0 -150 250 -50 250 N -P 2 0 1 0 -150 350 -50 350 N -P 2 0 1 0 -150 450 -50 450 N -P 2 0 1 0 -150 550 -50 550 N -P 2 0 1 0 -150 650 -50 650 N -P 2 0 1 0 -150 750 -50 750 N -P 2 0 1 0 -150 850 -50 850 N -P 2 0 1 0 50 -950 150 -950 N -P 2 0 1 0 50 -850 150 -850 N -P 2 0 1 0 50 -750 150 -750 N -P 2 0 1 0 50 -650 150 -650 N -P 2 0 1 0 50 -550 150 -550 N -P 2 0 1 0 50 -450 150 -450 N -P 2 0 1 0 50 -350 150 -350 N -P 2 0 1 0 50 -250 150 -250 N -P 2 0 1 0 50 -150 150 -150 N -P 2 0 1 0 50 -50 150 -50 N -P 2 0 1 0 50 50 150 50 N -P 2 0 1 0 50 150 150 150 N -P 2 0 1 0 50 250 150 250 N -P 2 0 1 0 50 350 150 350 N -P 2 0 1 0 50 450 150 450 N -P 2 0 1 0 50 550 150 550 N -P 2 0 1 0 50 650 150 650 N -P 2 0 1 0 50 750 150 750 N -P 2 0 1 0 50 850 150 850 N -X ~ 1 -150 900 100 R 35 50 1 1 P -X ~ 2 150 900 100 L 35 50 1 1 P -X ~ 3 -250 850 100 R 35 50 1 1 P -X ~ 4 250 850 100 L 35 50 1 1 P -X ~ 5 -150 800 100 R 35 50 1 1 P -X ~ 6 150 800 100 L 35 50 1 1 P -X ~ 7 -250 750 100 R 35 50 1 1 P -X ~ 8 250 750 100 L 35 50 1 1 P -X ~ 9 -150 700 100 R 35 50 1 1 P -X ~ 10 150 700 100 L 35 50 1 1 P -X ~ 20 250 450 100 L 35 50 1 1 P -X ~ 30 150 200 100 L 35 50 1 1 P -X ~ 40 250 -50 100 L 35 50 1 1 P -X ~ 50 150 -300 100 L 35 50 1 1 P -X ~ 60 250 -550 100 L 35 50 1 1 P -X ~ 70 150 -800 100 L 35 50 1 1 P -X ~ 11 -250 650 100 R 35 50 1 1 P -X ~ 21 -150 400 100 R 35 50 1 1 P -X ~ 31 -250 150 100 R 35 50 1 1 P -X ~ 41 -150 -100 100 R 35 50 1 1 P -X ~ 51 -250 -350 100 R 35 50 1 1 P -X ~ 61 -150 -600 100 R 35 50 1 1 P -X ~ 71 -250 -850 100 R 35 50 1 1 P -X ~ 12 250 650 100 L 35 50 1 1 P -X ~ 22 150 400 100 L 35 50 1 1 P -X ~ 32 250 150 100 L 35 50 1 1 P -X ~ 42 150 -100 100 L 35 50 1 1 P -X ~ 52 250 -350 100 L 35 50 1 1 P -X ~ 62 150 -600 100 L 35 50 1 1 P -X ~ 72 250 -850 100 L 35 50 1 1 P -X ~ 13 -150 600 100 R 35 50 1 1 P -X ~ 23 -250 350 100 R 35 50 1 1 P -X ~ 33 -150 100 100 R 35 50 1 1 P -X ~ 43 -250 -150 100 R 35 50 1 1 P -X ~ 53 -150 -400 100 R 35 50 1 1 P -X ~ 63 -250 -650 100 R 35 50 1 1 P -X ~ 73 -150 -900 100 R 35 50 1 1 P -X ~ 14 150 600 100 L 35 50 1 1 P -X ~ 24 250 350 100 L 35 50 1 1 P -X ~ 34 150 100 100 L 35 50 1 1 P -X ~ 44 250 -150 100 L 35 50 1 1 P -X ~ 54 150 -400 100 L 35 50 1 1 P -X ~ 64 250 -650 100 L 35 50 1 1 P -X ~ 74 150 -900 100 L 35 50 1 1 P -X ~ 15 -250 550 100 R 35 50 1 1 P -X ~ 25 -150 300 100 R 35 50 1 1 P -X ~ 35 -250 50 100 R 35 50 1 1 P -X ~ 45 -150 -200 100 R 35 50 1 1 P -X ~ 55 -250 -450 100 R 35 50 1 1 P -X ~ 65 -150 -700 100 R 35 50 1 1 P -X ~ 75 -250 -950 100 R 35 50 1 1 P -X ~ 16 250 550 100 L 35 50 1 1 P -X ~ 26 150 300 100 L 35 50 1 1 P -X ~ 36 250 50 100 L 35 50 1 1 P -X ~ 46 150 -200 100 L 35 50 1 1 P -X ~ 56 250 -450 100 L 35 50 1 1 P -X ~ 66 150 -700 100 L 35 50 1 1 P -X ~ 76 250 -950 100 L 35 50 1 1 P -X ~ 17 -150 500 100 R 35 50 1 1 P -X ~ 27 -250 250 100 R 35 50 1 1 P -X ~ 37 -150 0 100 R 35 35 1 1 P -X ~ 47 -250 -250 100 R 35 50 1 1 P -X ~ 57 -150 -500 100 R 35 50 1 1 P -X ~ 67 -250 -750 100 R 35 50 1 1 P -X ~ 18 150 500 100 L 35 50 1 1 P -X ~ 28 250 250 100 L 35 50 1 1 P -X ~ 38 150 0 100 L 35 50 1 1 P -X ~ 48 250 -250 100 L 35 50 1 1 P -X ~ 58 150 -500 100 L 35 50 1 1 P -X ~ 68 250 -750 100 L 35 50 1 1 P -X ~ 19 -250 450 100 R 35 50 1 1 P -X ~ 29 -150 200 100 R 35 50 1 1 P -X ~ 39 -250 -50 100 R 35 50 1 1 P -X ~ 49 -150 -300 100 R 35 50 1 1 P -X ~ 59 -250 -550 100 R 35 50 1 1 P -X ~ 69 -150 -800 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_39x2 -# -DEF HEADER_39x2 J 0 0 Y Y 1 F N -F0 "J" 0 1050 60 H V C CNN -F1 "HEADER_39x2" 0 -1100 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S -50 1000 50 -1050 0 1 0 N -P 2 0 1 0 -150 -900 -50 -900 N -P 2 0 1 0 -150 -800 -50 -800 N -P 2 0 1 0 -150 -700 -50 -700 N -P 2 0 1 0 -150 -600 -50 -600 N -P 2 0 1 0 -150 -500 -50 -500 N -P 2 0 1 0 -150 -400 -50 -400 N -P 2 0 1 0 -150 -300 -50 -300 N -P 2 0 1 0 -150 -200 -50 -200 N -P 2 0 1 0 -150 -100 -50 -100 N -P 2 0 1 0 -150 0 -50 0 N -P 2 0 1 0 -150 100 -50 100 N -P 2 0 1 0 -150 200 -50 200 N -P 2 0 1 0 -150 300 -50 300 N -P 2 0 1 0 -150 400 -50 400 N -P 2 0 1 0 -150 500 -50 500 N -P 2 0 1 0 -150 600 -50 600 N -P 2 0 1 0 -150 700 -50 700 N -P 2 0 1 0 -150 800 -50 800 N -P 2 0 1 0 -150 900 -50 900 N -P 2 0 1 0 50 -900 150 -900 N -P 2 0 1 0 50 -800 150 -800 N -P 2 0 1 0 50 -700 150 -700 N -P 2 0 1 0 50 -600 150 -600 N -P 2 0 1 0 50 -500 150 -500 N -P 2 0 1 0 50 -400 150 -400 N -P 2 0 1 0 50 -300 150 -300 N -P 2 0 1 0 50 -200 150 -200 N -P 2 0 1 0 50 -100 150 -100 N -P 2 0 1 0 50 0 150 0 N -P 2 0 1 0 50 100 150 100 N -P 2 0 1 0 50 200 150 200 N -P 2 0 1 0 50 300 150 300 N -P 2 0 1 0 50 400 150 400 N -P 2 0 1 0 50 500 150 500 N -P 2 0 1 0 50 600 150 600 N -P 2 0 1 0 50 700 150 700 N -P 2 0 1 0 50 800 150 800 N -P 2 0 1 0 50 900 150 900 N -X ~ 1 -150 950 100 R 35 50 1 1 P -X ~ 2 150 950 100 L 35 50 1 1 P -X ~ 3 -250 900 100 R 35 50 1 1 P -X ~ 4 250 900 100 L 35 50 1 1 P -X ~ 5 -150 850 100 R 35 50 1 1 P -X ~ 6 150 850 100 L 35 50 1 1 P -X ~ 7 -250 800 100 R 35 50 1 1 P -X ~ 8 250 800 100 L 35 50 1 1 P -X ~ 9 -150 750 100 R 35 50 1 1 P -X ~ 10 150 750 100 L 35 50 1 1 P -X ~ 20 250 500 100 L 35 50 1 1 P -X ~ 30 150 250 100 L 35 50 1 1 P -X ~ 40 250 0 100 L 35 50 1 1 P -X ~ 50 150 -250 100 L 35 50 1 1 P -X ~ 60 250 -500 100 L 35 50 1 1 P -X ~ 70 150 -750 100 L 35 50 1 1 P -X ~ 11 -250 700 100 R 35 50 1 1 P -X ~ 21 -150 450 100 R 35 50 1 1 P -X ~ 31 -250 200 100 R 35 50 1 1 P -X ~ 41 -150 -50 100 R 35 50 1 1 P -X ~ 51 -250 -300 100 R 35 50 1 1 P -X ~ 61 -150 -550 100 R 35 50 1 1 P -X ~ 71 -250 -800 100 R 35 50 1 1 P -X ~ 12 250 700 100 L 35 50 1 1 P -X ~ 22 150 450 100 L 35 50 1 1 P -X ~ 32 250 200 100 L 35 50 1 1 P -X ~ 42 150 -50 100 L 35 50 1 1 P -X ~ 52 250 -300 100 L 35 50 1 1 P -X ~ 62 150 -550 100 L 35 50 1 1 P -X ~ 72 250 -800 100 L 35 50 1 1 P -X ~ 13 -150 650 100 R 35 50 1 1 P -X ~ 23 -250 400 100 R 35 50 1 1 P -X ~ 33 -150 150 100 R 35 50 1 1 P -X ~ 43 -250 -100 100 R 35 50 1 1 P -X ~ 53 -150 -350 100 R 35 50 1 1 P -X ~ 63 -250 -600 100 R 35 50 1 1 P -X ~ 73 -150 -850 100 R 35 50 1 1 P -X ~ 14 150 650 100 L 35 50 1 1 P -X ~ 24 250 400 100 L 35 50 1 1 P -X ~ 34 150 150 100 L 35 50 1 1 P -X ~ 44 250 -100 100 L 35 50 1 1 P -X ~ 54 150 -350 100 L 35 50 1 1 P -X ~ 64 250 -600 100 L 35 50 1 1 P -X ~ 74 150 -850 100 L 35 50 1 1 P -X ~ 15 -250 600 100 R 35 50 1 1 P -X ~ 25 -150 350 100 R 35 50 1 1 P -X ~ 35 -250 100 100 R 35 50 1 1 P -X ~ 45 -150 -150 100 R 35 50 1 1 P -X ~ 55 -250 -400 100 R 35 50 1 1 P -X ~ 65 -150 -650 100 R 35 50 1 1 P -X ~ 75 -250 -900 100 R 35 50 1 1 P -X ~ 16 250 600 100 L 35 50 1 1 P -X ~ 26 150 350 100 L 35 50 1 1 P -X ~ 36 250 100 100 L 35 50 1 1 P -X ~ 46 150 -150 100 L 35 50 1 1 P -X ~ 56 250 -400 100 L 35 50 1 1 P -X ~ 66 150 -650 100 L 35 50 1 1 P -X ~ 76 250 -900 100 L 35 50 1 1 P -X ~ 17 -150 550 100 R 35 50 1 1 P -X ~ 27 -250 300 100 R 35 50 1 1 P -X ~ 37 -150 50 100 R 35 35 1 1 P -X ~ 47 -250 -200 100 R 35 50 1 1 P -X ~ 57 -150 -450 100 R 35 50 1 1 P -X ~ 67 -250 -700 100 R 35 50 1 1 P -X ~ 77 -150 -950 100 R 35 50 1 1 P -X ~ 18 150 550 100 L 35 50 1 1 P -X ~ 28 250 300 100 L 35 50 1 1 P -X ~ 38 150 50 100 L 35 50 1 1 P -X ~ 48 250 -200 100 L 35 50 1 1 P -X ~ 58 150 -450 100 L 35 50 1 1 P -X ~ 68 250 -700 100 L 35 50 1 1 P -X ~ 78 150 -950 100 L 35 50 1 1 P -X ~ 19 -250 500 100 R 35 50 1 1 P -X ~ 29 -150 250 100 R 35 50 1 1 P -X ~ 39 -250 0 100 R 35 50 1 1 P -X ~ 49 -150 -250 100 R 35 50 1 1 P -X ~ 59 -250 -500 100 R 35 50 1 1 P -X ~ 69 -150 -750 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_3x2 -# -DEF HEADER_3x2 J 0 0 Y Y 1 F N -F0 "J" 0 200 60 H V C CNN -F1 "HEADER_3x2" 0 -200 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 50 150 -50 -150 0 1 0 N -X ~ 1 -150 100 100 R 35 50 1 1 P -X ~ 2 150 100 100 L 35 50 1 1 P -X ~ 3 -150 0 100 R 35 50 1 1 P -X ~ 4 150 0 100 L 35 50 1 1 P -X ~ 5 -150 -100 100 R 35 50 1 1 P -X ~ 6 150 -100 100 L 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_4 -# -DEF HEADER_4 J 0 0 Y Y 1 F N -F0 "J" 0 250 60 H V C CNN -F1 "HEADER_4" 0 -250 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 100 200 0 -200 0 1 0 N -X ~ 1 -100 150 100 R 35 50 1 1 P -X ~ 2 -100 50 100 R 35 50 1 1 P -X ~ 3 -100 -50 100 R 35 50 1 1 P -X ~ 4 -100 -150 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_40x2 -# -DEF HEADER_40x2 J 0 0 Y Y 1 F N -F0 "J" 0 1050 60 H V C CNN -F1 "HEADER_40x2" 0 -1100 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S -50 1000 50 -1050 0 1 0 N -P 2 0 1 0 -150 -1000 -50 -1000 N -P 2 0 1 0 -150 -900 -50 -900 N -P 2 0 1 0 -150 -800 -50 -800 N -P 2 0 1 0 -150 -700 -50 -700 N -P 2 0 1 0 -150 -600 -50 -600 N -P 2 0 1 0 -150 -500 -50 -500 N -P 2 0 1 0 -150 -400 -50 -400 N -P 2 0 1 0 -150 -300 -50 -300 N -P 2 0 1 0 -150 -200 -50 -200 N -P 2 0 1 0 -150 -100 -50 -100 N -P 2 0 1 0 -150 0 -50 0 N -P 2 0 1 0 -150 100 -50 100 N -P 2 0 1 0 -150 200 -50 200 N -P 2 0 1 0 -150 300 -50 300 N -P 2 0 1 0 -150 400 -50 400 N -P 2 0 1 0 -150 500 -50 500 N -P 2 0 1 0 -150 600 -50 600 N -P 2 0 1 0 -150 700 -50 700 N -P 2 0 1 0 -150 800 -50 800 N -P 2 0 1 0 -150 900 -50 900 N -P 2 0 1 0 50 -1000 150 -1000 N -P 2 0 1 0 50 -900 150 -900 N -P 2 0 1 0 50 -800 150 -800 N -P 2 0 1 0 50 -700 150 -700 N -P 2 0 1 0 50 -600 150 -600 N -P 2 0 1 0 50 -500 150 -500 N -P 2 0 1 0 50 -400 150 -400 N -P 2 0 1 0 50 -300 150 -300 N -P 2 0 1 0 50 -200 150 -200 N -P 2 0 1 0 50 -100 150 -100 N -P 2 0 1 0 50 0 150 0 N -P 2 0 1 0 50 100 150 100 N -P 2 0 1 0 50 200 150 200 N -P 2 0 1 0 50 300 150 300 N -P 2 0 1 0 50 400 150 400 N -P 2 0 1 0 50 500 150 500 N -P 2 0 1 0 50 600 150 600 N -P 2 0 1 0 50 700 150 700 N -P 2 0 1 0 50 800 150 800 N -P 2 0 1 0 50 900 150 900 N -X ~ 1 -150 950 100 R 35 50 1 1 P -X ~ 2 150 950 100 L 35 50 1 1 P -X ~ 3 -250 900 100 R 35 50 1 1 P -X ~ 4 250 900 100 L 35 50 1 1 P -X ~ 5 -150 850 100 R 35 50 1 1 P -X ~ 6 150 850 100 L 35 50 1 1 P -X ~ 7 -250 800 100 R 35 50 1 1 P -X ~ 8 250 800 100 L 35 50 1 1 P -X ~ 9 -150 750 100 R 35 50 1 1 P -X ~ 10 150 750 100 L 35 50 1 1 P -X ~ 20 250 500 100 L 35 50 1 1 P -X ~ 30 150 250 100 L 35 50 1 1 P -X ~ 40 250 0 100 L 35 50 1 1 P -X ~ 50 150 -250 100 L 35 50 1 1 P -X ~ 60 250 -500 100 L 35 50 1 1 P -X ~ 70 150 -750 100 L 35 50 1 1 P -X ~ 80 250 -1000 100 L 35 50 1 1 P -X ~ 11 -250 700 100 R 35 50 1 1 P -X ~ 21 -150 450 100 R 35 50 1 1 P -X ~ 31 -250 200 100 R 35 50 1 1 P -X ~ 41 -150 -50 100 R 35 50 1 1 P -X ~ 51 -250 -300 100 R 35 50 1 1 P -X ~ 61 -150 -550 100 R 35 50 1 1 P -X ~ 71 -250 -800 100 R 35 50 1 1 P -X ~ 12 250 700 100 L 35 50 1 1 P -X ~ 22 150 450 100 L 35 50 1 1 P -X ~ 32 250 200 100 L 35 50 1 1 P -X ~ 42 150 -50 100 L 35 50 1 1 P -X ~ 52 250 -300 100 L 35 50 1 1 P -X ~ 62 150 -550 100 L 35 50 1 1 P -X ~ 72 250 -800 100 L 35 50 1 1 P -X ~ 13 -150 650 100 R 35 50 1 1 P -X ~ 23 -250 400 100 R 35 50 1 1 P -X ~ 33 -150 150 100 R 35 50 1 1 P -X ~ 43 -250 -100 100 R 35 50 1 1 P -X ~ 53 -150 -350 100 R 35 50 1 1 P -X ~ 63 -250 -600 100 R 35 50 1 1 P -X ~ 73 -150 -850 100 R 35 50 1 1 P -X ~ 14 150 650 100 L 35 50 1 1 P -X ~ 24 250 400 100 L 35 50 1 1 P -X ~ 34 150 150 100 L 35 50 1 1 P -X ~ 44 250 -100 100 L 35 50 1 1 P -X ~ 54 150 -350 100 L 35 50 1 1 P -X ~ 64 250 -600 100 L 35 50 1 1 P -X ~ 74 150 -850 100 L 35 50 1 1 P -X ~ 15 -250 600 100 R 35 50 1 1 P -X ~ 25 -150 350 100 R 35 50 1 1 P -X ~ 35 -250 100 100 R 35 50 1 1 P -X ~ 45 -150 -150 100 R 35 50 1 1 P -X ~ 55 -250 -400 100 R 35 50 1 1 P -X ~ 65 -150 -650 100 R 35 50 1 1 P -X ~ 75 -250 -900 100 R 35 50 1 1 P -X ~ 16 250 600 100 L 35 50 1 1 P -X ~ 26 150 350 100 L 35 50 1 1 P -X ~ 36 250 100 100 L 35 50 1 1 P -X ~ 46 150 -150 100 L 35 50 1 1 P -X ~ 56 250 -400 100 L 35 50 1 1 P -X ~ 66 150 -650 100 L 35 50 1 1 P -X ~ 76 250 -900 100 L 35 50 1 1 P -X ~ 17 -150 550 100 R 35 50 1 1 P -X ~ 27 -250 300 100 R 35 50 1 1 P -X ~ 37 -150 50 100 R 35 35 1 1 P -X ~ 47 -250 -200 100 R 35 50 1 1 P -X ~ 57 -150 -450 100 R 35 50 1 1 P -X ~ 67 -250 -700 100 R 35 50 1 1 P -X ~ 77 -150 -950 100 R 35 50 1 1 P -X ~ 18 150 550 100 L 35 50 1 1 P -X ~ 28 250 300 100 L 35 50 1 1 P -X ~ 38 150 50 100 L 35 50 1 1 P -X ~ 48 250 -200 100 L 35 50 1 1 P -X ~ 58 150 -450 100 L 35 50 1 1 P -X ~ 68 250 -700 100 L 35 50 1 1 P -X ~ 78 150 -950 100 L 35 50 1 1 P -X ~ 19 -250 500 100 R 35 50 1 1 P -X ~ 29 -150 250 100 R 35 50 1 1 P -X ~ 39 -250 0 100 R 35 50 1 1 P -X ~ 49 -150 -250 100 R 35 50 1 1 P -X ~ 59 -250 -500 100 R 35 50 1 1 P -X ~ 69 -150 -750 100 R 35 50 1 1 P -X ~ 79 -250 -1000 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_41x2 -# -DEF HEADER_41x2 J 0 0 Y Y 1 F N -F0 "J" 0 1100 60 H V C CNN -F1 "HEADER_41x2" 0 -1100 60 H V C CNN -F2 "" 0 50 60 H V C CNN -F3 "" 0 50 60 H V C CNN -DRAW -S 50 -1050 -50 1050 0 1 0 N -P 2 0 1 0 -150 -950 -50 -950 N -P 2 0 1 0 -150 -850 -50 -850 N -P 2 0 1 0 -150 -750 -50 -750 N -P 2 0 1 0 -150 -650 -50 -650 N -P 2 0 1 0 -150 -550 -50 -550 N -P 2 0 1 0 -150 -450 -50 -450 N -P 2 0 1 0 -150 -350 -50 -350 N -P 2 0 1 0 -150 -250 -50 -250 N -P 2 0 1 0 -150 -150 -50 -150 N -P 2 0 1 0 -150 -50 -50 -50 N -P 2 0 1 0 -150 50 -50 50 N -P 2 0 1 0 -150 150 -50 150 N -P 2 0 1 0 -150 250 -50 250 N -P 2 0 1 0 -150 350 -50 350 N -P 2 0 1 0 -150 450 -50 450 N -P 2 0 1 0 -150 550 -50 550 N -P 2 0 1 0 -150 650 -50 650 N -P 2 0 1 0 -150 750 -50 750 N -P 2 0 1 0 -150 850 -50 850 N -P 2 0 1 0 -150 950 -50 950 N -P 2 0 1 0 50 -950 150 -950 N -P 2 0 1 0 50 -850 150 -850 N -P 2 0 1 0 50 -750 150 -750 N -P 2 0 1 0 50 -650 150 -650 N -P 2 0 1 0 50 -550 150 -550 N -P 2 0 1 0 50 -450 150 -450 N -P 2 0 1 0 50 -350 150 -350 N -P 2 0 1 0 50 -250 150 -250 N -P 2 0 1 0 50 -150 150 -150 N -P 2 0 1 0 50 -50 150 -50 N -P 2 0 1 0 50 50 150 50 N -P 2 0 1 0 50 150 150 150 N -P 2 0 1 0 50 250 150 250 N -P 2 0 1 0 50 350 150 350 N -P 2 0 1 0 50 450 150 450 N -P 2 0 1 0 50 550 150 550 N -P 2 0 1 0 50 650 150 650 N -P 2 0 1 0 50 750 150 750 N -P 2 0 1 0 50 850 150 850 N -P 2 0 1 0 50 950 150 950 N -X ~ 1 -150 1000 100 R 35 50 1 1 P -X ~ 2 150 1000 100 L 35 50 1 1 P -X ~ 3 -250 950 100 R 35 50 1 1 P -X ~ 4 250 950 100 L 35 50 1 1 P -X ~ 5 -150 900 100 R 35 50 1 1 P -X ~ 6 150 900 100 L 35 50 1 1 P -X ~ 7 -250 850 100 R 35 50 1 1 P -X ~ 8 250 850 100 L 35 50 1 1 P -X ~ 9 -150 800 100 R 35 50 1 1 P -X ~ 10 150 800 100 L 35 50 1 1 P -X ~ 20 250 550 100 L 35 50 1 1 P -X ~ 30 150 300 100 L 35 50 1 1 P -X ~ 40 250 50 100 L 35 50 1 1 P -X ~ 50 150 -200 100 L 35 50 1 1 P -X ~ 60 250 -450 100 L 35 50 1 1 P -X ~ 70 150 -700 100 L 35 50 1 1 P -X ~ 80 250 -950 100 L 35 50 1 1 P -X ~ 11 -250 750 100 R 35 50 1 1 P -X ~ 21 -150 500 100 R 35 50 1 1 P -X ~ 31 -250 250 100 R 35 50 1 1 P -X ~ 41 -150 0 100 R 35 50 1 1 P -X ~ 51 -250 -250 100 R 35 50 1 1 P -X ~ 61 -150 -500 100 R 35 50 1 1 P -X ~ 71 -250 -750 100 R 35 50 1 1 P -X ~ 81 -150 -1000 100 R 35 50 1 1 P -X ~ 12 250 750 100 L 35 50 1 1 P -X ~ 22 150 500 100 L 35 50 1 1 P -X ~ 32 250 250 100 L 35 50 1 1 P -X ~ 42 150 0 100 L 35 50 1 1 P -X ~ 52 250 -250 100 L 35 50 1 1 P -X ~ 62 150 -500 100 L 35 50 1 1 P -X ~ 72 250 -750 100 L 35 50 1 1 P -X ~ 82 150 -1000 100 L 35 50 1 1 P -X ~ 13 -150 700 100 R 35 50 1 1 P -X ~ 23 -250 450 100 R 35 50 1 1 P -X ~ 33 -150 200 100 R 35 50 1 1 P -X ~ 43 -250 -50 100 R 35 50 1 1 P -X ~ 53 -150 -300 100 R 35 50 1 1 P -X ~ 63 -250 -550 100 R 35 50 1 1 P -X ~ 73 -150 -800 100 R 35 50 1 1 P -X ~ 14 150 700 100 L 35 50 1 1 P -X ~ 24 250 450 100 L 35 50 1 1 P -X ~ 34 150 200 100 L 35 50 1 1 P -X ~ 44 250 -50 100 L 35 50 1 1 P -X ~ 54 150 -300 100 L 35 50 1 1 P -X ~ 64 250 -550 100 L 35 50 1 1 P -X ~ 74 150 -800 100 L 35 50 1 1 P -X ~ 15 -250 650 100 R 35 50 1 1 P -X ~ 25 -150 400 100 R 35 50 1 1 P -X ~ 35 -250 150 100 R 35 50 1 1 P -X ~ 45 -150 -100 100 R 35 50 1 1 P -X ~ 55 -250 -350 100 R 35 50 1 1 P -X ~ 65 -150 -600 100 R 35 50 1 1 P -X ~ 75 -250 -850 100 R 35 50 1 1 P -X ~ 16 250 650 100 L 35 50 1 1 P -X ~ 26 150 400 100 L 35 50 1 1 P -X ~ 36 250 150 100 L 35 50 1 1 P -X ~ 46 150 -100 100 L 35 50 1 1 P -X ~ 56 250 -350 100 L 35 50 1 1 P -X ~ 66 150 -600 100 L 35 50 1 1 P -X ~ 76 250 -850 100 L 35 50 1 1 P -X ~ 17 -150 600 100 R 35 50 1 1 P -X ~ 27 -250 350 100 R 35 50 1 1 P -X ~ 37 -150 100 100 R 35 35 1 1 P -X ~ 47 -250 -150 100 R 35 50 1 1 P -X ~ 57 -150 -400 100 R 35 50 1 1 P -X ~ 67 -250 -650 100 R 35 50 1 1 P -X ~ 77 -150 -900 100 R 35 50 1 1 P -X ~ 18 150 600 100 L 35 50 1 1 P -X ~ 28 250 350 100 L 35 50 1 1 P -X ~ 38 150 100 100 L 35 50 1 1 P -X ~ 48 250 -150 100 L 35 50 1 1 P -X ~ 58 150 -400 100 L 35 50 1 1 P -X ~ 68 250 -650 100 L 35 50 1 1 P -X ~ 78 150 -900 100 L 35 50 1 1 P -X ~ 19 -250 550 100 R 35 50 1 1 P -X ~ 29 -150 300 100 R 35 50 1 1 P -X ~ 39 -250 50 100 R 35 50 1 1 P -X ~ 49 -150 -200 100 R 35 50 1 1 P -X ~ 59 -250 -450 100 R 35 50 1 1 P -X ~ 69 -150 -700 100 R 35 50 1 1 P -X ~ 79 -250 -950 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_42x2 -# -DEF HEADER_42x2 J 0 0 Y Y 1 F N -F0 "J" 0 1150 60 H V C CNN -F1 "HEADER_42x2" 0 -1150 60 H V C CNN -F2 "" 0 100 60 H V C CNN -F3 "" 0 100 60 H V C CNN -DRAW -S 50 -1100 -50 1100 0 1 0 N -P 2 0 1 0 -150 -1000 -50 -1000 N -P 2 0 1 0 -150 -900 -50 -900 N -P 2 0 1 0 -150 -800 -50 -800 N -P 2 0 1 0 -150 -700 -50 -700 N -P 2 0 1 0 -150 -600 -50 -600 N -P 2 0 1 0 -150 -500 -50 -500 N -P 2 0 1 0 -150 -400 -50 -400 N -P 2 0 1 0 -150 -300 -50 -300 N -P 2 0 1 0 -150 -200 -50 -200 N -P 2 0 1 0 -150 -100 -50 -100 N -P 2 0 1 0 -150 0 -50 0 N -P 2 0 1 0 -150 100 -50 100 N -P 2 0 1 0 -150 200 -50 200 N -P 2 0 1 0 -150 300 -50 300 N -P 2 0 1 0 -150 400 -50 400 N -P 2 0 1 0 -150 500 -50 500 N -P 2 0 1 0 -150 600 -50 600 N -P 2 0 1 0 -150 700 -50 700 N -P 2 0 1 0 -150 800 -50 800 N -P 2 0 1 0 -150 900 -50 900 N -P 2 0 1 0 -150 1000 -50 1000 N -P 2 0 1 0 50 -1000 150 -1000 N -P 2 0 1 0 50 -900 150 -900 N -P 2 0 1 0 50 -800 150 -800 N -P 2 0 1 0 50 -700 150 -700 N -P 2 0 1 0 50 -600 150 -600 N -P 2 0 1 0 50 -500 150 -500 N -P 2 0 1 0 50 -400 150 -400 N -P 2 0 1 0 50 -300 150 -300 N -P 2 0 1 0 50 -200 150 -200 N -P 2 0 1 0 50 -100 150 -100 N -P 2 0 1 0 50 0 150 0 N -P 2 0 1 0 50 100 150 100 N -P 2 0 1 0 50 200 150 200 N -P 2 0 1 0 50 300 150 300 N -P 2 0 1 0 50 400 150 400 N -P 2 0 1 0 50 500 150 500 N -P 2 0 1 0 50 600 150 600 N -P 2 0 1 0 50 700 150 700 N -P 2 0 1 0 50 800 150 800 N -P 2 0 1 0 50 900 150 900 N -P 2 0 1 0 50 1000 150 1000 N -X ~ 1 -150 1050 100 R 35 50 1 1 P -X ~ 2 150 1050 100 L 35 50 1 1 P -X ~ 3 -250 1000 100 R 35 50 1 1 P -X ~ 4 250 1000 100 L 35 50 1 1 P -X ~ 5 -150 950 100 R 35 50 1 1 P -X ~ 6 150 950 100 L 35 50 1 1 P -X ~ 7 -250 900 100 R 35 50 1 1 P -X ~ 8 250 900 100 L 35 50 1 1 P -X ~ 9 -150 850 100 R 35 50 1 1 P -X ~ 10 150 850 100 L 35 50 1 1 P -X ~ 20 250 600 100 L 35 50 1 1 P -X ~ 30 150 350 100 L 35 50 1 1 P -X ~ 40 250 100 100 L 35 50 1 1 P -X ~ 50 150 -150 100 L 35 50 1 1 P -X ~ 60 250 -400 100 L 35 50 1 1 P -X ~ 70 150 -650 100 L 35 50 1 1 P -X ~ 80 250 -900 100 L 35 50 1 1 P -X ~ 11 -250 800 100 R 35 50 1 1 P -X ~ 21 -150 550 100 R 35 50 1 1 P -X ~ 31 -250 300 100 R 35 50 1 1 P -X ~ 41 -150 50 100 R 35 50 1 1 P -X ~ 51 -250 -200 100 R 35 50 1 1 P -X ~ 61 -150 -450 100 R 35 50 1 1 P -X ~ 71 -250 -700 100 R 35 50 1 1 P -X ~ 81 -150 -950 100 R 35 50 1 1 P -X ~ 12 250 800 100 L 35 50 1 1 P -X ~ 22 150 550 100 L 35 50 1 1 P -X ~ 32 250 300 100 L 35 50 1 1 P -X ~ 42 150 50 100 L 35 50 1 1 P -X ~ 52 250 -200 100 L 35 50 1 1 P -X ~ 62 150 -450 100 L 35 50 1 1 P -X ~ 72 250 -700 100 L 35 50 1 1 P -X ~ 82 150 -950 100 L 35 50 1 1 P -X ~ 13 -150 750 100 R 35 50 1 1 P -X ~ 23 -250 500 100 R 35 50 1 1 P -X ~ 33 -150 250 100 R 35 50 1 1 P -X ~ 43 -250 0 100 R 35 50 1 1 P -X ~ 53 -150 -250 100 R 35 50 1 1 P -X ~ 63 -250 -500 100 R 35 50 1 1 P -X ~ 73 -150 -750 100 R 35 50 1 1 P -X ~ 83 -250 -1000 100 R 35 50 1 1 P -X ~ 14 150 750 100 L 35 50 1 1 P -X ~ 24 250 500 100 L 35 50 1 1 P -X ~ 34 150 250 100 L 35 50 1 1 P -X ~ 44 250 0 100 L 35 50 1 1 P -X ~ 54 150 -250 100 L 35 50 1 1 P -X ~ 64 250 -500 100 L 35 50 1 1 P -X ~ 74 150 -750 100 L 35 50 1 1 P -X ~ 84 250 -1000 100 L 35 50 1 1 P -X ~ 15 -250 700 100 R 35 50 1 1 P -X ~ 25 -150 450 100 R 35 50 1 1 P -X ~ 35 -250 200 100 R 35 50 1 1 P -X ~ 45 -150 -50 100 R 35 50 1 1 P -X ~ 55 -250 -300 100 R 35 50 1 1 P -X ~ 65 -150 -550 100 R 35 50 1 1 P -X ~ 75 -250 -800 100 R 35 50 1 1 P -X ~ 16 250 700 100 L 35 50 1 1 P -X ~ 26 150 450 100 L 35 50 1 1 P -X ~ 36 250 200 100 L 35 50 1 1 P -X ~ 46 150 -50 100 L 35 50 1 1 P -X ~ 56 250 -300 100 L 35 50 1 1 P -X ~ 66 150 -550 100 L 35 50 1 1 P -X ~ 76 250 -800 100 L 35 50 1 1 P -X ~ 17 -150 650 100 R 35 50 1 1 P -X ~ 27 -250 400 100 R 35 50 1 1 P -X ~ 37 -150 150 100 R 35 35 1 1 P -X ~ 47 -250 -100 100 R 35 50 1 1 P -X ~ 57 -150 -350 100 R 35 50 1 1 P -X ~ 67 -250 -600 100 R 35 50 1 1 P -X ~ 77 -150 -850 100 R 35 50 1 1 P -X ~ 18 150 650 100 L 35 50 1 1 P -X ~ 28 250 400 100 L 35 50 1 1 P -X ~ 38 150 150 100 L 35 50 1 1 P -X ~ 48 250 -100 100 L 35 50 1 1 P -X ~ 58 150 -350 100 L 35 50 1 1 P -X ~ 68 250 -600 100 L 35 50 1 1 P -X ~ 78 150 -850 100 L 35 50 1 1 P -X ~ 19 -250 600 100 R 35 50 1 1 P -X ~ 29 -150 350 100 R 35 50 1 1 P -X ~ 39 -250 100 100 R 35 50 1 1 P -X ~ 49 -150 -150 100 R 35 50 1 1 P -X ~ 59 -250 -400 100 R 35 50 1 1 P -X ~ 69 -150 -650 100 R 35 50 1 1 P -X ~ 79 -250 -900 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_43x2 -# -DEF HEADER_43x2 J 0 0 Y Y 1 F N -F0 "J" 0 1150 60 H V C CNN -F1 "HEADER_43x2" 0 -1150 60 H V C CNN -F2 "" 0 100 60 H V C CNN -F3 "" 0 100 60 H V C CNN -DRAW -S 50 -1100 -50 1100 0 1 0 N -P 2 0 1 0 -150 -1000 -50 -1000 N -P 2 0 1 0 -150 -900 -50 -900 N -P 2 0 1 0 -150 -800 -50 -800 N -P 2 0 1 0 -150 -700 -50 -700 N -P 2 0 1 0 -150 -600 -50 -600 N -P 2 0 1 0 -150 -500 -50 -500 N -P 2 0 1 0 -150 -400 -50 -400 N -P 2 0 1 0 -150 -300 -50 -300 N -P 2 0 1 0 -150 -200 -50 -200 N -P 2 0 1 0 -150 -100 -50 -100 N -P 2 0 1 0 -150 0 -50 0 N -P 2 0 1 0 -150 100 -50 100 N -P 2 0 1 0 -150 200 -50 200 N -P 2 0 1 0 -150 300 -50 300 N -P 2 0 1 0 -150 400 -50 400 N -P 2 0 1 0 -150 500 -50 500 N -P 2 0 1 0 -150 600 -50 600 N -P 2 0 1 0 -150 700 -50 700 N -P 2 0 1 0 -150 800 -50 800 N -P 2 0 1 0 -150 900 -50 900 N -P 2 0 1 0 -150 1000 -50 1000 N -P 2 0 1 0 50 -1000 150 -1000 N -P 2 0 1 0 50 -900 150 -900 N -P 2 0 1 0 50 -800 150 -800 N -P 2 0 1 0 50 -700 150 -700 N -P 2 0 1 0 50 -600 150 -600 N -P 2 0 1 0 50 -500 150 -500 N -P 2 0 1 0 50 -400 150 -400 N -P 2 0 1 0 50 -300 150 -300 N -P 2 0 1 0 50 -200 150 -200 N -P 2 0 1 0 50 -100 150 -100 N -P 2 0 1 0 50 0 150 0 N -P 2 0 1 0 50 100 150 100 N -P 2 0 1 0 50 200 150 200 N -P 2 0 1 0 50 300 150 300 N -P 2 0 1 0 50 400 150 400 N -P 2 0 1 0 50 500 150 500 N -P 2 0 1 0 50 600 150 600 N -P 2 0 1 0 50 700 150 700 N -P 2 0 1 0 50 800 150 800 N -P 2 0 1 0 50 900 150 900 N -P 2 0 1 0 50 1000 150 1000 N -X ~ 1 -150 1050 100 R 35 50 1 1 P -X ~ 2 150 1050 100 L 35 50 1 1 P -X ~ 3 -250 1000 100 R 35 50 1 1 P -X ~ 4 250 1000 100 L 35 50 1 1 P -X ~ 5 -150 950 100 R 35 50 1 1 P -X ~ 6 150 950 100 L 35 50 1 1 P -X ~ 7 -250 900 100 R 35 50 1 1 P -X ~ 8 250 900 100 L 35 50 1 1 P -X ~ 9 -150 850 100 R 35 50 1 1 P -X ~ 10 150 850 100 L 35 50 1 1 P -X ~ 20 250 600 100 L 35 50 1 1 P -X ~ 30 150 350 100 L 35 50 1 1 P -X ~ 40 250 100 100 L 35 50 1 1 P -X ~ 50 150 -150 100 L 35 50 1 1 P -X ~ 60 250 -400 100 L 35 50 1 1 P -X ~ 70 150 -650 100 L 35 50 1 1 P -X ~ 80 250 -900 100 L 35 50 1 1 P -X ~ 11 -250 800 100 R 35 50 1 1 P -X ~ 21 -150 550 100 R 35 50 1 1 P -X ~ 31 -250 300 100 R 35 50 1 1 P -X ~ 41 -150 50 100 R 35 50 1 1 P -X ~ 51 -250 -200 100 R 35 50 1 1 P -X ~ 61 -150 -450 100 R 35 50 1 1 P -X ~ 71 -250 -700 100 R 35 50 1 1 P -X ~ 81 -150 -950 100 R 35 50 1 1 P -X ~ 12 250 800 100 L 35 50 1 1 P -X ~ 22 150 550 100 L 35 50 1 1 P -X ~ 32 250 300 100 L 35 50 1 1 P -X ~ 42 150 50 100 L 35 50 1 1 P -X ~ 52 250 -200 100 L 35 50 1 1 P -X ~ 62 150 -450 100 L 35 50 1 1 P -X ~ 72 250 -700 100 L 35 50 1 1 P -X ~ 82 150 -950 100 L 35 50 1 1 P -X ~ 13 -150 750 100 R 35 50 1 1 P -X ~ 23 -250 500 100 R 35 50 1 1 P -X ~ 33 -150 250 100 R 35 50 1 1 P -X ~ 43 -250 0 100 R 35 50 1 1 P -X ~ 53 -150 -250 100 R 35 50 1 1 P -X ~ 63 -250 -500 100 R 35 50 1 1 P -X ~ 73 -150 -750 100 R 35 50 1 1 P -X ~ 83 -250 -1000 100 R 35 50 1 1 P -X ~ 14 150 750 100 L 35 50 1 1 P -X ~ 24 250 500 100 L 35 50 1 1 P -X ~ 34 150 250 100 L 35 50 1 1 P -X ~ 44 250 0 100 L 35 50 1 1 P -X ~ 54 150 -250 100 L 35 50 1 1 P -X ~ 64 250 -500 100 L 35 50 1 1 P -X ~ 74 150 -750 100 L 35 50 1 1 P -X ~ 84 250 -1000 100 L 35 50 1 1 P -X ~ 15 -250 700 100 R 35 50 1 1 P -X ~ 25 -150 450 100 R 35 50 1 1 P -X ~ 35 -250 200 100 R 35 50 1 1 P -X ~ 45 -150 -50 100 R 35 50 1 1 P -X ~ 55 -250 -300 100 R 35 50 1 1 P -X ~ 65 -150 -550 100 R 35 50 1 1 P -X ~ 75 -250 -800 100 R 35 50 1 1 P -X ~ 85 -150 -1050 100 R 35 50 1 1 P -X ~ 16 250 700 100 L 35 50 1 1 P -X ~ 26 150 450 100 L 35 50 1 1 P -X ~ 36 250 200 100 L 35 50 1 1 P -X ~ 46 150 -50 100 L 35 50 1 1 P -X ~ 56 250 -300 100 L 35 50 1 1 P -X ~ 66 150 -550 100 L 35 50 1 1 P -X ~ 76 250 -800 100 L 35 50 1 1 P -X ~ 86 150 -1050 100 L 35 50 1 1 P -X ~ 17 -150 650 100 R 35 50 1 1 P -X ~ 27 -250 400 100 R 35 50 1 1 P -X ~ 37 -150 150 100 R 35 35 1 1 P -X ~ 47 -250 -100 100 R 35 50 1 1 P -X ~ 57 -150 -350 100 R 35 50 1 1 P -X ~ 67 -250 -600 100 R 35 50 1 1 P -X ~ 77 -150 -850 100 R 35 50 1 1 P -X ~ 18 150 650 100 L 35 50 1 1 P -X ~ 28 250 400 100 L 35 50 1 1 P -X ~ 38 150 150 100 L 35 50 1 1 P -X ~ 48 250 -100 100 L 35 50 1 1 P -X ~ 58 150 -350 100 L 35 50 1 1 P -X ~ 68 250 -600 100 L 35 50 1 1 P -X ~ 78 150 -850 100 L 35 50 1 1 P -X ~ 19 -250 600 100 R 35 50 1 1 P -X ~ 29 -150 350 100 R 35 50 1 1 P -X ~ 39 -250 100 100 R 35 50 1 1 P -X ~ 49 -150 -150 100 R 35 50 1 1 P -X ~ 59 -250 -400 100 R 35 50 1 1 P -X ~ 69 -150 -650 100 R 35 50 1 1 P -X ~ 79 -250 -900 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_44x2 -# -DEF HEADER_44x2 J 0 0 Y Y 1 F N -F0 "J" 0 1200 60 H V C CNN -F1 "HEADER_44x2" 0 -1200 60 H V C CNN -F2 "" 0 150 60 H V C CNN -F3 "" 0 150 60 H V C CNN -DRAW -S 50 -1150 -50 1150 0 1 0 N -P 2 0 1 0 -150 -1050 -50 -1050 N -P 2 0 1 0 -150 -950 -50 -950 N -P 2 0 1 0 -150 -850 -50 -850 N -P 2 0 1 0 -150 -750 -50 -750 N -P 2 0 1 0 -150 -650 -50 -650 N -P 2 0 1 0 -150 -550 -50 -550 N -P 2 0 1 0 -150 -450 -50 -450 N -P 2 0 1 0 -150 -350 -50 -350 N -P 2 0 1 0 -150 -250 -50 -250 N -P 2 0 1 0 -150 -150 -50 -150 N -P 2 0 1 0 -150 -50 -50 -50 N -P 2 0 1 0 -150 50 -50 50 N -P 2 0 1 0 -150 150 -50 150 N -P 2 0 1 0 -150 250 -50 250 N -P 2 0 1 0 -150 350 -50 350 N -P 2 0 1 0 -150 450 -50 450 N -P 2 0 1 0 -150 550 -50 550 N -P 2 0 1 0 -150 650 -50 650 N -P 2 0 1 0 -150 750 -50 750 N -P 2 0 1 0 -150 850 -50 850 N -P 2 0 1 0 -150 950 -50 950 N -P 2 0 1 0 -150 1050 -50 1050 N -P 2 0 1 0 50 -1050 150 -1050 N -P 2 0 1 0 50 -950 150 -950 N -P 2 0 1 0 50 -850 150 -850 N -P 2 0 1 0 50 -750 150 -750 N -P 2 0 1 0 50 -650 150 -650 N -P 2 0 1 0 50 -550 150 -550 N -P 2 0 1 0 50 -450 150 -450 N -P 2 0 1 0 50 -350 150 -350 N -P 2 0 1 0 50 -250 150 -250 N -P 2 0 1 0 50 -150 150 -150 N -P 2 0 1 0 50 -50 150 -50 N -P 2 0 1 0 50 50 150 50 N -P 2 0 1 0 50 150 150 150 N -P 2 0 1 0 50 250 150 250 N -P 2 0 1 0 50 350 150 350 N -P 2 0 1 0 50 450 150 450 N -P 2 0 1 0 50 550 150 550 N -P 2 0 1 0 50 650 150 650 N -P 2 0 1 0 50 750 150 750 N -P 2 0 1 0 50 850 150 850 N -P 2 0 1 0 50 950 150 950 N -P 2 0 1 0 50 1050 150 1050 N -X ~ 1 -150 1100 100 R 35 50 1 1 P -X ~ 2 150 1100 100 L 35 50 1 1 P -X ~ 3 -250 1050 100 R 35 50 1 1 P -X ~ 4 250 1050 100 L 35 50 1 1 P -X ~ 5 -150 1000 100 R 35 50 1 1 P -X ~ 6 150 1000 100 L 35 50 1 1 P -X ~ 7 -250 950 100 R 35 50 1 1 P -X ~ 8 250 950 100 L 35 50 1 1 P -X ~ 9 -150 900 100 R 35 50 1 1 P -X ~ 10 150 900 100 L 35 50 1 1 P -X ~ 20 250 650 100 L 35 50 1 1 P -X ~ 30 150 400 100 L 35 50 1 1 P -X ~ 40 250 150 100 L 35 50 1 1 P -X ~ 50 150 -100 100 L 35 50 1 1 P -X ~ 60 250 -350 100 L 35 50 1 1 P -X ~ 70 150 -600 100 L 35 50 1 1 P -X ~ 80 250 -850 100 L 35 50 1 1 P -X ~ 11 -250 850 100 R 35 50 1 1 P -X ~ 21 -150 600 100 R 35 50 1 1 P -X ~ 31 -250 350 100 R 35 50 1 1 P -X ~ 41 -150 100 100 R 35 50 1 1 P -X ~ 51 -250 -150 100 R 35 50 1 1 P -X ~ 61 -150 -400 100 R 35 50 1 1 P -X ~ 71 -250 -650 100 R 35 50 1 1 P -X ~ 81 -150 -900 100 R 35 50 1 1 P -X ~ 12 250 850 100 L 35 50 1 1 P -X ~ 22 150 600 100 L 35 50 1 1 P -X ~ 32 250 350 100 L 35 50 1 1 P -X ~ 42 150 100 100 L 35 50 1 1 P -X ~ 52 250 -150 100 L 35 50 1 1 P -X ~ 62 150 -400 100 L 35 50 1 1 P -X ~ 72 250 -650 100 L 35 50 1 1 P -X ~ 82 150 -900 100 L 35 50 1 1 P -X ~ 13 -150 800 100 R 35 50 1 1 P -X ~ 23 -250 550 100 R 35 50 1 1 P -X ~ 33 -150 300 100 R 35 50 1 1 P -X ~ 43 -250 50 100 R 35 50 1 1 P -X ~ 53 -150 -200 100 R 35 50 1 1 P -X ~ 63 -250 -450 100 R 35 50 1 1 P -X ~ 73 -150 -700 100 R 35 50 1 1 P -X ~ 83 -250 -950 100 R 35 50 1 1 P -X ~ 14 150 800 100 L 35 50 1 1 P -X ~ 24 250 550 100 L 35 50 1 1 P -X ~ 34 150 300 100 L 35 50 1 1 P -X ~ 44 250 50 100 L 35 50 1 1 P -X ~ 54 150 -200 100 L 35 50 1 1 P -X ~ 64 250 -450 100 L 35 50 1 1 P -X ~ 74 150 -700 100 L 35 50 1 1 P -X ~ 84 250 -950 100 L 35 50 1 1 P -X ~ 15 -250 750 100 R 35 50 1 1 P -X ~ 25 -150 500 100 R 35 50 1 1 P -X ~ 35 -250 250 100 R 35 50 1 1 P -X ~ 45 -150 0 100 R 35 50 1 1 P -X ~ 55 -250 -250 100 R 35 50 1 1 P -X ~ 65 -150 -500 100 R 35 50 1 1 P -X ~ 75 -250 -750 100 R 35 50 1 1 P -X ~ 85 -150 -1000 100 R 35 50 1 1 P -X ~ 16 250 750 100 L 35 50 1 1 P -X ~ 26 150 500 100 L 35 50 1 1 P -X ~ 36 250 250 100 L 35 50 1 1 P -X ~ 46 150 0 100 L 35 50 1 1 P -X ~ 56 250 -250 100 L 35 50 1 1 P -X ~ 66 150 -500 100 L 35 50 1 1 P -X ~ 76 250 -750 100 L 35 50 1 1 P -X ~ 86 150 -1000 100 L 35 50 1 1 P -X ~ 17 -150 700 100 R 35 50 1 1 P -X ~ 27 -250 450 100 R 35 50 1 1 P -X ~ 37 -150 200 100 R 35 35 1 1 P -X ~ 47 -250 -50 100 R 35 50 1 1 P -X ~ 57 -150 -300 100 R 35 50 1 1 P -X ~ 67 -250 -550 100 R 35 50 1 1 P -X ~ 77 -150 -800 100 R 35 50 1 1 P -X ~ 87 -250 -1050 100 R 35 50 1 1 P -X ~ 18 150 700 100 L 35 50 1 1 P -X ~ 28 250 450 100 L 35 50 1 1 P -X ~ 38 150 200 100 L 35 50 1 1 P -X ~ 48 250 -50 100 L 35 50 1 1 P -X ~ 58 150 -300 100 L 35 50 1 1 P -X ~ 68 250 -550 100 L 35 50 1 1 P -X ~ 78 150 -800 100 L 35 50 1 1 P -X ~ 88 250 -1050 100 L 35 50 1 1 P -X ~ 19 -250 650 100 R 35 50 1 1 P -X ~ 29 -150 400 100 R 35 50 1 1 P -X ~ 39 -250 150 100 R 35 50 1 1 P -X ~ 49 -150 -100 100 R 35 50 1 1 P -X ~ 59 -250 -350 100 R 35 50 1 1 P -X ~ 69 -150 -600 100 R 35 50 1 1 P -X ~ 79 -250 -850 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_45x2 -# -DEF HEADER_45x2 J 0 0 Y Y 1 F N -F0 "J" 0 1200 60 H V C CNN -F1 "HEADER_45x2" 0 -1200 60 H V C CNN -F2 "" 0 150 60 H V C CNN -F3 "" 0 150 60 H V C CNN -DRAW -S 50 -1150 -50 1150 0 1 0 N -P 2 0 1 0 -150 -1050 -50 -1050 N -P 2 0 1 0 -150 -950 -50 -950 N -P 2 0 1 0 -150 -850 -50 -850 N -P 2 0 1 0 -150 -750 -50 -750 N -P 2 0 1 0 -150 -650 -50 -650 N -P 2 0 1 0 -150 -550 -50 -550 N -P 2 0 1 0 -150 -450 -50 -450 N -P 2 0 1 0 -150 -350 -50 -350 N -P 2 0 1 0 -150 -250 -50 -250 N -P 2 0 1 0 -150 -150 -50 -150 N -P 2 0 1 0 -150 -50 -50 -50 N -P 2 0 1 0 -150 50 -50 50 N -P 2 0 1 0 -150 150 -50 150 N -P 2 0 1 0 -150 250 -50 250 N -P 2 0 1 0 -150 350 -50 350 N -P 2 0 1 0 -150 450 -50 450 N -P 2 0 1 0 -150 550 -50 550 N -P 2 0 1 0 -150 650 -50 650 N -P 2 0 1 0 -150 750 -50 750 N -P 2 0 1 0 -150 850 -50 850 N -P 2 0 1 0 -150 950 -50 950 N -P 2 0 1 0 -150 1050 -50 1050 N -P 2 0 1 0 50 -1050 150 -1050 N -P 2 0 1 0 50 -950 150 -950 N -P 2 0 1 0 50 -850 150 -850 N -P 2 0 1 0 50 -750 150 -750 N -P 2 0 1 0 50 -650 150 -650 N -P 2 0 1 0 50 -550 150 -550 N -P 2 0 1 0 50 -450 150 -450 N -P 2 0 1 0 50 -350 150 -350 N -P 2 0 1 0 50 -250 150 -250 N -P 2 0 1 0 50 -150 150 -150 N -P 2 0 1 0 50 -50 150 -50 N -P 2 0 1 0 50 50 150 50 N -P 2 0 1 0 50 150 150 150 N -P 2 0 1 0 50 250 150 250 N -P 2 0 1 0 50 350 150 350 N -P 2 0 1 0 50 450 150 450 N -P 2 0 1 0 50 550 150 550 N -P 2 0 1 0 50 650 150 650 N -P 2 0 1 0 50 750 150 750 N -P 2 0 1 0 50 850 150 850 N -P 2 0 1 0 50 950 150 950 N -P 2 0 1 0 50 1050 150 1050 N -X ~ 1 -150 1100 100 R 35 50 1 1 P -X ~ 2 150 1100 100 L 35 50 1 1 P -X ~ 3 -250 1050 100 R 35 50 1 1 P -X ~ 4 250 1050 100 L 35 50 1 1 P -X ~ 5 -150 1000 100 R 35 50 1 1 P -X ~ 6 150 1000 100 L 35 50 1 1 P -X ~ 7 -250 950 100 R 35 50 1 1 P -X ~ 8 250 950 100 L 35 50 1 1 P -X ~ 9 -150 900 100 R 35 50 1 1 P -X ~ 10 150 900 100 L 35 50 1 1 P -X ~ 20 250 650 100 L 35 50 1 1 P -X ~ 30 150 400 100 L 35 50 1 1 P -X ~ 40 250 150 100 L 35 50 1 1 P -X ~ 50 150 -100 100 L 35 50 1 1 P -X ~ 60 250 -350 100 L 35 50 1 1 P -X ~ 70 150 -600 100 L 35 50 1 1 P -X ~ 80 250 -850 100 L 35 50 1 1 P -X ~ 90 150 -1100 100 L 35 50 1 1 P -X ~ 11 -250 850 100 R 35 50 1 1 P -X ~ 21 -150 600 100 R 35 50 1 1 P -X ~ 31 -250 350 100 R 35 50 1 1 P -X ~ 41 -150 100 100 R 35 50 1 1 P -X ~ 51 -250 -150 100 R 35 50 1 1 P -X ~ 61 -150 -400 100 R 35 50 1 1 P -X ~ 71 -250 -650 100 R 35 50 1 1 P -X ~ 81 -150 -900 100 R 35 50 1 1 P -X ~ 12 250 850 100 L 35 50 1 1 P -X ~ 22 150 600 100 L 35 50 1 1 P -X ~ 32 250 350 100 L 35 50 1 1 P -X ~ 42 150 100 100 L 35 50 1 1 P -X ~ 52 250 -150 100 L 35 50 1 1 P -X ~ 62 150 -400 100 L 35 50 1 1 P -X ~ 72 250 -650 100 L 35 50 1 1 P -X ~ 82 150 -900 100 L 35 50 1 1 P -X ~ 13 -150 800 100 R 35 50 1 1 P -X ~ 23 -250 550 100 R 35 50 1 1 P -X ~ 33 -150 300 100 R 35 50 1 1 P -X ~ 43 -250 50 100 R 35 50 1 1 P -X ~ 53 -150 -200 100 R 35 50 1 1 P -X ~ 63 -250 -450 100 R 35 50 1 1 P -X ~ 73 -150 -700 100 R 35 50 1 1 P -X ~ 83 -250 -950 100 R 35 50 1 1 P -X ~ 14 150 800 100 L 35 50 1 1 P -X ~ 24 250 550 100 L 35 50 1 1 P -X ~ 34 150 300 100 L 35 50 1 1 P -X ~ 44 250 50 100 L 35 50 1 1 P -X ~ 54 150 -200 100 L 35 50 1 1 P -X ~ 64 250 -450 100 L 35 50 1 1 P -X ~ 74 150 -700 100 L 35 50 1 1 P -X ~ 84 250 -950 100 L 35 50 1 1 P -X ~ 15 -250 750 100 R 35 50 1 1 P -X ~ 25 -150 500 100 R 35 50 1 1 P -X ~ 35 -250 250 100 R 35 50 1 1 P -X ~ 45 -150 0 100 R 35 50 1 1 P -X ~ 55 -250 -250 100 R 35 50 1 1 P -X ~ 65 -150 -500 100 R 35 50 1 1 P -X ~ 75 -250 -750 100 R 35 50 1 1 P -X ~ 85 -150 -1000 100 R 35 50 1 1 P -X ~ 16 250 750 100 L 35 50 1 1 P -X ~ 26 150 500 100 L 35 50 1 1 P -X ~ 36 250 250 100 L 35 50 1 1 P -X ~ 46 150 0 100 L 35 50 1 1 P -X ~ 56 250 -250 100 L 35 50 1 1 P -X ~ 66 150 -500 100 L 35 50 1 1 P -X ~ 76 250 -750 100 L 35 50 1 1 P -X ~ 86 150 -1000 100 L 35 50 1 1 P -X ~ 17 -150 700 100 R 35 50 1 1 P -X ~ 27 -250 450 100 R 35 50 1 1 P -X ~ 37 -150 200 100 R 35 35 1 1 P -X ~ 47 -250 -50 100 R 35 50 1 1 P -X ~ 57 -150 -300 100 R 35 50 1 1 P -X ~ 67 -250 -550 100 R 35 50 1 1 P -X ~ 77 -150 -800 100 R 35 50 1 1 P -X ~ 87 -250 -1050 100 R 35 50 1 1 P -X ~ 18 150 700 100 L 35 50 1 1 P -X ~ 28 250 450 100 L 35 50 1 1 P -X ~ 38 150 200 100 L 35 50 1 1 P -X ~ 48 250 -50 100 L 35 50 1 1 P -X ~ 58 150 -300 100 L 35 50 1 1 P -X ~ 68 250 -550 100 L 35 50 1 1 P -X ~ 78 150 -800 100 L 35 50 1 1 P -X ~ 88 250 -1050 100 L 35 50 1 1 P -X ~ 19 -250 650 100 R 35 50 1 1 P -X ~ 29 -150 400 100 R 35 50 1 1 P -X ~ 39 -250 150 100 R 35 50 1 1 P -X ~ 49 -150 -100 100 R 35 50 1 1 P -X ~ 59 -250 -350 100 R 35 50 1 1 P -X ~ 69 -150 -600 100 R 35 50 1 1 P -X ~ 79 -250 -850 100 R 35 50 1 1 P -X ~ 89 -150 -1100 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_46x2 -# -DEF HEADER_46x2 J 0 0 Y Y 1 F N -F0 "J" 0 1250 60 H V C CNN -F1 "HEADER_46x2" 0 -1250 60 H V C CNN -F2 "" 0 200 60 H V C CNN -F3 "" 0 200 60 H V C CNN -DRAW -S 50 -1200 -50 1200 0 1 0 N -P 2 0 1 0 -150 -1100 -50 -1100 N -P 2 0 1 0 -150 -1000 -50 -1000 N -P 2 0 1 0 -150 -900 -50 -900 N -P 2 0 1 0 -150 -800 -50 -800 N -P 2 0 1 0 -150 -700 -50 -700 N -P 2 0 1 0 -150 -600 -50 -600 N -P 2 0 1 0 -150 -500 -50 -500 N -P 2 0 1 0 -150 -400 -50 -400 N -P 2 0 1 0 -150 -300 -50 -300 N -P 2 0 1 0 -150 -200 -50 -200 N -P 2 0 1 0 -150 -100 -50 -100 N -P 2 0 1 0 -150 0 -50 0 N -P 2 0 1 0 -150 100 -50 100 N -P 2 0 1 0 -150 200 -50 200 N -P 2 0 1 0 -150 300 -50 300 N -P 2 0 1 0 -150 400 -50 400 N -P 2 0 1 0 -150 500 -50 500 N -P 2 0 1 0 -150 600 -50 600 N -P 2 0 1 0 -150 700 -50 700 N -P 2 0 1 0 -150 800 -50 800 N -P 2 0 1 0 -150 900 -50 900 N -P 2 0 1 0 -150 1000 -50 1000 N -P 2 0 1 0 -150 1100 -50 1100 N -P 2 0 1 0 50 -1100 150 -1100 N -P 2 0 1 0 50 -1000 150 -1000 N -P 2 0 1 0 50 -900 150 -900 N -P 2 0 1 0 50 -800 150 -800 N -P 2 0 1 0 50 -700 150 -700 N -P 2 0 1 0 50 -600 150 -600 N -P 2 0 1 0 50 -500 150 -500 N -P 2 0 1 0 50 -400 150 -400 N -P 2 0 1 0 50 -300 150 -300 N -P 2 0 1 0 50 -200 150 -200 N -P 2 0 1 0 50 -100 150 -100 N -P 2 0 1 0 50 0 150 0 N -P 2 0 1 0 50 100 150 100 N -P 2 0 1 0 50 200 150 200 N -P 2 0 1 0 50 300 150 300 N -P 2 0 1 0 50 400 150 400 N -P 2 0 1 0 50 500 150 500 N -P 2 0 1 0 50 600 150 600 N -P 2 0 1 0 50 700 150 700 N -P 2 0 1 0 50 800 150 800 N -P 2 0 1 0 50 900 150 900 N -P 2 0 1 0 50 1000 150 1000 N -P 2 0 1 0 50 1100 150 1100 N -X ~ 1 -150 1150 100 R 35 50 1 1 P -X ~ 2 150 1150 100 L 35 50 1 1 P -X ~ 3 -250 1100 100 R 35 50 1 1 P -X ~ 4 250 1100 100 L 35 50 1 1 P -X ~ 5 -150 1050 100 R 35 50 1 1 P -X ~ 6 150 1050 100 L 35 50 1 1 P -X ~ 7 -250 1000 100 R 35 50 1 1 P -X ~ 8 250 1000 100 L 35 50 1 1 P -X ~ 9 -150 950 100 R 35 50 1 1 P -X ~ 10 150 950 100 L 35 50 1 1 P -X ~ 20 250 700 100 L 35 50 1 1 P -X ~ 30 150 450 100 L 35 50 1 1 P -X ~ 40 250 200 100 L 35 50 1 1 P -X ~ 50 150 -50 100 L 35 50 1 1 P -X ~ 60 250 -300 100 L 35 50 1 1 P -X ~ 70 150 -550 100 L 35 50 1 1 P -X ~ 80 250 -800 100 L 35 50 1 1 P -X ~ 90 150 -1050 100 L 35 50 1 1 P -X ~ 11 -250 900 100 R 35 50 1 1 P -X ~ 21 -150 650 100 R 35 50 1 1 P -X ~ 31 -250 400 100 R 35 50 1 1 P -X ~ 41 -150 150 100 R 35 50 1 1 P -X ~ 51 -250 -100 100 R 35 50 1 1 P -X ~ 61 -150 -350 100 R 35 50 1 1 P -X ~ 71 -250 -600 100 R 35 50 1 1 P -X ~ 81 -150 -850 100 R 35 50 1 1 P -X ~ 91 -250 -1100 100 R 35 50 1 1 P -X ~ 12 250 900 100 L 35 50 1 1 P -X ~ 22 150 650 100 L 35 50 1 1 P -X ~ 32 250 400 100 L 35 50 1 1 P -X ~ 42 150 150 100 L 35 50 1 1 P -X ~ 52 250 -100 100 L 35 50 1 1 P -X ~ 62 150 -350 100 L 35 50 1 1 P -X ~ 72 250 -600 100 L 35 50 1 1 P -X ~ 82 150 -850 100 L 35 50 1 1 P -X ~ 92 250 -1100 100 L 35 50 1 1 P -X ~ 13 -150 850 100 R 35 50 1 1 P -X ~ 23 -250 600 100 R 35 50 1 1 P -X ~ 33 -150 350 100 R 35 50 1 1 P -X ~ 43 -250 100 100 R 35 50 1 1 P -X ~ 53 -150 -150 100 R 35 50 1 1 P -X ~ 63 -250 -400 100 R 35 50 1 1 P -X ~ 73 -150 -650 100 R 35 50 1 1 P -X ~ 83 -250 -900 100 R 35 50 1 1 P -X ~ 14 150 850 100 L 35 50 1 1 P -X ~ 24 250 600 100 L 35 50 1 1 P -X ~ 34 150 350 100 L 35 50 1 1 P -X ~ 44 250 100 100 L 35 50 1 1 P -X ~ 54 150 -150 100 L 35 50 1 1 P -X ~ 64 250 -400 100 L 35 50 1 1 P -X ~ 74 150 -650 100 L 35 50 1 1 P -X ~ 84 250 -900 100 L 35 50 1 1 P -X ~ 15 -250 800 100 R 35 50 1 1 P -X ~ 25 -150 550 100 R 35 50 1 1 P -X ~ 35 -250 300 100 R 35 50 1 1 P -X ~ 45 -150 50 100 R 35 50 1 1 P -X ~ 55 -250 -200 100 R 35 50 1 1 P -X ~ 65 -150 -450 100 R 35 50 1 1 P -X ~ 75 -250 -700 100 R 35 50 1 1 P -X ~ 85 -150 -950 100 R 35 50 1 1 P -X ~ 16 250 800 100 L 35 50 1 1 P -X ~ 26 150 550 100 L 35 50 1 1 P -X ~ 36 250 300 100 L 35 50 1 1 P -X ~ 46 150 50 100 L 35 50 1 1 P -X ~ 56 250 -200 100 L 35 50 1 1 P -X ~ 66 150 -450 100 L 35 50 1 1 P -X ~ 76 250 -700 100 L 35 50 1 1 P -X ~ 86 150 -950 100 L 35 50 1 1 P -X ~ 17 -150 750 100 R 35 50 1 1 P -X ~ 27 -250 500 100 R 35 50 1 1 P -X ~ 37 -150 250 100 R 35 35 1 1 P -X ~ 47 -250 0 100 R 35 50 1 1 P -X ~ 57 -150 -250 100 R 35 50 1 1 P -X ~ 67 -250 -500 100 R 35 50 1 1 P -X ~ 77 -150 -750 100 R 35 50 1 1 P -X ~ 87 -250 -1000 100 R 35 50 1 1 P -X ~ 18 150 750 100 L 35 50 1 1 P -X ~ 28 250 500 100 L 35 50 1 1 P -X ~ 38 150 250 100 L 35 50 1 1 P -X ~ 48 250 0 100 L 35 50 1 1 P -X ~ 58 150 -250 100 L 35 50 1 1 P -X ~ 68 250 -500 100 L 35 50 1 1 P -X ~ 78 150 -750 100 L 35 50 1 1 P -X ~ 88 250 -1000 100 L 35 50 1 1 P -X ~ 19 -250 700 100 R 35 50 1 1 P -X ~ 29 -150 450 100 R 35 50 1 1 P -X ~ 39 -250 200 100 R 35 50 1 1 P -X ~ 49 -150 -50 100 R 35 50 1 1 P -X ~ 59 -250 -300 100 R 35 50 1 1 P -X ~ 69 -150 -550 100 R 35 50 1 1 P -X ~ 79 -250 -800 100 R 35 50 1 1 P -X ~ 89 -150 -1050 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_47x2 -# -DEF HEADER_47x2 J 0 0 Y Y 1 F N -F0 "J" 0 1250 60 H V C CNN -F1 "HEADER_47x2" 0 -1250 60 H V C CNN -F2 "" 0 200 60 H V C CNN -F3 "" 0 200 60 H V C CNN -DRAW -S 50 -1200 -50 1200 0 1 0 N -P 2 0 1 0 -150 -1100 -50 -1100 N -P 2 0 1 0 -150 -1000 -50 -1000 N -P 2 0 1 0 -150 -900 -50 -900 N -P 2 0 1 0 -150 -800 -50 -800 N -P 2 0 1 0 -150 -700 -50 -700 N -P 2 0 1 0 -150 -600 -50 -600 N -P 2 0 1 0 -150 -500 -50 -500 N -P 2 0 1 0 -150 -400 -50 -400 N -P 2 0 1 0 -150 -300 -50 -300 N -P 2 0 1 0 -150 -200 -50 -200 N -P 2 0 1 0 -150 -100 -50 -100 N -P 2 0 1 0 -150 0 -50 0 N -P 2 0 1 0 -150 100 -50 100 N -P 2 0 1 0 -150 200 -50 200 N -P 2 0 1 0 -150 300 -50 300 N -P 2 0 1 0 -150 400 -50 400 N -P 2 0 1 0 -150 500 -50 500 N -P 2 0 1 0 -150 600 -50 600 N -P 2 0 1 0 -150 700 -50 700 N -P 2 0 1 0 -150 800 -50 800 N -P 2 0 1 0 -150 900 -50 900 N -P 2 0 1 0 -150 1000 -50 1000 N -P 2 0 1 0 -150 1100 -50 1100 N -P 2 0 1 0 50 -1100 150 -1100 N -P 2 0 1 0 50 -1000 150 -1000 N -P 2 0 1 0 50 -900 150 -900 N -P 2 0 1 0 50 -800 150 -800 N -P 2 0 1 0 50 -700 150 -700 N -P 2 0 1 0 50 -600 150 -600 N -P 2 0 1 0 50 -500 150 -500 N -P 2 0 1 0 50 -400 150 -400 N -P 2 0 1 0 50 -300 150 -300 N -P 2 0 1 0 50 -200 150 -200 N -P 2 0 1 0 50 -100 150 -100 N -P 2 0 1 0 50 0 150 0 N -P 2 0 1 0 50 100 150 100 N -P 2 0 1 0 50 200 150 200 N -P 2 0 1 0 50 300 150 300 N -P 2 0 1 0 50 400 150 400 N -P 2 0 1 0 50 500 150 500 N -P 2 0 1 0 50 600 150 600 N -P 2 0 1 0 50 700 150 700 N -P 2 0 1 0 50 800 150 800 N -P 2 0 1 0 50 900 150 900 N -P 2 0 1 0 50 1000 150 1000 N -P 2 0 1 0 50 1100 150 1100 N -X ~ 1 -150 1150 100 R 35 50 1 1 P -X ~ 2 150 1150 100 L 35 50 1 1 P -X ~ 3 -250 1100 100 R 35 50 1 1 P -X ~ 4 250 1100 100 L 35 50 1 1 P -X ~ 5 -150 1050 100 R 35 50 1 1 P -X ~ 6 150 1050 100 L 35 50 1 1 P -X ~ 7 -250 1000 100 R 35 50 1 1 P -X ~ 8 250 1000 100 L 35 50 1 1 P -X ~ 9 -150 950 100 R 35 50 1 1 P -X ~ 10 150 950 100 L 35 50 1 1 P -X ~ 20 250 700 100 L 35 50 1 1 P -X ~ 30 150 450 100 L 35 50 1 1 P -X ~ 40 250 200 100 L 35 50 1 1 P -X ~ 50 150 -50 100 L 35 50 1 1 P -X ~ 60 250 -300 100 L 35 50 1 1 P -X ~ 70 150 -550 100 L 35 50 1 1 P -X ~ 80 250 -800 100 L 35 50 1 1 P -X ~ 90 150 -1050 100 L 35 50 1 1 P -X ~ 11 -250 900 100 R 35 50 1 1 P -X ~ 21 -150 650 100 R 35 50 1 1 P -X ~ 31 -250 400 100 R 35 50 1 1 P -X ~ 41 -150 150 100 R 35 50 1 1 P -X ~ 51 -250 -100 100 R 35 50 1 1 P -X ~ 61 -150 -350 100 R 35 50 1 1 P -X ~ 71 -250 -600 100 R 35 50 1 1 P -X ~ 81 -150 -850 100 R 35 50 1 1 P -X ~ 91 -250 -1100 100 R 35 50 1 1 P -X ~ 12 250 900 100 L 35 50 1 1 P -X ~ 22 150 650 100 L 35 50 1 1 P -X ~ 32 250 400 100 L 35 50 1 1 P -X ~ 42 150 150 100 L 35 50 1 1 P -X ~ 52 250 -100 100 L 35 50 1 1 P -X ~ 62 150 -350 100 L 35 50 1 1 P -X ~ 72 250 -600 100 L 35 50 1 1 P -X ~ 82 150 -850 100 L 35 50 1 1 P -X ~ 92 250 -1100 100 L 35 50 1 1 P -X ~ 13 -150 850 100 R 35 50 1 1 P -X ~ 23 -250 600 100 R 35 50 1 1 P -X ~ 33 -150 350 100 R 35 50 1 1 P -X ~ 43 -250 100 100 R 35 50 1 1 P -X ~ 53 -150 -150 100 R 35 50 1 1 P -X ~ 63 -250 -400 100 R 35 50 1 1 P -X ~ 73 -150 -650 100 R 35 50 1 1 P -X ~ 83 -250 -900 100 R 35 50 1 1 P -X ~ 93 -150 -1150 100 R 35 50 1 1 P -X ~ 14 150 850 100 L 35 50 1 1 P -X ~ 24 250 600 100 L 35 50 1 1 P -X ~ 34 150 350 100 L 35 50 1 1 P -X ~ 44 250 100 100 L 35 50 1 1 P -X ~ 54 150 -150 100 L 35 50 1 1 P -X ~ 64 250 -400 100 L 35 50 1 1 P -X ~ 74 150 -650 100 L 35 50 1 1 P -X ~ 84 250 -900 100 L 35 50 1 1 P -X ~ 94 150 -1150 100 L 35 50 1 1 P -X ~ 15 -250 800 100 R 35 50 1 1 P -X ~ 25 -150 550 100 R 35 50 1 1 P -X ~ 35 -250 300 100 R 35 50 1 1 P -X ~ 45 -150 50 100 R 35 50 1 1 P -X ~ 55 -250 -200 100 R 35 50 1 1 P -X ~ 65 -150 -450 100 R 35 50 1 1 P -X ~ 75 -250 -700 100 R 35 50 1 1 P -X ~ 85 -150 -950 100 R 35 50 1 1 P -X ~ 16 250 800 100 L 35 50 1 1 P -X ~ 26 150 550 100 L 35 50 1 1 P -X ~ 36 250 300 100 L 35 50 1 1 P -X ~ 46 150 50 100 L 35 50 1 1 P -X ~ 56 250 -200 100 L 35 50 1 1 P -X ~ 66 150 -450 100 L 35 50 1 1 P -X ~ 76 250 -700 100 L 35 50 1 1 P -X ~ 86 150 -950 100 L 35 50 1 1 P -X ~ 17 -150 750 100 R 35 50 1 1 P -X ~ 27 -250 500 100 R 35 50 1 1 P -X ~ 37 -150 250 100 R 35 35 1 1 P -X ~ 47 -250 0 100 R 35 50 1 1 P -X ~ 57 -150 -250 100 R 35 50 1 1 P -X ~ 67 -250 -500 100 R 35 50 1 1 P -X ~ 77 -150 -750 100 R 35 50 1 1 P -X ~ 87 -250 -1000 100 R 35 50 1 1 P -X ~ 18 150 750 100 L 35 50 1 1 P -X ~ 28 250 500 100 L 35 50 1 1 P -X ~ 38 150 250 100 L 35 50 1 1 P -X ~ 48 250 0 100 L 35 50 1 1 P -X ~ 58 150 -250 100 L 35 50 1 1 P -X ~ 68 250 -500 100 L 35 50 1 1 P -X ~ 78 150 -750 100 L 35 50 1 1 P -X ~ 88 250 -1000 100 L 35 50 1 1 P -X ~ 19 -250 700 100 R 35 50 1 1 P -X ~ 29 -150 450 100 R 35 50 1 1 P -X ~ 39 -250 200 100 R 35 50 1 1 P -X ~ 49 -150 -50 100 R 35 50 1 1 P -X ~ 59 -250 -300 100 R 35 50 1 1 P -X ~ 69 -150 -550 100 R 35 50 1 1 P -X ~ 79 -250 -800 100 R 35 50 1 1 P -X ~ 89 -150 -1050 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_48x2 -# -DEF HEADER_48x2 J 0 0 Y Y 1 F N -F0 "J" 0 1300 60 H V C CNN -F1 "HEADER_48x2" 0 -1300 60 H V C CNN -F2 "" 0 250 60 H V C CNN -F3 "" 0 250 60 H V C CNN -DRAW -S 50 -1250 -50 1250 0 1 0 N -P 2 0 1 0 -150 -1150 -50 -1150 N -P 2 0 1 0 -150 -1050 -50 -1050 N -P 2 0 1 0 -150 -950 -50 -950 N -P 2 0 1 0 -150 -850 -50 -850 N -P 2 0 1 0 -150 -750 -50 -750 N -P 2 0 1 0 -150 -650 -50 -650 N -P 2 0 1 0 -150 -550 -50 -550 N -P 2 0 1 0 -150 -450 -50 -450 N -P 2 0 1 0 -150 -350 -50 -350 N -P 2 0 1 0 -150 -250 -50 -250 N -P 2 0 1 0 -150 -150 -50 -150 N -P 2 0 1 0 -150 -50 -50 -50 N -P 2 0 1 0 -150 50 -50 50 N -P 2 0 1 0 -150 150 -50 150 N -P 2 0 1 0 -150 250 -50 250 N -P 2 0 1 0 -150 350 -50 350 N -P 2 0 1 0 -150 450 -50 450 N -P 2 0 1 0 -150 550 -50 550 N -P 2 0 1 0 -150 650 -50 650 N -P 2 0 1 0 -150 750 -50 750 N -P 2 0 1 0 -150 850 -50 850 N -P 2 0 1 0 -150 950 -50 950 N -P 2 0 1 0 -150 1050 -50 1050 N -P 2 0 1 0 -150 1150 -50 1150 N -P 2 0 1 0 50 -1150 150 -1150 N -P 2 0 1 0 50 -1050 150 -1050 N -P 2 0 1 0 50 -950 150 -950 N -P 2 0 1 0 50 -850 150 -850 N -P 2 0 1 0 50 -750 150 -750 N -P 2 0 1 0 50 -650 150 -650 N -P 2 0 1 0 50 -550 150 -550 N -P 2 0 1 0 50 -450 150 -450 N -P 2 0 1 0 50 -350 150 -350 N -P 2 0 1 0 50 -250 150 -250 N -P 2 0 1 0 50 -150 150 -150 N -P 2 0 1 0 50 -50 150 -50 N -P 2 0 1 0 50 50 150 50 N -P 2 0 1 0 50 150 150 150 N -P 2 0 1 0 50 250 150 250 N -P 2 0 1 0 50 350 150 350 N -P 2 0 1 0 50 450 150 450 N -P 2 0 1 0 50 550 150 550 N -P 2 0 1 0 50 650 150 650 N -P 2 0 1 0 50 750 150 750 N -P 2 0 1 0 50 850 150 850 N -P 2 0 1 0 50 950 150 950 N -P 2 0 1 0 50 1050 150 1050 N -P 2 0 1 0 50 1150 150 1150 N -X ~ 1 -150 1200 100 R 35 50 1 1 P -X ~ 2 150 1200 100 L 35 50 1 1 P -X ~ 3 -250 1150 100 R 35 50 1 1 P -X ~ 4 250 1150 100 L 35 50 1 1 P -X ~ 5 -150 1100 100 R 35 50 1 1 P -X ~ 6 150 1100 100 L 35 50 1 1 P -X ~ 7 -250 1050 100 R 35 50 1 1 P -X ~ 8 250 1050 100 L 35 50 1 1 P -X ~ 9 -150 1000 100 R 35 50 1 1 P -X ~ 10 150 1000 100 L 35 50 1 1 P -X ~ 20 250 750 100 L 35 50 1 1 P -X ~ 30 150 500 100 L 35 50 1 1 P -X ~ 40 250 250 100 L 35 50 1 1 P -X ~ 50 150 0 100 L 35 50 1 1 P -X ~ 60 250 -250 100 L 35 50 1 1 P -X ~ 70 150 -500 100 L 35 50 1 1 P -X ~ 80 250 -750 100 L 35 50 1 1 P -X ~ 90 150 -1000 100 L 35 50 1 1 P -X ~ 11 -250 950 100 R 35 50 1 1 P -X ~ 21 -150 700 100 R 35 50 1 1 P -X ~ 31 -250 450 100 R 35 50 1 1 P -X ~ 41 -150 200 100 R 35 50 1 1 P -X ~ 51 -250 -50 100 R 35 50 1 1 P -X ~ 61 -150 -300 100 R 35 50 1 1 P -X ~ 71 -250 -550 100 R 35 50 1 1 P -X ~ 81 -150 -800 100 R 35 50 1 1 P -X ~ 91 -250 -1050 100 R 35 50 1 1 P -X ~ 12 250 950 100 L 35 50 1 1 P -X ~ 22 150 700 100 L 35 50 1 1 P -X ~ 32 250 450 100 L 35 50 1 1 P -X ~ 42 150 200 100 L 35 50 1 1 P -X ~ 52 250 -50 100 L 35 50 1 1 P -X ~ 62 150 -300 100 L 35 50 1 1 P -X ~ 72 250 -550 100 L 35 50 1 1 P -X ~ 82 150 -800 100 L 35 50 1 1 P -X ~ 92 250 -1050 100 L 35 50 1 1 P -X ~ 13 -150 900 100 R 35 50 1 1 P -X ~ 23 -250 650 100 R 35 50 1 1 P -X ~ 33 -150 400 100 R 35 50 1 1 P -X ~ 43 -250 150 100 R 35 50 1 1 P -X ~ 53 -150 -100 100 R 35 50 1 1 P -X ~ 63 -250 -350 100 R 35 50 1 1 P -X ~ 73 -150 -600 100 R 35 50 1 1 P -X ~ 83 -250 -850 100 R 35 50 1 1 P -X ~ 93 -150 -1100 100 R 35 50 1 1 P -X ~ 14 150 900 100 L 35 50 1 1 P -X ~ 24 250 650 100 L 35 50 1 1 P -X ~ 34 150 400 100 L 35 50 1 1 P -X ~ 44 250 150 100 L 35 50 1 1 P -X ~ 54 150 -100 100 L 35 50 1 1 P -X ~ 64 250 -350 100 L 35 50 1 1 P -X ~ 74 150 -600 100 L 35 50 1 1 P -X ~ 84 250 -850 100 L 35 50 1 1 P -X ~ 94 150 -1100 100 L 35 50 1 1 P -X ~ 15 -250 850 100 R 35 50 1 1 P -X ~ 25 -150 600 100 R 35 50 1 1 P -X ~ 35 -250 350 100 R 35 50 1 1 P -X ~ 45 -150 100 100 R 35 50 1 1 P -X ~ 55 -250 -150 100 R 35 50 1 1 P -X ~ 65 -150 -400 100 R 35 50 1 1 P -X ~ 75 -250 -650 100 R 35 50 1 1 P -X ~ 85 -150 -900 100 R 35 50 1 1 P -X ~ 95 -250 -1150 100 R 35 50 1 1 P -X ~ 16 250 850 100 L 35 50 1 1 P -X ~ 26 150 600 100 L 35 50 1 1 P -X ~ 36 250 350 100 L 35 50 1 1 P -X ~ 46 150 100 100 L 35 50 1 1 P -X ~ 56 250 -150 100 L 35 50 1 1 P -X ~ 66 150 -400 100 L 35 50 1 1 P -X ~ 76 250 -650 100 L 35 50 1 1 P -X ~ 86 150 -900 100 L 35 50 1 1 P -X ~ 96 250 -1150 100 L 35 50 1 1 P -X ~ 17 -150 800 100 R 35 50 1 1 P -X ~ 27 -250 550 100 R 35 50 1 1 P -X ~ 37 -150 300 100 R 35 35 1 1 P -X ~ 47 -250 50 100 R 35 50 1 1 P -X ~ 57 -150 -200 100 R 35 50 1 1 P -X ~ 67 -250 -450 100 R 35 50 1 1 P -X ~ 77 -150 -700 100 R 35 50 1 1 P -X ~ 87 -250 -950 100 R 35 50 1 1 P -X ~ 18 150 800 100 L 35 50 1 1 P -X ~ 28 250 550 100 L 35 50 1 1 P -X ~ 38 150 300 100 L 35 50 1 1 P -X ~ 48 250 50 100 L 35 50 1 1 P -X ~ 58 150 -200 100 L 35 50 1 1 P -X ~ 68 250 -450 100 L 35 50 1 1 P -X ~ 78 150 -700 100 L 35 50 1 1 P -X ~ 88 250 -950 100 L 35 50 1 1 P -X ~ 19 -250 750 100 R 35 50 1 1 P -X ~ 29 -150 500 100 R 35 50 1 1 P -X ~ 39 -250 250 100 R 35 50 1 1 P -X ~ 49 -150 0 100 R 35 50 1 1 P -X ~ 59 -250 -250 100 R 35 50 1 1 P -X ~ 69 -150 -500 100 R 35 50 1 1 P -X ~ 79 -250 -750 100 R 35 50 1 1 P -X ~ 89 -150 -1000 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_49x2 -# -DEF HEADER_49x2 J 0 0 Y Y 1 F N -F0 "J" 0 1300 60 H V C CNN -F1 "HEADER_49x2" 0 -1300 60 H V C CNN -F2 "" 0 250 60 H V C CNN -F3 "" 0 250 60 H V C CNN -DRAW -S 50 -1250 -50 1250 0 1 0 N -P 2 0 1 0 -150 -1150 -50 -1150 N -P 2 0 1 0 -150 -1050 -50 -1050 N -P 2 0 1 0 -150 -950 -50 -950 N -P 2 0 1 0 -150 -850 -50 -850 N -P 2 0 1 0 -150 -750 -50 -750 N -P 2 0 1 0 -150 -650 -50 -650 N -P 2 0 1 0 -150 -550 -50 -550 N -P 2 0 1 0 -150 -450 -50 -450 N -P 2 0 1 0 -150 -350 -50 -350 N -P 2 0 1 0 -150 -250 -50 -250 N -P 2 0 1 0 -150 -150 -50 -150 N -P 2 0 1 0 -150 -50 -50 -50 N -P 2 0 1 0 -150 50 -50 50 N -P 2 0 1 0 -150 150 -50 150 N -P 2 0 1 0 -150 250 -50 250 N -P 2 0 1 0 -150 350 -50 350 N -P 2 0 1 0 -150 450 -50 450 N -P 2 0 1 0 -150 550 -50 550 N -P 2 0 1 0 -150 650 -50 650 N -P 2 0 1 0 -150 750 -50 750 N -P 2 0 1 0 -150 850 -50 850 N -P 2 0 1 0 -150 950 -50 950 N -P 2 0 1 0 -150 1050 -50 1050 N -P 2 0 1 0 -150 1150 -50 1150 N -P 2 0 1 0 50 -1150 150 -1150 N -P 2 0 1 0 50 -1050 150 -1050 N -P 2 0 1 0 50 -950 150 -950 N -P 2 0 1 0 50 -850 150 -850 N -P 2 0 1 0 50 -750 150 -750 N -P 2 0 1 0 50 -650 150 -650 N -P 2 0 1 0 50 -550 150 -550 N -P 2 0 1 0 50 -450 150 -450 N -P 2 0 1 0 50 -350 150 -350 N -P 2 0 1 0 50 -250 150 -250 N -P 2 0 1 0 50 -150 150 -150 N -P 2 0 1 0 50 -50 150 -50 N -P 2 0 1 0 50 50 150 50 N -P 2 0 1 0 50 150 150 150 N -P 2 0 1 0 50 250 150 250 N -P 2 0 1 0 50 350 150 350 N -P 2 0 1 0 50 450 150 450 N -P 2 0 1 0 50 550 150 550 N -P 2 0 1 0 50 650 150 650 N -P 2 0 1 0 50 750 150 750 N -P 2 0 1 0 50 850 150 850 N -P 2 0 1 0 50 950 150 950 N -P 2 0 1 0 50 1050 150 1050 N -P 2 0 1 0 50 1150 150 1150 N -X ~ 1 -150 1200 100 R 35 50 1 1 P -X ~ 2 150 1200 100 L 35 50 1 1 P -X ~ 3 -250 1150 100 R 35 50 1 1 P -X ~ 4 250 1150 100 L 35 50 1 1 P -X ~ 5 -150 1100 100 R 35 50 1 1 P -X ~ 6 150 1100 100 L 35 50 1 1 P -X ~ 7 -250 1050 100 R 35 50 1 1 P -X ~ 8 250 1050 100 L 35 50 1 1 P -X ~ 9 -150 1000 100 R 35 50 1 1 P -X ~ 10 150 1000 100 L 35 50 1 1 P -X ~ 20 250 750 100 L 35 50 1 1 P -X ~ 30 150 500 100 L 35 50 1 1 P -X ~ 40 250 250 100 L 35 50 1 1 P -X ~ 50 150 0 100 L 35 50 1 1 P -X ~ 60 250 -250 100 L 35 50 1 1 P -X ~ 70 150 -500 100 L 35 50 1 1 P -X ~ 80 250 -750 100 L 35 50 1 1 P -X ~ 90 150 -1000 100 L 35 50 1 1 P -X ~ 11 -250 950 100 R 35 50 1 1 P -X ~ 21 -150 700 100 R 35 50 1 1 P -X ~ 31 -250 450 100 R 35 50 1 1 P -X ~ 41 -150 200 100 R 35 50 1 1 P -X ~ 51 -250 -50 100 R 35 50 1 1 P -X ~ 61 -150 -300 100 R 35 50 1 1 P -X ~ 71 -250 -550 100 R 35 50 1 1 P -X ~ 81 -150 -800 100 R 35 50 1 1 P -X ~ 91 -250 -1050 100 R 35 50 1 1 P -X ~ 12 250 950 100 L 35 50 1 1 P -X ~ 22 150 700 100 L 35 50 1 1 P -X ~ 32 250 450 100 L 35 50 1 1 P -X ~ 42 150 200 100 L 35 50 1 1 P -X ~ 52 250 -50 100 L 35 50 1 1 P -X ~ 62 150 -300 100 L 35 50 1 1 P -X ~ 72 250 -550 100 L 35 50 1 1 P -X ~ 82 150 -800 100 L 35 50 1 1 P -X ~ 92 250 -1050 100 L 35 50 1 1 P -X ~ 13 -150 900 100 R 35 50 1 1 P -X ~ 23 -250 650 100 R 35 50 1 1 P -X ~ 33 -150 400 100 R 35 50 1 1 P -X ~ 43 -250 150 100 R 35 50 1 1 P -X ~ 53 -150 -100 100 R 35 50 1 1 P -X ~ 63 -250 -350 100 R 35 50 1 1 P -X ~ 73 -150 -600 100 R 35 50 1 1 P -X ~ 83 -250 -850 100 R 35 50 1 1 P -X ~ 93 -150 -1100 100 R 35 50 1 1 P -X ~ 14 150 900 100 L 35 50 1 1 P -X ~ 24 250 650 100 L 35 50 1 1 P -X ~ 34 150 400 100 L 35 50 1 1 P -X ~ 44 250 150 100 L 35 50 1 1 P -X ~ 54 150 -100 100 L 35 50 1 1 P -X ~ 64 250 -350 100 L 35 50 1 1 P -X ~ 74 150 -600 100 L 35 50 1 1 P -X ~ 84 250 -850 100 L 35 50 1 1 P -X ~ 94 150 -1100 100 L 35 50 1 1 P -X ~ 15 -250 850 100 R 35 50 1 1 P -X ~ 25 -150 600 100 R 35 50 1 1 P -X ~ 35 -250 350 100 R 35 50 1 1 P -X ~ 45 -150 100 100 R 35 50 1 1 P -X ~ 55 -250 -150 100 R 35 50 1 1 P -X ~ 65 -150 -400 100 R 35 50 1 1 P -X ~ 75 -250 -650 100 R 35 50 1 1 P -X ~ 85 -150 -900 100 R 35 50 1 1 P -X ~ 95 -250 -1150 100 R 35 50 1 1 P -X ~ 16 250 850 100 L 35 50 1 1 P -X ~ 26 150 600 100 L 35 50 1 1 P -X ~ 36 250 350 100 L 35 50 1 1 P -X ~ 46 150 100 100 L 35 50 1 1 P -X ~ 56 250 -150 100 L 35 50 1 1 P -X ~ 66 150 -400 100 L 35 50 1 1 P -X ~ 76 250 -650 100 L 35 50 1 1 P -X ~ 86 150 -900 100 L 35 50 1 1 P -X ~ 96 250 -1150 100 L 35 50 1 1 P -X ~ 17 -150 800 100 R 35 50 1 1 P -X ~ 27 -250 550 100 R 35 50 1 1 P -X ~ 37 -150 300 100 R 35 35 1 1 P -X ~ 47 -250 50 100 R 35 50 1 1 P -X ~ 57 -150 -200 100 R 35 50 1 1 P -X ~ 67 -250 -450 100 R 35 50 1 1 P -X ~ 77 -150 -700 100 R 35 50 1 1 P -X ~ 87 -250 -950 100 R 35 50 1 1 P -X ~ 97 -150 -1200 100 R 35 50 1 1 P -X ~ 18 150 800 100 L 35 50 1 1 P -X ~ 28 250 550 100 L 35 50 1 1 P -X ~ 38 150 300 100 L 35 50 1 1 P -X ~ 48 250 50 100 L 35 50 1 1 P -X ~ 58 150 -200 100 L 35 50 1 1 P -X ~ 68 250 -450 100 L 35 50 1 1 P -X ~ 78 150 -700 100 L 35 50 1 1 P -X ~ 88 250 -950 100 L 35 50 1 1 P -X ~ 98 150 -1200 100 L 35 50 1 1 P -X ~ 19 -250 750 100 R 35 50 1 1 P -X ~ 29 -150 500 100 R 35 50 1 1 P -X ~ 39 -250 250 100 R 35 50 1 1 P -X ~ 49 -150 0 100 R 35 50 1 1 P -X ~ 59 -250 -250 100 R 35 50 1 1 P -X ~ 69 -150 -500 100 R 35 50 1 1 P -X ~ 79 -250 -750 100 R 35 50 1 1 P -X ~ 89 -150 -1000 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_4x2 -# -DEF HEADER_4x2 J 0 0 Y Y 1 F N -F0 "J" 0 250 60 H V C CNN -F1 "HEADER_4x2" 0 -250 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 50 200 -50 -200 0 1 0 N -X ~ 1 -150 150 100 R 35 50 1 1 P -X ~ 2 150 150 100 L 35 50 1 1 P -X ~ 3 -150 50 100 R 35 50 1 1 P -X ~ 4 150 50 100 L 35 50 1 1 P -X ~ 5 -150 -50 100 R 35 50 1 1 P -X ~ 6 150 -50 100 L 35 50 1 1 P -X ~ 7 -150 -150 100 R 35 50 1 1 P -X ~ 8 150 -150 100 L 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_5 -# -DEF HEADER_5 J 0 0 Y Y 1 F N -F0 "J" 0 300 60 H V C CNN -F1 "HEADER_5" 0 -300 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 100 250 0 -250 0 1 0 N -X ~ 1 -100 200 100 R 35 50 1 1 P -X ~ 2 -100 100 100 R 35 50 1 1 P -X ~ 3 -100 0 100 R 35 50 1 1 P -X ~ 4 -100 -100 100 R 35 50 1 1 P -X ~ 5 -100 -200 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_50x2 -# -DEF HEADER_50x2 J 0 0 Y Y 1 F N -F0 "J" 0 1350 60 H V C CNN -F1 "HEADER_50x2" 0 -1350 60 H V C CNN -F2 "" 0 300 60 H V C CNN -F3 "" 0 300 60 H V C CNN -DRAW -S -50 1300 50 -1300 0 1 0 N -P 2 0 1 0 -150 -1200 -50 -1200 N -P 2 0 1 0 -150 -1100 -50 -1100 N -P 2 0 1 0 -150 -1000 -50 -1000 N -P 2 0 1 0 -150 -900 -50 -900 N -P 2 0 1 0 -150 -800 -50 -800 N -P 2 0 1 0 -150 -700 -50 -700 N -P 2 0 1 0 -150 -600 -50 -600 N -P 2 0 1 0 -150 -500 -50 -500 N -P 2 0 1 0 -150 -400 -50 -400 N -P 2 0 1 0 -150 -300 -50 -300 N -P 2 0 1 0 -150 -200 -50 -200 N -P 2 0 1 0 -150 -100 -50 -100 N -P 2 0 1 0 -150 0 -50 0 N -P 2 0 1 0 -150 100 -50 100 N -P 2 0 1 0 -150 200 -50 200 N -P 2 0 1 0 -150 300 -50 300 N -P 2 0 1 0 -150 400 -50 400 N -P 2 0 1 0 -150 500 -50 500 N -P 2 0 1 0 -150 600 -50 600 N -P 2 0 1 0 -150 700 -50 700 N -P 2 0 1 0 -150 800 -50 800 N -P 2 0 1 0 -150 900 -50 900 N -P 2 0 1 0 -150 1000 -50 1000 N -P 2 0 1 0 -150 1100 -50 1100 N -P 2 0 1 0 -150 1200 -50 1200 N -P 2 0 1 0 50 -1200 150 -1200 N -P 2 0 1 0 50 -1100 150 -1100 N -P 2 0 1 0 50 -1000 150 -1000 N -P 2 0 1 0 50 -900 150 -900 N -P 2 0 1 0 50 -800 150 -800 N -P 2 0 1 0 50 -700 150 -700 N -P 2 0 1 0 50 -600 150 -600 N -P 2 0 1 0 50 -500 150 -500 N -P 2 0 1 0 50 -400 150 -400 N -P 2 0 1 0 50 -300 150 -300 N -P 2 0 1 0 50 -200 150 -200 N -P 2 0 1 0 50 -100 150 -100 N -P 2 0 1 0 50 0 150 0 N -P 2 0 1 0 50 100 150 100 N -P 2 0 1 0 50 200 150 200 N -P 2 0 1 0 50 300 150 300 N -P 2 0 1 0 50 400 150 400 N -P 2 0 1 0 50 500 150 500 N -P 2 0 1 0 50 600 150 600 N -P 2 0 1 0 50 700 150 700 N -P 2 0 1 0 50 800 150 800 N -P 2 0 1 0 50 900 150 900 N -P 2 0 1 0 50 1000 150 1000 N -P 2 0 1 0 50 1100 150 1100 N -P 2 0 1 0 50 1200 150 1200 N -X ~ 1 -150 1250 100 R 35 50 1 1 P -X ~ 2 150 1250 100 L 35 50 1 1 P -X ~ 3 -250 1200 100 R 35 50 1 1 P -X ~ 4 250 1200 100 L 35 50 1 1 P -X ~ 5 -150 1150 100 R 35 50 1 1 P -X ~ 6 150 1150 100 L 35 50 1 1 P -X ~ 7 -250 1100 100 R 35 50 1 1 P -X ~ 8 250 1100 100 L 35 50 1 1 P -X ~ 9 -150 1050 100 R 35 50 1 1 P -X ~ 10 150 1050 100 L 35 50 1 1 P -X ~ 20 250 800 100 L 35 50 1 1 P -X ~ 30 150 550 100 L 35 50 1 1 P -X ~ 40 250 300 100 L 35 50 1 1 P -X ~ 50 150 50 100 L 35 50 1 1 P -X ~ 60 250 -200 100 L 35 50 1 1 P -X ~ 70 150 -450 100 L 35 50 1 1 P -X ~ 80 250 -700 100 L 35 50 1 1 P -X ~ 90 150 -950 100 L 35 50 1 1 P -X ~ 11 -250 1000 100 R 35 50 1 1 P -X ~ 21 -150 750 100 R 35 50 1 1 P -X ~ 31 -250 500 100 R 35 50 1 1 P -X ~ 41 -150 250 100 R 35 50 1 1 P -X ~ 51 -250 0 100 R 35 50 1 1 P -X ~ 61 -150 -250 100 R 35 50 1 1 P -X ~ 71 -250 -500 100 R 35 50 1 1 P -X ~ 81 -150 -750 100 R 35 50 1 1 P -X ~ 91 -250 -1000 100 R 35 50 1 1 P -X ~ 12 250 1000 100 L 35 50 1 1 P -X ~ 22 150 750 100 L 35 50 1 1 P -X ~ 32 250 500 100 L 35 50 1 1 P -X ~ 42 150 250 100 L 35 50 1 1 P -X ~ 52 250 0 100 L 35 50 1 1 P -X ~ 62 150 -250 100 L 35 50 1 1 P -X ~ 72 250 -500 100 L 35 50 1 1 P -X ~ 82 150 -750 100 L 35 50 1 1 P -X ~ 92 250 -1000 100 L 35 50 1 1 P -X ~ 13 -150 950 100 R 35 50 1 1 P -X ~ 23 -250 700 100 R 35 50 1 1 P -X ~ 33 -150 450 100 R 35 50 1 1 P -X ~ 43 -250 200 100 R 35 50 1 1 P -X ~ 53 -150 -50 100 R 35 50 1 1 P -X ~ 63 -250 -300 100 R 35 50 1 1 P -X ~ 73 -150 -550 100 R 35 50 1 1 P -X ~ 83 -250 -800 100 R 35 50 1 1 P -X ~ 93 -150 -1050 100 R 35 50 1 1 P -X ~ 14 150 950 100 L 35 50 1 1 P -X ~ 24 250 700 100 L 35 50 1 1 P -X ~ 34 150 450 100 L 35 50 1 1 P -X ~ 44 250 200 100 L 35 50 1 1 P -X ~ 54 150 -50 100 L 35 50 1 1 P -X ~ 64 250 -300 100 L 35 50 1 1 P -X ~ 74 150 -550 100 L 35 50 1 1 P -X ~ 84 250 -800 100 L 35 50 1 1 P -X ~ 94 150 -1050 100 L 35 50 1 1 P -X ~ 15 -250 900 100 R 35 50 1 1 P -X ~ 25 -150 650 100 R 35 50 1 1 P -X ~ 35 -250 400 100 R 35 50 1 1 P -X ~ 45 -150 150 100 R 35 50 1 1 P -X ~ 55 -250 -100 100 R 35 50 1 1 P -X ~ 65 -150 -350 100 R 35 50 1 1 P -X ~ 75 -250 -600 100 R 35 50 1 1 P -X ~ 85 -150 -850 100 R 35 50 1 1 P -X ~ 95 -250 -1100 100 R 35 50 1 1 P -X ~ 16 250 900 100 L 35 50 1 1 P -X ~ 26 150 650 100 L 35 50 1 1 P -X ~ 36 250 400 100 L 35 50 1 1 P -X ~ 46 150 150 100 L 35 50 1 1 P -X ~ 56 250 -100 100 L 35 50 1 1 P -X ~ 66 150 -350 100 L 35 50 1 1 P -X ~ 76 250 -600 100 L 35 50 1 1 P -X ~ 86 150 -850 100 L 35 50 1 1 P -X ~ 96 250 -1100 100 L 35 50 1 1 P -X ~ 17 -150 850 100 R 35 50 1 1 P -X ~ 27 -250 600 100 R 35 50 1 1 P -X ~ 37 -150 350 100 R 35 35 1 1 P -X ~ 47 -250 100 100 R 35 50 1 1 P -X ~ 57 -150 -150 100 R 35 50 1 1 P -X ~ 67 -250 -400 100 R 35 50 1 1 P -X ~ 77 -150 -650 100 R 35 50 1 1 P -X ~ 87 -250 -900 100 R 35 50 1 1 P -X ~ 97 -150 -1150 100 R 35 50 1 1 P -X ~ 18 150 850 100 L 35 50 1 1 P -X ~ 28 250 600 100 L 35 50 1 1 P -X ~ 38 150 350 100 L 35 50 1 1 P -X ~ 48 250 100 100 L 35 50 1 1 P -X ~ 58 150 -150 100 L 35 50 1 1 P -X ~ 68 250 -400 100 L 35 50 1 1 P -X ~ 78 150 -650 100 L 35 50 1 1 P -X ~ 88 250 -900 100 L 35 50 1 1 P -X ~ 98 150 -1150 100 L 35 50 1 1 P -X ~ 19 -250 800 100 R 35 50 1 1 P -X ~ 29 -150 550 100 R 35 50 1 1 P -X ~ 39 -250 300 100 R 35 50 1 1 P -X ~ 49 -150 50 100 R 35 50 1 1 P -X ~ 59 -250 -200 100 R 35 50 1 1 P -X ~ 69 -150 -450 100 R 35 50 1 1 P -X ~ 79 -250 -700 100 R 35 50 1 1 P -X ~ 89 -150 -950 100 R 35 50 1 1 P -X ~ 99 -250 -1200 100 R 35 50 1 1 P -X ~ 100 250 -1200 100 L 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_5x2 -# -DEF HEADER_5x2 J 0 0 Y Y 1 F N -F0 "J" 0 300 60 H V C CNN -F1 "HEADER_5x2" 0 -300 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 50 250 -50 -250 0 1 0 N -X ~ 1 -150 200 100 R 35 50 1 1 P -X ~ 2 150 200 100 L 35 50 1 1 P -X ~ 3 -150 100 100 R 35 50 1 1 P -X ~ 4 150 100 100 L 35 50 1 1 P -X ~ 5 -150 0 100 R 35 50 1 1 P -X ~ 6 150 0 100 L 35 50 1 1 P -X ~ 7 -150 -100 100 R 35 50 1 1 P -X ~ 8 150 -100 100 L 35 50 1 1 P -X ~ 9 -150 -200 100 R 35 50 1 1 P -X ~ 10 150 -200 100 L 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_6 -# -DEF HEADER_6 J 0 0 Y Y 1 F N -F0 "J" 0 350 60 H V C CNN -F1 "HEADER_6" 0 -350 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 100 300 0 -300 0 1 0 N -X ~ 1 -100 250 100 R 35 50 1 1 P -X ~ 2 -100 150 100 R 35 50 1 1 P -X ~ 3 -100 50 100 R 35 50 1 1 P -X ~ 4 -100 -50 100 R 35 50 1 1 P -X ~ 5 -100 -150 100 R 35 50 1 1 P -X ~ 6 -100 -250 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_6x2 -# -DEF HEADER_6x2 J 0 0 Y Y 1 F N -F0 "J" 0 350 60 H V C CNN -F1 "HEADER_6x2" 0 -350 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 50 300 -50 -300 0 1 0 N -X ~ 1 -150 250 100 R 35 50 1 1 P -X ~ 2 150 250 100 L 35 50 1 1 P -X ~ 3 -150 150 100 R 35 50 1 1 P -X ~ 4 150 150 100 L 35 50 1 1 P -X ~ 5 -150 50 100 R 35 50 1 1 P -X ~ 6 150 50 100 L 35 50 1 1 P -X ~ 7 -150 -50 100 R 35 50 1 1 P -X ~ 8 150 -50 100 L 35 50 1 1 P -X ~ 9 -150 -150 100 R 35 50 1 1 P -X ~ 10 150 -150 100 L 35 50 1 1 P -X ~ 11 -150 -250 100 R 35 50 1 1 P -X ~ 12 150 -250 100 L 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_7 -# -DEF HEADER_7 J 0 0 Y Y 1 F N -F0 "J" 0 400 60 H V C CNN -F1 "HEADER_7" 0 -400 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 100 350 0 -350 0 1 0 N -X ~ 1 -100 300 100 R 35 50 1 1 P -X ~ 2 -100 200 100 R 35 50 1 1 P -X ~ 3 -100 100 100 R 35 50 1 1 P -X ~ 4 -100 0 100 R 35 50 1 1 P -X ~ 5 -100 -100 100 R 35 50 1 1 P -X ~ 6 -100 -200 100 R 35 50 1 1 P -X ~ 7 -100 -300 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_7x2 -# -DEF HEADER_7x2 J 0 0 Y Y 1 F N -F0 "J" 0 400 60 H V C CNN -F1 "HEADER_7x2" 0 -400 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 50 350 -50 -350 0 1 0 N -X ~ 1 -150 300 100 R 35 50 1 1 P -X ~ 2 150 300 100 L 35 50 1 1 P -X ~ 3 -150 200 100 R 35 50 1 1 P -X ~ 4 150 200 100 L 35 50 1 1 P -X ~ 5 -150 100 100 R 35 50 1 1 P -X ~ 6 150 100 100 L 35 50 1 1 P -X ~ 7 -150 0 100 R 35 50 1 1 P -X ~ 8 150 0 100 L 35 50 1 1 P -X ~ 9 -150 -100 100 R 35 50 1 1 P -X ~ 10 150 -100 100 L 35 50 1 1 P -X ~ 11 -150 -200 100 R 35 50 1 1 P -X ~ 12 150 -200 100 L 35 50 1 1 P -X ~ 13 -150 -300 100 R 35 50 1 1 P -X ~ 14 150 -300 100 L 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_8 -# -DEF HEADER_8 J 0 0 Y Y 1 F N -F0 "J" 0 450 60 H V C CNN -F1 "HEADER_8" 0 -450 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 100 400 0 -400 0 1 0 N -X ~ 1 -100 350 100 R 35 50 1 1 P -X ~ 2 -100 250 100 R 35 50 1 1 P -X ~ 3 -100 150 100 R 35 50 1 1 P -X ~ 4 -100 50 100 R 35 50 1 1 P -X ~ 5 -100 -50 100 R 35 50 1 1 P -X ~ 6 -100 -150 100 R 35 50 1 1 P -X ~ 7 -100 -250 100 R 35 50 1 1 P -X ~ 8 -100 -350 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_8x2 -# -DEF HEADER_8x2 J 0 0 Y Y 1 F N -F0 "J" 0 450 60 H V C CNN -F1 "HEADER_8x2" 0 -450 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 50 400 -50 -400 0 1 0 N -X ~ 1 -150 350 100 R 35 50 1 1 P -X ~ 2 150 350 100 L 35 50 1 1 P -X ~ 3 -150 250 100 R 35 50 1 1 P -X ~ 4 150 250 100 L 35 50 1 1 P -X ~ 5 -150 150 100 R 35 50 1 1 P -X ~ 6 150 150 100 L 35 50 1 1 P -X ~ 7 -150 50 100 R 35 50 1 1 P -X ~ 8 150 50 100 L 35 50 1 1 P -X ~ 9 -150 -50 100 R 35 50 1 1 P -X ~ 10 150 -50 100 L 35 50 1 1 P -X ~ 11 -150 -150 100 R 35 50 1 1 P -X ~ 12 150 -150 100 L 35 50 1 1 P -X ~ 13 -150 -250 100 R 35 50 1 1 P -X ~ 14 150 -250 100 L 35 50 1 1 P -X ~ 15 -150 -350 100 R 35 50 1 1 P -X ~ 16 150 -350 100 L 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_9 -# -DEF HEADER_9 J 0 0 Y Y 1 F N -F0 "J" 0 500 60 H V C CNN -F1 "HEADER_9" 0 -500 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 100 450 0 -450 0 1 0 N -X ~ 1 -100 400 100 R 35 50 1 1 P -X ~ 2 -100 300 100 R 35 50 1 1 P -X ~ 3 -100 200 100 R 35 50 1 1 P -X ~ 4 -100 100 100 R 35 50 1 1 P -X ~ 5 -100 0 100 R 35 50 1 1 P -X ~ 6 -100 -100 100 R 35 50 1 1 P -X ~ 7 -100 -200 100 R 35 50 1 1 P -X ~ 8 -100 -300 100 R 35 50 1 1 P -X ~ 9 -100 -400 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -# HEADER_9x2 -# -DEF HEADER_9x2 J 0 0 Y Y 1 F N -F0 "J" 0 500 60 H V C CNN -F1 "HEADER_9x2" 0 -500 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 50 450 -50 -450 0 1 0 N -X ~ 1 -150 400 100 R 35 50 1 1 P -X ~ 2 150 400 100 L 35 50 1 1 P -X ~ 3 -150 300 100 R 35 50 1 1 P -X ~ 4 150 300 100 L 35 50 1 1 P -X ~ 5 -150 200 100 R 35 50 1 1 P -X ~ 6 150 200 100 L 35 50 1 1 P -X ~ 7 -150 100 100 R 35 50 1 1 P -X ~ 8 150 100 100 L 35 50 1 1 P -X ~ 9 -150 0 100 R 35 50 1 1 P -X ~ 10 150 0 100 L 35 50 1 1 P -X ~ 11 -150 -100 100 R 35 50 1 1 P -X ~ 12 150 -100 100 L 35 50 1 1 P -X ~ 13 -150 -200 100 R 35 50 1 1 P -X ~ 14 150 -200 100 L 35 50 1 1 P -X ~ 15 -150 -300 100 R 35 50 1 1 P -X ~ 16 150 -300 100 L 35 50 1 1 P -X ~ 17 -150 -400 100 R 35 50 1 1 P -X ~ 18 150 -400 100 L 35 50 1 1 P -ENDDRAW -ENDDEF -# -# Jack_3.5mm_3pin -# -DEF Jack_3.5mm_3pin J 0 0 Y Y 1 F N -F0 "J" 0 250 60 H V C CNN -F1 "Jack_3.5mm_3pin" 0 -250 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -A 42 -86 38 -1371 1739 0 1 0 N 70 -60 80 -90 -A 58 -86 29 -1147 -120 0 1 0 N 70 -60 30 -80 -S 100 75 150 -75 0 1 0 N -P 3 0 1 0 -50 150 125 150 125 75 N -P 3 0 1 0 30 -80 10 -150 -50 -150 N -P 4 0 1 0 -50 50 -25 50 0 25 25 50 N -X S 1 -150 150 100 R 35 27 1 1 P -X T 2 -150 50 100 R 35 27 1 1 P -X R 3 -150 -150 100 R 35 27 1 1 P -ENDDRAW -ENDDEF -# -# Jack_3.5mm_4pin -# -DEF Jack_3.5mm_4pin J 0 0 Y Y 1 F N -F0 "J" 0 250 60 H V C CNN -F1 "Jack_3.5mm_4pin" 0 -250 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -A 42 -86 38 -1371 1739 0 1 0 N 70 -60 80 -90 -A 58 -86 29 -1147 -120 0 1 0 N 70 -60 30 -80 -S 100 75 150 -75 0 1 0 N -P 2 0 1 0 -50 -50 -50 50 N -P 3 0 1 0 -50 150 125 150 125 75 N -P 3 0 1 0 30 -80 10 -150 -50 -150 N -P 4 0 1 0 -50 50 -65 25 -35 25 -50 50 F -P 4 0 1 0 -50 50 -25 50 0 25 25 50 N -X S 1 -150 150 100 R 35 27 1 1 P -X TS 2 -150 -50 100 R 35 27 1 1 P -X T 3 -150 50 100 R 35 27 1 1 P -X R 4 -150 -150 100 R 35 27 1 1 P -ENDDRAW -ENDDEF -# -# Jack_3.5mm_5pin -# -DEF Jack_3.5mm_5pin J 0 0 Y Y 1 F N -F0 "J" 0 250 60 H V C CNN -F1 "Jack_3.5mm_5pin" 0 -300 60 H V C CNN -F2 "" 0 50 60 H V C CNN -F3 "" 0 50 60 H V C CNN -DRAW -A 42 -36 38 -1371 1739 0 1 0 N 70 -10 80 -40 -A 58 -36 29 -1147 -120 0 1 0 N 70 -10 30 -30 -S 100 75 150 -75 0 1 0 N -P 2 0 1 0 -50 -200 -50 -100 N -P 2 0 1 0 -50 0 -50 100 N -P 3 0 1 0 -50 200 125 200 125 75 N -P 3 0 1 0 30 -30 10 -100 -50 -100 N -P 4 0 1 0 -50 -100 -65 -125 -35 -125 -50 -100 F -P 4 0 1 0 -50 100 -65 75 -35 75 -50 100 F -P 4 0 1 0 -50 100 -25 100 0 75 25 100 N -X S 1 -150 200 100 R 35 27 1 1 P -X T 2 -150 100 100 R 35 27 1 1 P -X R 3 -150 -100 100 R 35 27 1 1 P -X TS 4 -150 0 100 R 35 27 1 1 P -X RS 5 -150 -200 100 R 35 27 1 1 P -ENDDRAW -ENDDEF -# -# RasPI_IO_Header -# -DEF RasPI_IO_Header J 0 1 Y Y 1 F N -F0 "J" 0 700 60 H V C CNN -F1 "RasPI_IO_Header" 0 -700 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S -700 650 700 -650 0 1 0 N -X (3V3) 1 -800 600 100 R 35 35 1 1 P -X 5V 2 800 600 100 L 35 39 1 1 P -X GPIO0-R1/GPIO2-R2/SDA0/SDA1 3 -800 500 100 R 35 31 1 1 P -X (5V) 4 800 500 100 L 35 39 1 1 P -X GPIO1-R1/GPIO3-R2/SCL0/SCL1 5 -800 400 100 R 35 31 1 1 P -X GND 6 800 400 100 L 35 39 1 1 P -X GPIO4/GPCLK0 7 -800 300 100 R 35 31 1 1 P -X GPIO14/TXD0/TXD1 8 800 300 100 L 35 31 1 1 P -X (GND) 9 -800 200 100 R 35 39 1 1 P -X GPIO15/RXD0/RXD1 10 800 200 100 L 35 31 1 1 P -X (GND) 20 800 -300 100 L 35 39 1 1 P -X GPIO17/RTS0/RTS1 11 -800 100 100 R 35 31 1 1 P -X GPIO9/MISO0 21 -800 -400 100 R 35 31 1 1 P -X GPIO18/PCM_CLK/CE0-1/PWM0 12 800 100 100 L 35 31 1 1 P -X GPIO25/ARM_TCK 22 800 -400 100 L 35 31 1 1 P -X GPIO21-R1/GPIO27-R2/PCM_DOUT/GPCLK1 13 -800 0 100 R 35 31 1 1 P -X GPIO11/SCKL0 23 -800 -500 100 R 35 31 1 1 P -X (GND) 14 800 0 100 L 35 39 1 1 P -X GPIO8/CE0-0 24 800 -500 100 L 35 31 1 1 P -X GPIO22/SD1_CLK/ARM_TRST 15 -800 -100 100 R 35 31 1 1 P -X (GND) 25 -800 -600 100 R 35 39 1 1 P -X GPIO23/SD1_CMD/ARM_RTCK 16 800 -100 100 L 35 31 1 1 P -X GPIO7/CE1-0 26 800 -600 100 L 35 31 1 1 P -X (3V3) 17 -800 -200 100 R 35 39 1 1 P -X GPIO24/SD1_DATA0/ARM_TDO 18 800 -200 100 L 35 31 1 1 P -X GPIO10/MOSI0 19 -800 -300 100 R 35 31 1 1 P -ENDDRAW -ENDDEF -# -# RasPI_IO_Header_B+ -# -DEF RasPI_IO_Header_B+ J 0 1 Y Y 1 F N -F0 "J" 0 1050 60 H V C CNN -F1 "RasPI_IO_Header_B+" 0 -1050 60 H V C CNN -F2 "" 0 350 60 H V C CNN -F3 "" 0 350 60 H V C CNN -DRAW -S -1000 1000 1000 -1000 0 1 0 N -X 3V3 1 -1100 950 100 R 35 35 1 1 P -X 5V 2 1100 950 100 L 35 39 1 1 P -X GPIO0-R1/GPIO2-R2/SDA0/SDA1 3 -1100 850 100 R 35 31 1 1 P -X 5V 4 1100 850 100 L 35 39 1 1 P -X GPIO1-R1/GPIO3-R2/SCL0/SCL1 5 -1100 750 100 R 35 31 1 1 P -X GND 6 1100 750 100 L 35 39 1 1 P -X GPIO4/GPCLK0 7 -1100 650 100 R 35 31 1 1 P -X GPIO14/TXD0/TXD1 8 1100 650 100 L 35 31 1 1 P -X GND 9 -1100 550 100 R 35 39 1 1 P -X GPIO15/RXD0/RXD1 10 1100 550 100 L 35 31 1 1 P -X GND 20 1100 50 100 L 35 39 1 1 P -X GND 30 1100 -450 100 L 35 39 1 1 P -X GPIO21 40 1100 -950 100 L 35 31 1 1 P -X GPIO17/RTS0/RTS1/GPIO_GEN0 11 -1100 450 100 R 35 31 1 1 P -X GPIO9/SPI_MISO0 21 -1100 -50 100 R 35 31 1 1 P -X GPIO6 31 -1100 -550 100 R 35 31 1 1 P -X GPIO18/PCM_CLK/CE0-1/PWM0/GPIO_GEN1 12 1100 450 100 L 35 31 1 1 P -X GPIO25/ARM_TCK/GPIO_GEN6 22 1100 -50 100 L 35 31 1 1 P -X GPIO12 32 1100 -550 100 L 35 31 1 1 P -X GPIO21-R1/GPIO27-R2/PCM_DOUT/GPCLK1/GPIO_GEN2 13 -1100 350 100 R 35 31 1 1 P -X GPIO11/SPI_SCKL0 23 -1100 -150 100 R 35 31 1 1 P -X GPIO13 33 -1100 -650 100 R 35 31 1 1 P -X GND 14 1100 350 100 L 35 39 1 1 P -X GPIO8/CE0-N 24 1100 -150 100 L 35 31 1 1 P -X GND 34 1100 -650 100 L 35 39 1 1 P -X GPIO22/SD1_CLK/ARM_TRST/GPIO_GEN3 15 -1100 250 100 R 35 31 1 1 P -X GND 25 -1100 -250 100 R 35 39 1 1 P -X GPIO19 35 -1100 -750 100 R 35 31 1 1 P -X GPIO23/SD1_CMD/ARM_RTCK/GPIO_GEN4 16 1100 250 100 L 35 31 1 1 P -X GPIO7/CE1-N 26 1100 -250 100 L 35 31 1 1 P -X GPIO16 36 1100 -750 100 L 35 31 1 1 P -X 3V3 17 -1100 150 100 R 35 39 1 1 P -X ID_SD 27 -1100 -350 100 R 35 31 1 1 P -X GPIO26 37 -1100 -850 100 R 35 31 1 1 P -X GPIO24/SD1_DATA0/ARM_TDO/GPIO_GEN5 18 1100 150 100 L 35 31 1 1 P -X ID_SC 28 1100 -350 100 L 35 31 1 1 P -X GPIO20 38 1100 -850 100 L 35 31 1 1 P -X GPIO10/SPI_MOSI0 19 -1100 50 100 R 35 31 1 1 P -X GPIO5 29 -1100 -450 100 R 35 31 1 1 P -X GND 39 -1100 -950 100 R 35 39 1 1 P -ENDDRAW -ENDDEF -# -# STM32F0_Discovery_Header -# -DEF STM32F0_Discovery_Header J 0 1 Y Y 1 F N -F0 "J" 0 1000 60 H V C CNN -F1 "STM32F0_Discovery_Header" 0 900 60 H V C CNN -F2 "" 0 -100 60 H V C CNN -F3 "" 0 -100 60 H V C CNN -$FPLIST - stm32f0_discovery_header -$ENDFPLIST -DRAW -S -400 850 400 -850 0 1 0 N -X 3V 1 -550 800 150 R 27 39 1 1 P -X GND 2 -500 750 100 R 27 39 1 1 P -X VBAT 3 -550 700 150 R 27 39 1 1 P -X PC13 4 -500 650 100 R 27 30 1 1 P -X PC14 5 -550 600 150 R 27 30 1 1 P -X PC15 6 -500 550 100 R 27 30 1 1 P -X PF0 7 -550 500 150 R 27 30 1 1 P -X PF1 8 -500 450 100 R 27 30 1 1 P -X GND 9 -550 400 150 R 27 39 1 1 P -X ~RESET 10 -500 350 100 R 27 30 1 1 P -X PF5 20 -500 -150 100 R 27 30 1 1 P -X PB10 30 -500 -650 100 R 27 30 1 1 P -X PC8 40 550 -500 150 L 27 30 1 1 P -X PA14 50 550 0 150 L 27 30 1 1 P -X PB7 60 550 500 150 L 27 30 1 1 P -X PC0 11 -550 300 150 R 27 30 1 1 P -X PA4 21 -550 -200 150 R 27 30 1 1 P -X PB11 31 -550 -700 150 R 27 30 1 1 P -X PC9 41 500 -450 100 L 27 30 1 1 P -X PA15 51 500 50 100 L 27 30 1 1 P -X BOOT0 61 500 550 100 L 27 30 1 1 P -X PC1 12 -500 250 100 R 27 30 1 1 P -X PA5 22 -500 -250 100 R 27 30 1 1 P -X PB12 32 -500 -750 100 R 27 30 1 1 P -X PA8 42 550 -400 150 L 27 30 1 1 P -X PC10 52 550 100 150 L 27 30 1 1 P -X VDD 62 550 600 150 L 27 39 1 1 P -X PC2 13 -550 200 150 R 27 30 1 1 P -X PA6 23 -550 -300 150 R 27 30 1 1 P -X GND 33 -550 -800 150 R 27 39 1 1 P -X PA9 43 500 -350 100 L 27 30 1 1 P -X PC11 53 500 150 100 L 27 30 1 1 P -X PB8 63 500 650 100 L 27 30 1 1 P -X PC3 14 -500 150 100 R 27 30 1 1 P -X PA7 24 -500 -350 100 R 27 30 1 1 P -X GND 34 550 -800 150 L 27 39 1 1 P -X PA10 44 550 -300 150 L 27 30 1 1 P -X PC12 54 550 200 150 L 27 30 1 1 P -X PB9 64 550 700 150 L 27 30 1 1 P -X PA0 15 -550 100 150 R 27 30 1 1 P -X PC4 25 -550 -400 150 R 27 30 1 1 P -X PB13 35 500 -750 100 L 27 30 1 1 P -X PA11 45 500 -250 100 L 27 30 1 1 P -X PD2 55 500 250 100 L 27 30 1 1 P -X GND 65 500 750 100 L 27 39 1 1 P -X PA1 16 -500 50 100 R 27 30 1 1 P -X PC5 26 -500 -450 100 R 27 30 1 1 P -X PB14 36 550 -700 150 L 27 30 1 1 P -X PA12 46 550 -200 150 L 27 30 1 1 P -X PB3 56 550 300 150 L 27 30 1 1 P -X 5V 66 550 800 150 L 27 39 1 1 P -X PA2 17 -550 0 150 R 27 30 1 1 P -X PB0 27 -550 -500 150 R 27 30 1 1 P -X PB15 37 500 -650 100 L 27 30 1 1 P -X PA13 47 500 -150 100 L 27 30 1 1 P -X PB4 57 500 350 100 L 27 30 1 1 P -X PA3 18 -500 -50 100 R 27 30 1 1 P -X PB1 28 -500 -550 100 R 27 30 1 1 P -X PC6 38 550 -600 150 L 27 30 1 1 P -X PF6 48 550 -100 150 L 27 30 1 1 P -X PB5 58 550 400 150 L 27 30 1 1 P -X PF4 19 -550 -100 150 R 27 30 1 1 P -X PB2 29 -550 -600 150 R 27 30 1 1 P -X PC7 39 500 -550 100 L 27 30 1 1 P -X PF7 49 500 -50 100 L 27 30 1 1 P -X PB6 59 500 450 100 L 27 30 1 1 P -ENDDRAW -ENDDEF -# -# STM32F3_Discovery_Header -# -DEF STM32F3_Discovery_Header J 0 1 Y Y 1 F N -F0 "J" 0 1450 60 H V C CNN -F1 "STM32F3_Discovery_Header" 0 1350 60 H V C CNN -F2 "" 0 350 60 H V C CNN -F3 "" 0 350 60 H V C CNN -$FPLIST - stm32f3_discovery_header -$ENDFPLIST -DRAW -S 400 -1300 -400 1300 0 1 0 N -X 3V 1 -550 1250 150 R 27 39 1 1 P -X 3V 2 -500 1200 100 R 27 39 1 1 P -X GND 3 -550 1150 150 R 27 39 1 1 P -X ~RESET 4 -500 1100 100 R 27 30 1 1 P -X PC1 5 -550 1050 150 R 27 30 1 1 P -X PC0 6 -500 1000 100 R 27 30 1 1 P -X PC3 7 -550 950 150 R 27 30 1 1 P -X PC2 8 -500 900 100 R 27 30 1 1 P -X PA1 9 -550 850 150 R 27 30 1 1 P -X PF2 10 -500 800 100 R 27 30 1 1 P -X PC4 20 -500 300 100 R 27 30 1 1 P -X PE12 30 -500 -200 100 R 27 30 1 1 P -X PD8 40 -500 -700 100 R 27 30 1 1 P -X GND 50 -500 -1200 100 R 27 39 1 1 P -X PA11 60 550 -750 150 L 27 30 1 1 P -X PD2 70 550 -250 150 L 27 30 1 1 P -X PB7 80 550 250 150 L 27 30 1 1 P -X PE5 90 550 750 150 L 27 30 1 1 P -X PA3 11 -550 750 150 R 27 30 1 1 P -X PB1 21 -550 250 150 R 27 30 1 1 P -X PE15 31 -550 -250 150 R 27 30 1 1 P -X PD11 41 -550 -750 150 R 27 30 1 1 P -X GND 51 500 -1200 100 L 27 39 1 1 P -X PF6 61 500 -700 100 L 27 30 1 1 P -X PD3 71 500 -200 100 L 27 30 1 1 P -X BOOT0 81 500 300 100 L 27 30 1 1 P -X PE6 91 500 800 100 L 27 30 1 1 P -X PA0 12 -500 700 100 R 27 30 1 1 P -X PB0 22 -500 200 100 R 27 30 1 1 P -X PE14 32 -500 -300 100 R 27 30 1 1 P -X PD10 42 -500 -800 100 R 27 30 1 1 P -X GND 52 550 -1150 150 L 27 39 1 1 P -X PA13 62 550 -650 150 L 27 30 1 1 P -X PD4 72 550 -150 150 L 27 30 1 1 P -X VDD 82 550 350 150 L 27 39 1 1 P -X PC13 92 550 850 150 L 27 30 1 1 P -X PF4 13 -550 650 150 R 27 30 1 1 P -X PE7 23 -550 150 150 R 27 30 1 1 P -X PB11 33 -550 -350 150 R 27 30 1 1 P -X PD13 43 -550 -850 150 R 27 30 1 1 P -X PC8 53 500 -1100 100 L 27 30 1 1 P -X PA14 63 500 -600 100 L 27 30 1 1 P -X PD5 73 500 -100 100 L 27 30 1 1 P -X PB8 83 500 400 100 L 27 30 1 1 P -X PC14 93 500 900 100 L 27 30 1 1 P -X PA2 14 -500 600 100 R 27 30 1 1 P -X PB2 24 -500 100 100 R 27 30 1 1 P -X PB10 34 -500 -400 100 R 27 30 1 1 P -X PD12 44 -500 -900 100 R 27 30 1 1 P -X NC 54 550 -1050 150 L 27 30 1 1 P -X PA15 64 550 -550 150 L 27 30 1 1 P -X PD6 74 550 -50 150 L 27 30 1 1 P -X PB9 84 550 450 150 L 27 30 1 1 P -X PC15 94 550 950 150 L 27 30 1 1 P -X PA5 15 -550 550 150 R 27 30 1 1 P -X PE9 25 -550 50 150 R 27 30 1 1 P -X PB13 35 -550 -450 150 R 27 30 1 1 P -X PD15 45 -550 -950 150 R 27 30 1 1 P -X PA8 55 500 -1000 100 L 27 30 1 1 P -X PC10 65 500 -500 100 L 27 30 1 1 P -X PD7 75 500 0 100 L 27 30 1 1 P -X PE0 85 500 500 100 L 27 30 1 1 P -X PF0 95 500 1000 100 L 27 30 1 1 P -X PA4 16 -500 500 100 R 27 30 1 1 P -X PE8 26 -500 0 100 R 27 30 1 1 P -X PB12 36 -500 -500 100 R 27 30 1 1 P -X PD14 46 -500 -1000 100 R 27 30 1 1 P -X PC9 56 550 -950 150 L 27 30 1 1 P -X PC11 66 550 -450 150 L 27 30 1 1 P -X PB3 76 550 50 150 L 27 30 1 1 P -X PE1 86 550 550 150 L 27 30 1 1 P -X PF1 96 550 1050 150 L 27 30 1 1 P -X PA7 17 -550 450 150 R 27 30 1 1 P -X PE11 27 -550 -50 150 R 27 30 1 1 P -X PB15 37 -550 -550 150 R 27 30 1 1 P -X PC6 47 -550 -1050 150 R 27 30 1 1 P -X PA10 57 500 -900 100 L 27 30 1 1 P -X PC12 67 500 -400 100 L 27 30 1 1 P -X PB4 77 500 100 100 L 27 30 1 1 P -X PE2 87 500 600 100 L 27 30 1 1 P -X PF9 97 500 1100 100 L 27 30 1 1 P -X PA6 18 -500 400 100 R 27 30 1 1 P -X PE10 28 -500 -100 100 R 27 30 1 1 P -X PB14 38 -500 -600 100 R 27 30 1 1 P -X PC7 48 -500 -1100 100 R 27 30 1 1 P -X PA9 58 550 -850 150 L 27 30 1 1 P -X PD0 68 550 -350 150 L 27 30 1 1 P -X PB5 78 550 150 150 L 27 30 1 1 P -X PE3 88 550 650 150 L 27 30 1 1 P -X PF10 98 550 1150 150 L 27 30 1 1 P -X PC5 19 -550 350 150 R 27 30 1 1 P -X PE13 29 -550 -150 150 R 27 30 1 1 P -X PD9 39 -550 -650 150 R 27 30 1 1 P -X GND 49 -550 -1150 150 R 27 39 1 1 P -X PA12 59 500 -800 100 L 27 30 1 1 P -X PD1 69 500 -300 100 L 27 30 1 1 P -X PB6 79 500 200 100 L 27 30 1 1 P -X PE4 89 500 700 100 L 27 30 1 1 P -X 5V 99 500 1200 100 L 27 39 1 1 P -X 5V 100 550 1250 150 L 27 39 1 1 P -ENDDRAW -ENDDEF -# -# STM32F4_Discovery_Header -# -DEF STM32F4_Discovery_Header J 0 1 Y Y 1 F N -F0 "J" 0 1450 60 H V C CNN -F1 "STM32F4_Discovery_Header" 0 1350 60 H V C CNN -F2 "" 0 350 60 H V C CNN -F3 "" 0 350 60 H V C CNN -$FPLIST - stm32f4_discovery_header -$ENDFPLIST -DRAW -S 400 -1300 -400 1300 0 1 0 N -X GND 1 -550 1250 150 R 27 39 1 1 P -X GND 2 -500 1200 100 R 27 39 1 1 P -X VDD 3 -550 1150 150 R 27 39 1 1 P -X VDD 4 -500 1100 100 R 27 39 1 1 P -X GND 5 -550 1050 150 R 27 39 1 1 P -X ~RESET 6 -500 1000 100 R 27 30 1 1 P -X PC1 7 -550 950 150 R 27 30 1 1 P -X PC0 8 -500 900 100 R 27 30 1 1 P -X PC3 9 -550 850 150 R 27 30 1 1 P -X PC2 10 -500 800 100 R 27 30 1 1 P -X PC4 20 -500 300 100 R 27 30 1 1 P -X PE12 30 -500 -200 100 R 27 30 1 1 P -X PD8 40 -500 -700 100 R 27 30 1 1 P -X GND 50 -500 -1200 100 R 27 39 1 1 P -X PA13 60 550 -750 150 L 27 30 1 1 P -X PD4 70 550 -250 150 L 27 30 1 1 P -X VDD 80 550 250 150 L 27 39 1 1 P -X PC13 90 550 750 150 L 27 30 1 1 P -X PA1 11 -550 750 150 R 27 30 1 1 P -X PB1 21 -550 250 150 R 27 30 1 1 P -X PE13 31 -550 -250 150 R 27 30 1 1 P -X PD9 41 -550 -750 150 R 27 30 1 1 P -X GND 51 500 -1200 100 L 27 39 1 1 P -X PA14 61 500 -700 100 L 27 30 1 1 P -X PD5 71 500 -200 100 L 27 30 1 1 P -X PB8 81 500 300 100 L 27 30 1 1 P -X PC14 91 500 800 100 L 27 30 1 1 P -X PA0 12 -500 700 100 R 27 30 1 1 P -X PB0 22 -500 200 100 R 27 30 1 1 P -X PE14 32 -500 -300 100 R 27 30 1 1 P -X PD10 42 -500 -800 100 R 27 30 1 1 P -X GND 52 550 -1150 150 L 27 39 1 1 P -X PA15 62 550 -650 150 L 27 30 1 1 P -X PD6 72 550 -150 150 L 27 30 1 1 P -X PB9 82 550 350 150 L 27 30 1 1 P -X PC15 92 550 850 150 L 27 30 1 1 P -X PA3 13 -550 650 150 R 27 30 1 1 P -X GND 23 -550 150 150 R 27 39 1 1 P -X PE15 33 -550 -350 150 R 27 30 1 1 P -X PD11 43 -550 -850 150 R 27 30 1 1 P -X PC6 53 500 -1100 100 L 27 30 1 1 P -X PC10 63 500 -600 100 L 27 30 1 1 P -X PD7 73 500 -100 100 L 27 30 1 1 P -X PE0 83 500 400 100 L 27 30 1 1 P -X PH0 93 500 900 100 L 27 30 1 1 P -X PA2 14 -500 600 100 R 27 30 1 1 P -X PB2 24 -500 100 100 R 27 30 1 1 P -X PB10 34 -500 -400 100 R 27 30 1 1 P -X PD12 44 -500 -900 100 R 27 30 1 1 P -X PC7 54 550 -1050 150 L 27 30 1 1 P -X PC11 64 550 -550 150 L 27 30 1 1 P -X PB3 74 550 -50 150 L 27 30 1 1 P -X PE1 84 550 450 150 L 27 30 1 1 P -X PH1 94 550 950 150 L 27 30 1 1 P -X PA5 15 -550 550 150 R 27 30 1 1 P -X PE7 25 -550 50 150 R 27 30 1 1 P -X PB11 35 -550 -450 150 R 27 30 1 1 P -X PD13 45 -550 -950 150 R 27 30 1 1 P -X PC8 55 500 -1000 100 L 27 30 1 1 P -X PC12 65 500 -500 100 L 27 30 1 1 P -X PB4 75 500 0 100 L 27 30 1 1 P -X PE2 85 500 500 100 L 27 30 1 1 P -X 3V 95 500 1000 100 L 27 39 1 1 P -X PA4 16 -500 500 100 R 27 30 1 1 P -X PE8 26 -500 0 100 R 27 30 1 1 P -X PB12 36 -500 -500 100 R 27 30 1 1 P -X PD14 46 -500 -1000 100 R 27 30 1 1 P -X PC9 56 550 -950 150 L 27 30 1 1 P -X PD0 66 550 -450 150 L 27 30 1 1 P -X PB5 76 550 50 150 L 27 30 1 1 P -X PE3 86 550 550 150 L 27 30 1 1 P -X 3V 96 550 1050 150 L 27 39 1 1 P -X PA7 17 -550 450 150 R 27 30 1 1 P -X PE9 27 -550 -50 150 R 27 30 1 1 P -X PB13 37 -550 -550 150 R 27 30 1 1 P -X PD15 47 -550 -1050 150 R 27 30 1 1 P -X PA8 57 500 -900 100 L 27 30 1 1 P -X PD1 67 500 -400 100 L 27 30 1 1 P -X PB6 77 500 100 100 L 27 30 1 1 P -X PE4 87 500 600 100 L 27 30 1 1 P -X 5V 97 500 1100 100 L 27 39 1 1 P -X PA6 18 -500 400 100 R 27 30 1 1 P -X PE10 28 -500 -100 100 R 27 30 1 1 P -X PB14 38 -500 -600 100 R 27 30 1 1 P -X NC 48 -500 -1100 100 R 27 30 1 1 P -X PA9 58 550 -850 150 L 27 30 1 1 P -X PD2 68 550 -350 150 L 27 30 1 1 P -X PB7 78 550 150 150 L 27 30 1 1 P -X PE5 88 550 650 150 L 27 30 1 1 P -X 5V 98 550 1150 150 L 27 39 1 1 P -X PC5 19 -550 350 150 R 27 30 1 1 P -X PE11 29 -550 -150 150 R 27 30 1 1 P -X PB15 39 -550 -650 150 R 27 30 1 1 P -X GND 49 -550 -1150 150 R 27 39 1 1 P -X PA10 59 500 -800 100 L 27 30 1 1 P -X PD3 69 500 -300 100 L 27 30 1 1 P -X BOOT0 79 500 200 100 L 27 30 1 1 P -X PE6 89 500 700 100 L 27 30 1 1 P -X GND 99 500 1200 100 L 27 39 1 1 P -X GND 100 550 1250 150 L 27 39 1 1 P -ENDDRAW -ENDDEF -# -# STM32VL_Discovery_Header -# -DEF STM32VL_Discovery_Header J 0 1 Y Y 1 F N -F0 "J" 0 900 60 H V C CNN -F1 "STM32VL_Discovery_Header" 0 800 60 H V C CNN -F2 "" 0 -100 60 H V C CNN -F3 "" 0 -100 60 H V C CNN -$FPLIST - stm32vl_discovery_header -$ENDFPLIST -DRAW -S -400 750 400 -750 0 1 0 N -X GND 1 -550 700 150 R 27 39 1 1 P -X NC 2 -500 650 100 R 27 30 1 1 P -X EXT_3V3 3 -550 600 150 R 27 39 1 1 P -X EXT_VBAT 4 -500 550 100 R 27 39 1 1 P -X PC13 5 -550 500 150 R 27 30 1 1 P -X PC14 6 -500 450 100 R 27 30 1 1 P -X PC15 7 -550 400 150 R 27 30 1 1 P -X PD0 8 -500 350 100 R 27 30 1 1 P -X PD1 9 -550 300 150 R 27 30 1 1 P -X ~RESET 10 -500 250 100 R 27 30 1 1 P -X PA5 20 -500 -250 100 R 27 30 1 1 P -X PB11 30 -100 -850 100 U 27 30 1 1 P -X PA8 40 550 -400 150 L 27 30 1 1 P -X PC12 50 550 100 150 L 27 30 1 1 P -X EXT_5V 60 550 600 150 L 27 39 1 1 P -X PC0 11 -550 200 150 R 27 30 1 1 P -X PA6 21 -550 -300 150 R 27 30 1 1 P -X PB12 31 -50 -900 150 U 27 30 1 1 P -X PA9 41 500 -350 100 L 27 30 1 1 P -X PD2 51 500 150 100 L 27 30 1 1 P -X NC 61 500 650 100 L 27 30 1 1 P -X PC1 12 -500 150 100 R 27 30 1 1 P -X PA7 22 -500 -350 100 R 27 30 1 1 P -X PB13 32 50 -850 100 U 27 30 1 1 P -X PA10 42 550 -300 150 L 27 30 1 1 P -X PB3 52 550 200 150 L 27 30 1 1 P -X GND 62 550 700 150 L 27 39 1 1 P -X PC2 13 -550 100 150 R 27 30 1 1 P -X PC4 23 -550 -400 150 R 27 30 1 1 P -X PB14 33 100 -900 150 U 27 30 1 1 P -X PA11 43 500 -250 100 L 27 30 1 1 P -X PB4 53 500 250 100 L 27 30 1 1 P -X PC3 14 -500 50 100 R 27 30 1 1 P -X PC5 24 -500 -450 100 R 27 30 1 1 P -X PB15 34 150 -850 100 U 27 30 1 1 P -X PA12 44 550 -200 150 L 27 30 1 1 P -X PB5 54 550 300 150 L 27 30 1 1 P -X PA0 15 -550 0 150 R 27 30 1 1 P -X PB0 25 -550 -500 150 R 27 30 1 1 P -X GND 35 500 -650 100 L 27 39 1 1 P -X PA13 45 500 -150 100 L 27 30 1 1 P -X PB6 55 500 350 100 L 27 30 1 1 P -X PA1 16 -500 -50 100 R 27 30 1 1 P -X PB1 26 -500 -550 100 R 27 30 1 1 P -X PC6 36 550 -600 150 L 27 30 1 1 P -X PA14 46 550 -100 150 L 27 30 1 1 P -X PB7 56 550 400 150 L 27 30 1 1 P -X PA2 17 -550 -100 150 R 27 30 1 1 P -X PB2 27 -550 -600 150 R 27 30 1 1 P -X PC7 37 500 -550 100 L 27 30 1 1 P -X PA15 47 500 -50 100 L 27 30 1 1 P -X BOOT0 57 500 450 100 L 27 30 1 1 P -X PA3 18 -500 -150 100 R 27 30 1 1 P -X GND 28 -500 -650 100 R 27 39 1 1 P -X PC8 38 550 -500 150 L 27 30 1 1 P -X PC10 48 550 0 150 L 27 30 1 1 P -X PB8 58 550 500 150 L 27 30 1 1 P -X PA4 19 -550 -200 150 R 27 30 1 1 P -X PB10 29 -150 -900 150 U 27 30 1 1 P -X PC9 39 500 -450 100 L 27 30 1 1 P -X PC11 49 500 50 100 L 27 30 1 1 P -X PB9 59 500 550 100 L 27 30 1 1 P -ENDDRAW -ENDDEF -# -# USB-B -# -DEF USB-B JP 0 0 Y Y 1 F N -F0 "JP" 0 210 60 H V C CNN -F1 "USB-B" 10 140 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S -60 100 60 -20 0 1 0 N -P 3 0 1 0 -50 -100 -100 -150 -100 -150 N -P 3 0 1 0 -40 -90 -50 -100 -50 -100 N -P 3 0 1 0 -30 -80 -40 -90 -40 -90 N -P 3 0 1 0 -30 -80 -30 -20 -30 -20 N -P 3 0 1 0 100 -150 50 -100 50 -100 N -P 4 0 1 0 -50 -20 -50 -40 -60 -50 -60 -50 N -P 4 0 1 0 30 -20 30 -80 50 -100 50 -100 N -P 4 0 1 0 50 -20 50 -40 60 -50 60 -50 N -P 6 0 1 0 -30 50 -30 10 30 10 30 50 -30 50 -30 50 N -P 8 0 1 0 -50 0 -50 50 -30 70 30 70 50 50 50 0 -50 0 -50 0 N -X Vbus 1 -150 -50 90 R 40 30 1 1 w -X D- 2 150 -50 90 L 40 30 1 1 B -X D+ 3 150 -150 50 L 40 30 1 1 B -X GND 4 -150 -150 50 R 40 30 1 1 w -ENDDRAW -ENDDEF -# -# dc_jack -# -DEF dc_jack J 0 0 Y N 1 F N -F0 "J" 0 150 60 H V C CNN -F1 "dc_jack" 0 -150 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -A 115 -50 10 -899 899 0 1 0 N 115 -60 115 -40 -S -125 100 150 -100 0 1 0 N -P 2 0 1 0 -50 0 -50 25 N -P 4 0 1 0 -50 50 -65 25 -35 25 -50 50 F -P 4 0 1 0 -50 50 -25 50 0 25 25 50 N -P 4 0 1 0 115 -40 -50 -40 -50 -60 115 -60 N -X 1 1 -150 0 100 R 35 27 1 1 P -X 2 2 -150 50 100 R 35 27 1 1 P -X 3 3 -150 -50 100 R 35 27 1 1 P -ENDDRAW -ENDDEF -# -# rj45-wiznet-rb1-125bag1a -# -DEF rj45-wiznet-rb1-125bag1a J 0 0 Y Y 1 F N -F0 "J" 0 580 60 H V C CNN -F1 "rj45-wiznet-rb1-125bag1a" -10 500 60 H V C CNN -F2 "" -300 -50 60 H V C CNN -F3 "" -300 -50 60 H V C CNN -$FPLIST - rj45-wiznet-rb1-125bag1a -$ENDFPLIST -DRAW -T 0 -110 350 39 0 0 0 GN Normal 0 C C -T 0 360 100 20 0 0 0 RX+ Normal 0 C C -T 0 360 -50 20 0 0 0 RX- Normal 0 C C -T 0 360 200 20 0 0 0 TX+ Normal 0 C C -T 0 360 150 20 0 0 0 TX- Normal 0 C C -T 0 -110 -350 39 0 0 0 YL Normal 0 C C -A -220 -160 5 -899 899 0 1 0 N -220 -165 -220 -155 -A -220 -150 5 -899 899 0 1 0 N -220 -155 -220 -145 -A -220 -140 5 -899 899 0 1 0 N -220 -145 -220 -135 -A -220 -130 5 -899 899 0 1 0 N -220 -135 -220 -125 -A -220 30 5 -899 899 0 1 0 N -220 25 -220 35 -A -220 40 5 -899 899 0 1 0 N -220 35 -220 45 -A -220 50 5 -899 899 0 1 0 N -220 45 -220 55 -A -220 60 5 -899 899 0 1 0 N -220 55 -220 65 -A -180 -160 5 901 -901 0 1 0 N -180 -155 -180 -165 -A -180 -150 5 901 -901 0 1 0 N -180 -145 -180 -155 -A -180 -140 5 901 -901 0 1 0 N -180 -135 -180 -145 -A -180 -130 5 901 -901 0 1 0 N -180 -125 -180 -135 -A -180 30 5 901 -901 0 1 0 N -180 35 -180 25 -A -180 40 5 901 -901 0 1 0 N -180 45 -180 35 -A -180 50 5 901 -901 0 1 0 N -180 55 -180 45 -A -180 60 5 901 -901 0 1 0 N -180 65 -180 55 -A -75 -165 5 1 1799 0 1 0 N -70 -165 -80 -165 -A -75 -125 5 -1799 -1 0 1 0 N -80 -125 -70 -125 -A -75 25 5 1 1799 0 1 0 N -70 25 -80 25 -A -75 65 5 -1799 -1 0 1 0 N -80 65 -70 65 -A -65 -165 5 1 1799 0 1 0 N -60 -165 -70 -165 -A -65 -125 5 -1799 -1 0 1 0 N -70 -125 -60 -125 -A -65 25 5 1 1799 0 1 0 N -60 25 -70 25 -A -65 65 5 -1799 -1 0 1 0 N -70 65 -60 65 -A -55 -165 5 1 1799 0 1 0 N -50 -165 -60 -165 -A -55 -125 5 -1799 -1 0 1 0 N -60 -125 -50 -125 -A -55 25 5 1 1799 0 1 0 N -50 25 -60 25 -A -55 65 5 -1799 -1 0 1 0 N -60 65 -50 65 -A -45 -165 5 1 1799 0 1 0 N -40 -165 -50 -165 -A -45 -125 5 -1799 -1 0 1 0 N -50 -125 -40 -125 -A -45 25 5 1 1799 0 1 0 N -40 25 -50 25 -A -45 65 5 -1799 -1 0 1 0 N -50 65 -40 65 -C -250 46 4 0 1 0 N -C -228 -129 1 0 1 0 N -C -228 61 1 0 1 0 N -C -173 -129 1 0 1 0 N -C -173 61 1 0 1 0 N -C -170 -135 0 0 1 0 N -C -170 55 0 0 1 0 N -C -76 -173 1 0 1 0 N -C -76 -118 1 0 1 0 N -C -76 17 1 0 1 0 N -C -76 72 1 0 1 0 N -C -70 -115 0 0 1 0 N -C -70 75 0 0 1 0 N -C 20 -340 4 0 1 0 N -C 50 -340 4 0 1 0 N -C 80 -340 4 0 1 0 N -C 160 -24 4 0 1 0 N -C 220 -174 4 0 1 0 N -S 400 250 250 -250 0 1 0 N -S 400 450 -300 -450 0 1 0 N -P 2 0 1 0 -250 45 -220 45 N -P 2 0 1 0 -220 -350 -180 -350 N -P 2 0 1 0 -220 -165 -220 -175 N -P 2 0 1 0 -220 -115 -220 -125 N -P 2 0 1 0 -220 25 -220 15 N -P 2 0 1 0 -220 75 -220 65 N -P 2 0 1 0 -220 350 -180 350 N -P 2 0 1 0 -205 -165 -205 -125 N -P 2 0 1 0 -205 25 -205 65 N -P 2 0 1 0 -195 -125 -195 -165 N -P 2 0 1 0 -195 65 -195 25 N -P 2 0 1 0 -180 -165 -180 -175 N -P 2 0 1 0 -180 -115 -180 -125 N -P 2 0 1 0 -180 25 -180 15 N -P 2 0 1 0 -180 75 -180 65 N -P 2 0 1 0 -90 -165 -80 -165 N -P 2 0 1 0 -90 -125 -80 -125 N -P 2 0 1 0 -90 25 -80 25 N -P 2 0 1 0 -90 65 -80 65 N -P 2 0 1 0 -80 -140 -40 -140 N -P 2 0 1 0 -80 50 -40 50 N -P 2 0 1 0 -40 -340 -40 -325 N -P 2 0 1 0 -40 -255 -40 -240 N -P 2 0 1 0 -40 -165 -30 -165 N -P 2 0 1 0 -40 -150 -80 -150 N -P 2 0 1 0 -40 -125 -30 -125 N -P 2 0 1 0 -40 25 -30 25 N -P 2 0 1 0 -40 40 -80 40 N -P 2 0 1 0 -40 65 -30 65 N -P 2 0 1 0 20 -340 20 -325 N -P 2 0 1 0 20 -255 20 -240 N -P 2 0 1 0 30 -360 70 -360 N -P 2 0 1 0 50 -450 50 -400 N -P 2 0 1 0 50 -380 50 -400 N -P 2 0 1 0 50 -340 50 -360 N -P 2 0 1 0 70 -380 30 -380 N -P 2 0 1 0 80 -340 80 -325 N -P 2 0 1 0 80 -255 80 -240 N -P 2 0 1 0 140 -340 -40 -340 N -P 2 0 1 0 140 -340 140 -325 N -P 2 0 1 0 140 -255 140 -240 N -P 2 0 1 0 160 25 160 -25 N -P 2 0 1 0 300 -180 400 -180 N -P 2 0 1 0 300 -175 220 -175 N -P 2 0 1 0 300 -175 400 -175 N -P 2 0 1 0 300 -130 400 -130 N -P 2 0 1 0 300 -125 400 -125 N -P 2 0 1 0 300 -80 400 -80 N -P 2 0 1 0 300 -75 190 -75 N -P 2 0 1 0 300 -75 400 -75 N -P 2 0 1 0 300 -30 400 -30 N -P 2 0 1 0 300 -25 160 -25 N -P 2 0 1 0 300 -25 400 -25 N -P 2 0 1 0 300 20 400 20 N -P 2 0 1 0 300 25 160 25 N -P 2 0 1 0 300 25 400 25 N -P 2 0 1 0 300 70 400 70 N -P 2 0 1 0 300 75 55 75 N -P 2 0 1 0 300 75 400 75 N -P 2 0 1 0 300 120 400 120 N -P 2 0 1 0 300 125 25 125 N -P 2 0 1 0 300 125 400 125 N -P 2 0 1 0 300 170 400 170 N -P 2 0 1 0 300 175 400 175 N -P 3 0 1 0 -300 -100 -220 -100 -220 -115 N -P 3 0 1 0 -300 0 -220 0 -220 15 N -P 3 0 1 0 -300 100 -220 100 -220 75 N -P 3 0 1 0 -250 45 -250 -145 -220 -145 N -P 3 0 1 0 -250 45 -250 200 -300 200 N -P 3 0 1 0 -220 -175 -220 -200 -300 -200 N -P 3 0 1 0 -200 -350 -200 -400 -300 -400 N -P 3 0 1 0 -200 -330 -200 -300 -300 -300 N -P 3 0 1 0 -200 350 -200 300 -300 300 N -P 3 0 1 0 -200 370 -200 400 -300 400 N -P 3 0 1 0 20 -240 20 -50 -70 -50 N -P 3 0 1 0 25 125 25 25 -30 25 N -P 3 0 1 0 55 75 55 -125 -30 -125 N -P 3 0 1 0 80 -240 80 -25 160 -25 N -P 3 0 1 0 140 -240 220 -240 220 -175 N -P 3 0 1 0 190 -75 190 -165 -30 -165 N -P 3 0 1 0 220 -175 220 -125 300 -125 N -P 3 0 1 0 300 -180 300 -170 400 -170 N -P 3 0 1 0 300 -130 300 -120 400 -120 N -P 3 0 1 0 300 -80 300 -70 400 -70 N -P 3 0 1 0 300 -30 300 -20 400 -20 N -P 3 0 1 0 300 20 300 30 400 30 N -P 3 0 1 0 300 70 300 80 400 80 N -P 3 0 1 0 300 120 300 130 400 130 N -P 3 0 1 0 300 170 300 180 400 180 N -P 4 0 1 0 -220 -330 -200 -350 -180 -330 -220 -330 F -P 4 0 1 0 -220 370 -200 350 -180 370 -220 370 F -P 4 0 1 0 -180 -175 -180 -200 -90 -200 -90 -165 N -P 4 0 1 0 -180 -145 -135 -145 -135 -240 -40 -240 N -P 4 0 1 0 -180 -115 -180 -100 -90 -100 -90 -125 N -P 4 0 1 0 -180 15 -180 0 -90 0 -90 25 N -P 4 0 1 0 -180 45 -135 45 -135 -50 -70 -50 N -P 4 0 1 0 -180 75 -180 100 -90 100 -90 65 N -P 4 0 1 0 300 175 0 175 0 65 -30 65 N -P 5 0 1 0 -180 -360 -160 -380 -160 -370 -170 -380 -160 -380 N -P 5 0 1 0 -180 -340 -160 -360 -160 -350 -170 -360 -160 -360 N -P 5 0 1 0 -180 340 -160 320 -160 330 -170 320 -160 320 N -P 5 0 1 0 -180 360 -160 340 -160 350 -170 340 -160 340 N -P 9 0 1 0 -40 -255 -30 -260 -50 -270 -30 -280 -50 -290 -30 -300 -50 -310 -30 -320 -40 -325 N -P 9 0 1 0 20 -255 30 -260 10 -270 30 -280 10 -290 30 -300 10 -310 30 -320 20 -325 N -P 9 0 1 0 80 -255 90 -260 70 -270 90 -280 70 -290 90 -300 70 -310 90 -320 80 -325 N -P 9 0 1 0 140 -255 150 -260 130 -270 150 -280 130 -290 150 -300 130 -310 150 -320 140 -325 N -X TX+ 1 -400 100 100 R 31 31 1 1 P -X TX- 2 -400 0 100 R 31 31 1 1 P -X CT 3 -400 200 100 R 31 31 1 1 P -X RX+ 7 -400 -100 100 R 31 31 1 1 P -X RX- 8 -400 -200 100 R 31 31 1 1 P -X L1 9 -400 -300 100 R 31 31 1 1 P -X L2 10 -400 -400 100 R 31 31 1 1 P -X L3 11 -400 400 100 R 31 31 1 1 P -X L4 12 -400 300 100 R 31 31 1 1 P -X GND 13 50 -550 100 U 31 31 1 1 P -ENDDRAW -ENDDEF -# -# rj45_wurth-7499211122a -# -DEF rj45_wurth-7499211122a J 0 0 Y Y 1 F N -F0 "J" 450 0 60 V V C CNN -F1 "rj45_wurth-7499211122a" 550 0 60 V V C CNN -F2 "" -300 -50 60 H V C CNN -F3 "" -300 -50 60 H V C CNN -$FPLIST - rj45-wiznet-rb1-125bag1a -$ENDFPLIST -DRAW -T 0 -110 350 31 0 0 0 GN Normal 0 C C -T 0 360 100 20 0 0 0 RX+ Normal 0 C C -T 0 360 -50 20 0 0 0 RX- Normal 0 C C -T 0 360 200 20 0 0 0 TX+ Normal 0 C C -T 0 360 150 20 0 0 0 TX- Normal 0 C C -T 0 -110 -350 31 0 0 0 YL Normal 0 C C -P 2 0 0 0 -40 -240 -40 -262 N -P 2 0 0 0 20 -240 20 -262 N -P 2 0 0 0 50 -422 50 -449 N -P 2 0 0 0 80 -240 80 -262 N -P 2 0 0 0 140 -240 140 -262 N -P 4 0 0 0 -135 45 -135 304 -50 304 -50 451 N -P 4 0 0 0 200 451 200 333 160 333 160 25 N -P 5 0 0 0 50 451 50 282 -111 282 -111 -145 -135 -145 N -P 5 0 0 0 220 -125 220 314 299 314 300 314 300 451 N -A -220 -160 5 -899 899 0 1 0 N -220 -165 -220 -155 -A -220 -150 5 -899 899 0 1 0 N -220 -155 -220 -145 -A -220 -140 5 -899 899 0 1 0 N -220 -145 -220 -135 -A -220 -130 5 -899 899 0 1 0 N -220 -135 -220 -125 -A -220 30 5 -899 899 0 1 0 N -220 25 -220 35 -A -220 40 5 -899 899 0 1 0 N -220 35 -220 45 -A -220 50 5 -899 899 0 1 0 N -220 45 -220 55 -A -220 60 5 -899 899 0 1 0 N -220 55 -220 65 -A -180 -160 5 901 -901 0 1 0 N -180 -155 -180 -165 -A -180 -150 5 901 -901 0 1 0 N -180 -145 -180 -155 -A -180 -140 5 901 -901 0 1 0 N -180 -135 -180 -145 -A -180 -130 5 901 -901 0 1 0 N -180 -125 -180 -135 -A -180 30 5 901 -901 0 1 0 N -180 35 -180 25 -A -180 40 5 901 -901 0 1 0 N -180 45 -180 35 -A -180 50 5 901 -901 0 1 0 N -180 55 -180 45 -A -180 60 5 901 -901 0 1 0 N -180 65 -180 55 -A -75 -165 5 1 1799 0 1 0 N -70 -165 -80 -165 -A -75 -125 5 -1799 -1 0 1 0 N -80 -125 -70 -125 -A -75 25 5 1 1799 0 1 0 N -70 25 -80 25 -A -75 65 5 -1799 -1 0 1 0 N -80 65 -70 65 -A -65 -165 5 1 1799 0 1 0 N -60 -165 -70 -165 -A -65 -125 5 -1799 -1 0 1 0 N -70 -125 -60 -125 -A -65 25 5 1 1799 0 1 0 N -60 25 -70 25 -A -65 65 5 -1799 -1 0 1 0 N -70 65 -60 65 -A -55 -165 5 1 1799 0 1 0 N -50 -165 -60 -165 -A -55 -125 5 -1799 -1 0 1 0 N -60 -125 -50 -125 -A -55 25 5 1 1799 0 1 0 N -50 25 -60 25 -A -55 65 5 -1799 -1 0 1 0 N -60 65 -50 65 -A -45 -165 5 1 1799 0 1 0 N -40 -165 -50 -165 -A -45 -125 5 -1799 -1 0 1 0 N -50 -125 -40 -125 -A -45 25 5 1 1799 0 1 0 N -40 25 -50 25 -A -45 65 5 -1799 -1 0 1 0 N -50 65 -40 65 -C -250 46 4 0 1 0 N -C -228 -129 1 0 1 0 N -C -228 61 1 0 1 0 N -C -173 -129 1 0 1 0 N -C -173 61 1 0 1 0 N -C -170 -135 0 0 1 0 N -C -170 55 0 0 1 0 N -C -135 -146 4 0 1 0 N -C -135 45 4 0 1 0 N -C -76 -173 1 0 1 0 N -C -76 -118 1 0 1 0 N -C -76 17 1 0 1 0 N -C -76 72 1 0 1 0 N -C -70 -115 0 0 1 0 N -C -70 75 0 0 1 0 N -C 20 -382 4 0 1 0 N -C 50 -382 4 0 1 0 N -C 80 -382 4 0 1 0 N -C 160 -24 4 0 1 0 N -C 160 25 4 0 1 0 N -C 220 -174 4 0 1 0 N -C 220 -125 4 0 1 0 N -S 400 250 250 -250 0 1 0 N -S 400 450 -300 -450 0 1 0 N -P 2 0 1 0 -250 45 -220 45 N -P 2 0 1 0 -220 -350 -180 -350 N -P 2 0 1 0 -220 -165 -220 -175 N -P 2 0 1 0 -220 -115 -220 -125 N -P 2 0 1 0 -220 25 -220 15 N -P 2 0 1 0 -220 75 -220 65 N -P 2 0 1 0 -220 350 -180 350 N -P 2 0 1 0 -205 -165 -205 -125 N -P 2 0 1 0 -205 25 -205 65 N -P 2 0 1 0 -195 -125 -195 -165 N -P 2 0 1 0 -195 65 -195 25 N -P 2 0 1 0 -180 -165 -180 -175 N -P 2 0 1 0 -180 -115 -180 -125 N -P 2 0 1 0 -180 25 -180 15 N -P 2 0 1 0 -180 75 -180 65 N -P 2 0 1 0 -90 -165 -80 -165 N -P 2 0 1 0 -90 -125 -80 -125 N -P 2 0 1 0 -90 25 -80 25 N -P 2 0 1 0 -90 65 -80 65 N -P 2 0 1 0 -80 -140 -40 -140 N -P 2 0 1 0 -80 50 -40 50 N -P 2 0 1 0 -60 -262 -20 -262 N -P 2 0 1 0 -40 -382 -40 -367 N -P 2 0 1 0 -40 -297 -40 -282 N -P 2 0 1 0 -40 -165 -30 -165 N -P 2 0 1 0 -40 -150 -80 -150 N -P 2 0 1 0 -40 -125 -30 -125 N -P 2 0 1 0 -40 25 -30 25 N -P 2 0 1 0 -40 40 -80 40 N -P 2 0 1 0 -40 65 -30 65 N -P 2 0 1 0 -20 -282 -60 -282 N -P 2 0 1 0 0 -262 40 -262 N -P 2 0 1 0 20 -382 20 -367 N -P 2 0 1 0 20 -297 20 -282 N -P 2 0 1 0 30 -402 70 -402 N -P 2 0 1 0 40 -282 0 -282 N -P 2 0 1 0 50 -422 50 -442 N -P 2 0 1 0 50 -382 50 -402 N -P 2 0 1 0 60 -262 100 -262 N -P 2 0 1 0 70 -422 30 -422 N -P 2 0 1 0 80 -382 80 -367 N -P 2 0 1 0 80 -297 80 -282 N -P 2 0 1 0 100 -282 60 -282 N -P 2 0 1 0 120 -262 160 -262 N -P 2 0 1 0 140 -382 -40 -382 N -P 2 0 1 0 140 -382 140 -367 N -P 2 0 1 0 140 -297 140 -282 N -P 2 0 1 0 160 -282 120 -282 N -P 2 0 1 0 160 25 160 -25 N -P 2 0 1 0 300 -180 400 -180 N -P 2 0 1 0 300 -175 220 -175 N -P 2 0 1 0 300 -175 400 -175 N -P 2 0 1 0 300 -130 400 -130 N -P 2 0 1 0 300 -125 400 -125 N -P 2 0 1 0 300 -80 400 -80 N -P 2 0 1 0 300 -75 190 -75 N -P 2 0 1 0 300 -75 400 -75 N -P 2 0 1 0 300 -30 400 -30 N -P 2 0 1 0 300 -25 160 -25 N -P 2 0 1 0 300 -25 400 -25 N -P 2 0 1 0 300 20 400 20 N -P 2 0 1 0 300 25 160 25 N -P 2 0 1 0 300 25 400 25 N -P 2 0 1 0 300 70 400 70 N -P 2 0 1 0 300 75 55 75 N -P 2 0 1 0 300 75 400 75 N -P 2 0 1 0 300 120 400 120 N -P 2 0 1 0 300 125 25 125 N -P 2 0 1 0 300 125 400 125 N -P 2 0 1 0 300 170 400 170 N -P 2 0 1 0 300 175 400 175 N -P 3 0 1 0 -300 -100 -220 -100 -220 -115 N -P 3 0 1 0 -300 0 -220 0 -220 15 N -P 3 0 1 0 -300 100 -220 100 -220 75 N -P 3 0 1 0 -250 45 -250 -145 -220 -145 N -P 3 0 1 0 -250 45 -250 200 -300 200 N -P 3 0 1 0 -220 -175 -220 -200 -300 -200 N -P 3 0 1 0 -200 -350 -200 -400 -300 -400 N -P 3 0 1 0 -200 -330 -200 -300 -300 -300 N -P 3 0 1 0 -200 350 -200 300 -300 300 N -P 3 0 1 0 -200 370 -200 400 -300 400 N -P 3 0 1 0 20 -240 20 -50 -70 -50 N -P 3 0 1 0 25 125 25 25 -30 25 N -P 3 0 1 0 55 75 55 -125 -30 -125 N -P 3 0 1 0 80 -240 80 -25 160 -25 N -P 3 0 1 0 140 -240 220 -240 220 -175 N -P 3 0 1 0 190 -75 190 -165 -30 -165 N -P 3 0 1 0 220 -175 220 -125 300 -125 N -P 3 0 1 0 300 -180 300 -170 400 -170 N -P 3 0 1 0 300 -130 300 -120 400 -120 N -P 3 0 1 0 300 -80 300 -70 400 -70 N -P 3 0 1 0 300 -30 300 -20 400 -20 N -P 3 0 1 0 300 20 300 30 400 30 N -P 3 0 1 0 300 70 300 80 400 80 N -P 3 0 1 0 300 120 300 130 400 130 N -P 3 0 1 0 300 170 300 180 400 180 N -P 4 0 1 0 -220 -330 -200 -350 -180 -330 -220 -330 F -P 4 0 1 0 -220 370 -200 350 -180 370 -220 370 F -P 4 0 1 0 -180 -175 -180 -200 -90 -200 -90 -165 N -P 4 0 1 0 -180 -145 -135 -145 -135 -240 -40 -240 N -P 4 0 1 0 -180 -115 -180 -100 -90 -100 -90 -125 N -P 4 0 1 0 -180 15 -180 0 -90 0 -90 25 N -P 4 0 1 0 -180 45 -135 45 -135 -50 -70 -50 N -P 4 0 1 0 -180 75 -180 100 -90 100 -90 65 N -P 4 0 1 0 300 175 0 175 0 65 -30 65 N -P 5 0 1 0 -180 -360 -160 -380 -160 -370 -170 -380 -160 -380 N -P 5 0 1 0 -180 -340 -160 -360 -160 -350 -170 -360 -160 -360 N -P 5 0 1 0 -180 340 -160 320 -160 330 -170 320 -160 320 N -P 5 0 1 0 -180 360 -160 340 -160 350 -170 340 -160 340 N -P 9 0 1 0 -40 -297 -30 -302 -50 -312 -30 -322 -50 -332 -30 -342 -50 -352 -30 -362 -40 -367 N -P 9 0 1 0 20 -297 30 -302 10 -312 30 -322 10 -332 30 -342 10 -352 30 -362 20 -367 N -P 9 0 1 0 80 -297 90 -302 70 -312 90 -322 70 -332 90 -342 70 -352 90 -362 80 -367 N -P 9 0 1 0 140 -297 150 -302 130 -312 150 -322 130 -332 150 -342 130 -352 150 -362 140 -367 N -X TD+ 1 -400 100 100 R 31 31 1 1 P -X TD- 2 -400 0 100 R 31 31 1 1 P -X CTD 3 -400 200 100 R 31 31 1 1 P -X RD+ 4 -400 -100 100 R 31 31 1 1 P -X RD- 5 -400 -200 100 R 31 31 1 1 P -X VC1+ 7 -50 550 100 D 31 31 1 1 P -X VC1- 8 50 550 100 D 31 31 1 1 P -X VC2+ 9 200 550 100 D 31 31 1 1 P -X VC2- 10 300 550 100 D 31 31 1 1 P -X L1A 11 -400 -300 100 R 31 31 1 1 P -X L1K 12 -400 -400 100 R 31 31 1 1 P -X L2A 13 -400 400 100 R 31 31 1 1 P -X L2K 14 -400 300 100 R 31 31 1 1 P -X GND 15 50 -550 100 U 31 31 1 1 P -ENDDRAW -ENDDEF -# -#End Library diff --git a/KiCAD/Converters_DCDC_ACDC.pretty/ACDC-Converter_TRACO-TMLM-05.kicad_mod b/KiCAD/Converters_DCDC_ACDC.pretty/ACDC-Converter_TRACO-TMLM-05.kicad_mod deleted file mode 100644 index 4bb23db7..00000000 --- a/KiCAD/Converters_DCDC_ACDC.pretty/ACDC-Converter_TRACO-TMLM-05.kicad_mod +++ /dev/null @@ -1,31 +0,0 @@ -(module ACDC-Converter_TRACO-TMLM-05 (layer F.Cu) (tedit 54B1C965) - (descr "ACDC-Converter, TRACO TMLM 05,") - (tags "ACDC-Converter, TRACO TMLM 05,") - (fp_text reference REF** (at 0 -16.8) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value ACDC-Converter_TRACO-TMLM-05 (at 0 -14.8) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user "AC Uin" (at 45.6 0 90) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user - (at 2.5 10) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user + (at 2.5 -0.1) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -2.8 -13.25) (end -2.8 13.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start 48.7 -13.25) (end 48.7 13.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.8 -13.25) (end 48.7 -13.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.8 13.25) (end 48.7 13.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.54 12.9997) (end -2.54 -12.9997) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.54 -12.9997) (end 48.4582 -12.9997) (layer F.SilkS) (width 0.15)) - (fp_line (start 48.4582 -12.9997) (end 48.4582 12.9997) (layer F.SilkS) (width 0.15)) - (fp_line (start 48.4582 12.9997) (end -2.54 12.9997) (layer F.SilkS) (width 0.15)) - (pad 1 thru_hole circle (at 0 0) (size 2.79908 2.79908) (drill 1.39954) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole circle (at 0 10.16) (size 2.79908 2.79908) (drill 1.39954) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole circle (at 45.72 10.16) (size 2.79908 2.79908) (drill 1.39954) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole circle (at 45.72 -10.16) (size 2.79908 2.79908) (drill 1.39954) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Converters_DCDC_ACDC.pretty/ACDC-Converter_TRACO-TMLM-10-20.kicad_mod b/KiCAD/Converters_DCDC_ACDC.pretty/ACDC-Converter_TRACO-TMLM-10-20.kicad_mod deleted file mode 100644 index 448299d6..00000000 --- a/KiCAD/Converters_DCDC_ACDC.pretty/ACDC-Converter_TRACO-TMLM-10-20.kicad_mod +++ /dev/null @@ -1,32 +0,0 @@ -(module ACDC-Converter_TRACO-TMLM-10-20 (layer F.Cu) (tedit 54B1C9AF) - (descr "ACDC-Converter, TRACO TMLM 10, TRACO TMLM 20,") - (tags "ACDC-Converter, TRACO TMLM 10, TRACO TMLM 20,") - (fp_text reference REF** (at 0 -17.85) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value ACDC-Converter_TRACO-TMLM-10-20 (at 0 -15.85) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user "AC Uin" (at 45.8 -0.2 90) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user - (at 2.4 -0.1) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user + (at 2.4 10) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -3.65 -14.25) (end -3.65 14.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start 49.85 -14.25) (end 49.85 14.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start -3.65 -14.25) (end 49.85 -14.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start -3.65 14.25) (end 49.85 14.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start -3.401 14.0005) (end -3.401 -14.0005) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.401 -14.0005) (end 49.5986 -14.0005) (layer F.SilkS) (width 0.15)) - (fp_line (start 49.5986 -14.0005) (end 49.5986 14.0005) (layer F.SilkS) (width 0.15)) - (fp_line (start 49.5986 14.0005) (end -3.401 14.0005) (layer F.SilkS) (width 0.15)) - (pad 1 thru_hole circle (at 0 0) (size 2.79908 2.79908) (drill 1.39954) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole circle (at 0 10.16) (size 2.79908 2.79908) (drill 1.39954) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole circle (at 45.72 10.16) (size 2.79908 2.79908) (drill 1.39954) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole circle (at 45.72 -10.16) (size 2.79908 2.79908) (drill 1.39954) (layers *.Cu *.Mask F.SilkS)) - (pad "" np_thru_hole circle (at 35.9182 9.39038) (size 4.0005 4.0005) (drill 4.0005) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Converters_DCDC_ACDC.pretty/ACDC-Converter_Traco-TMLM-04.kicad_mod b/KiCAD/Converters_DCDC_ACDC.pretty/ACDC-Converter_Traco-TMLM-04.kicad_mod deleted file mode 100644 index e89bb7f5..00000000 --- a/KiCAD/Converters_DCDC_ACDC.pretty/ACDC-Converter_Traco-TMLM-04.kicad_mod +++ /dev/null @@ -1,35 +0,0 @@ -(module ACDC-Converter_Traco-TMLM-04 (layer F.Cu) (tedit 54B1C9E7) - (descr "ACDC-Converter, TRACO, TMLM Series 04,") - (tags "ACDC-Converter, TRACO, TMLM Series 04,") - (fp_text reference REF** (at 0 -7.35) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value ACDC-Converter_Traco-TMLM-04 (at 0 -5.35) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user Uin (at 25.2 21) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user - (at 25.1 2) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user + (at 21.5 2) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -4 -3.75) (end -4 24.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start 33.5 -3.75) (end 33.5 24.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start -4 -3.75) (end 33.5 -3.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start -4 24.75) (end 33.5 24.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start 32.7508 24.5009) (end 33.2486 24.5009) (layer F.SilkS) (width 0.15)) - (fp_line (start 33.2486 24.5009) (end 33.2486 -3.5001) (layer F.SilkS) (width 0.15)) - (fp_line (start 33.2486 -3.5001) (end -3.749 -3.5001) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.749 -3.5001) (end -3.749 24.5009) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.749 24.5009) (end 32.7508 24.5009) (layer F.SilkS) (width 0.15)) - (pad 1 thru_hole circle (at 0 0) (size 1.99898 1.99898) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 7 thru_hole circle (at 0 21.0008) (size 1.99898 1.99898) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole circle (at 21.4986 0) (size 1.99898 1.99898) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 6 thru_hole circle (at 21.4986 21.0008) (size 1.99898 1.99898) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole circle (at 25.2502 0) (size 1.99898 1.99898) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole circle (at 28.9992 0) (size 1.99898 1.99898) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole circle (at 28.9992 21.0008) (size 1.99898 1.99898) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-CONV_ST_GS-R400V-2_Obsolete.kicad_mod b/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-CONV_ST_GS-R400V-2_Obsolete.kicad_mod deleted file mode 100644 index 3a3e7abe..00000000 --- a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-CONV_ST_GS-R400V-2_Obsolete.kicad_mod +++ /dev/null @@ -1,54 +0,0 @@ -(module DCDC-CONV_ST_GS-R400V-2_Obsolete (layer F.Cu) (tedit 54B1C911) - (descr "DCDC-Converter, ST, GS-R400V/2, Obsolete, RevA, 24Mar2011,") - (tags "DCDC-Converter, ST, GS-R400V/2, Obsolete, RevA, 24Mar2011,") - (fp_text reference REF** (at 0 -7.6) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value DCDC-CONV_ST_GS-R400V-2_Obsolete (at 0 -5.6) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user GS-R400V/2 (at -5.9995 21.5 90) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user DCDC-Converter (at -10 21.5 90) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user ST (at -14.0005 21.5 90) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user Adjust (at -19.99998 35.50048 90) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user + (at -15.00126 37.49946) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user OUT (at -4.00052 41.49996 90) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user GND (at 9.99996 37.49946 90) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user GND (at 9.99996 5.50054 90) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user + (at -0.00002 5.50054 90) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user IN (at 5.00124 3.49902 90) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -35.85 -4.05) (end -35.85 47.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start 15.45 -4.05) (end 15.45 47.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start -35.85 -4.05) (end 15.45 -4.05) (layer F.CrtYd) (width 0.05)) - (fp_line (start -35.85 47.25) (end 15.45 47.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start -10.2006 47.0002) (end 15.1994 47.0002) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.1994 47.0002) (end 15.1994 -3.79984) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.1994 -3.79984) (end -35.6006 -3.79984) (layer F.SilkS) (width 0.15)) - (fp_line (start -35.6006 -3.79984) (end -35.6006 47.0002) (layer F.SilkS) (width 0.15)) - (fp_line (start -35.6006 47.0002) (end -10.2006 47.0002) (layer F.SilkS) (width 0.15)) - (pad 2 thru_hole oval (at 10.099 0) (size 2.54 5.00126) (drill 1.30048) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 10.099 43.2003) (size 2.54 5.00126) (drill 1.30048) (layers *.Cu *.Mask F.SilkS)) - (pad 1 thru_hole oval (at 0 0) (size 2.54 5.00126) (drill 1.30048) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at -15.301 43.2003) (size 2.54 5.00126) (drill 1.30048) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole oval (at -20 43.2003) (size 2.54 5.00126) (drill 1.30048) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_BOTHHAND_CF-Serie.kicad_mod b/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_BOTHHAND_CF-Serie.kicad_mod deleted file mode 100644 index 9e3e58c0..00000000 --- a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_BOTHHAND_CF-Serie.kicad_mod +++ /dev/null @@ -1,84 +0,0 @@ -(module DCDC-Conv_BOTHHAND_CF-Serie (layer F.Cu) (tedit 54B1C6B1) - (descr "DCDC-Converter, BOTHHAND, Type CF-Serie, RevA, 28Mar2011") - (tags "DCDC-Converter, BOTHHAND, Type CF-Serie, RevA, 28Mar2011") - (fp_text reference REF** (at 0 -6.65) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value DCDC-Conv_BOTHHAND_CF-Serie (at 0 -4.65) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -1.5 -3.1) (end -1.5 31) (layer F.CrtYd) (width 0.05)) - (fp_line (start 16.75 -3.1) (end 16.75 31) (layer F.CrtYd) (width 0.05)) - (fp_line (start -1.5 -3.1) (end 16.75 -3.1) (layer F.CrtYd) (width 0.05)) - (fp_line (start -1.5 31) (end 16.75 31) (layer F.CrtYd) (width 0.05)) - (fp_line (start 1.92024 -2.6289) (end 0.02032 -2.6289) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.92024 -2.4308) (end 0.02032 -2.4308) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.82118 -2.1311) (end 0.11938 -2.1311) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.82118 -1.8288) (end 0.11938 -1.8288) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.92024 -2.7305) (end 1.92024 -1.5291) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.92024 -1.5291) (end 0.02032 -1.5291) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.02032 -2.8296) (end 0.02032 -1.43) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.02032 -2.8296) (end -0.77978 -2.8296) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.77978 -2.8296) (end -0.77978 -1.43) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.77978 21.369) (end -0.77978 1.3691) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.02032 30.7696) (end -0.77978 30.7696) (layer F.SilkS) (width 0.15)) - (fp_line (start -0.77978 30.7696) (end -0.77978 29.271) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.2197 -2.8296) (end 16.0198 -2.8296) (layer F.SilkS) (width 0.15)) - (fp_line (start 16.0198 -2.8296) (end 16.0198 -1.43) (layer F.SilkS) (width 0.15)) - (fp_line (start 16.0198 21.369) (end 16.0198 1.3691) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.2197 30.7696) (end 16.0198 30.7696) (layer F.SilkS) (width 0.15)) - (fp_line (start 16.0198 30.7696) (end 16.0198 29.271) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.02032 3.97002) (end 0.02032 1.27) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.2197 4.06908) (end 15.2197 1.3691) (layer F.SilkS) (width 0.15)) - (fp_text user CF-Serie (at 6 14 270) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user BOTHHAND (at 8 14 270) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user DCDC-Converter (at 10 14 270) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user 1 (at 0.8 2.2) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user -Vout (at 10.697776 22.861866) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user -Vout (at 4.698296 22.861866) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user +Vout (at 10.697776 25.363766) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user +Vout (at 4.698296 25.363766) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user -Vin (at 10.697776 27.863126) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user -Vin (at 4.698296 27.863126) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user +Vin (at 10.397776 -0.037834) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user +Vin (at 4.398296 -0.037834) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start 0.02032 21.369) (end 0.02032 3.97002) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.02032 30.7696) (end 0.02032 29.37) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.2197 29.37) (end 15.2197 30.7696) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.2197 4.06908) (end 15.2197 21.369) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.2197 -2.8296) (end 15.2197 -1.43) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.2197 -2.8296) (end 0.02032 -2.8296) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.02032 30.7696) (end 15.2197 30.7696) (layer F.SilkS) (width 0.15)) - (pad 1 thru_hole oval (at 0 0) (size 2.49936 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 10 thru_hole oval (at 0 22.86) (size 2.49936 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 11 thru_hole oval (at 0 25.4) (size 2.49936 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 12 thru_hole oval (at 0 27.94) (size 2.49936 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 13 thru_hole oval (at 15.24 27.94) (size 2.49936 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 14 thru_hole oval (at 15.24 25.4) (size 2.49936 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 15 thru_hole oval (at 15.24 22.86) (size 2.49936 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 24 thru_hole oval (at 15.24 0) (size 2.49936 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_CINCON_EC5BE12_18-36VDCto12VDC1250mA.kicad_mod b/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_CINCON_EC5BE12_18-36VDCto12VDC1250mA.kicad_mod deleted file mode 100644 index 2e23acb2..00000000 --- a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_CINCON_EC5BE12_18-36VDCto12VDC1250mA.kicad_mod +++ /dev/null @@ -1,50 +0,0 @@ -(module DCDC-Conv_CINCON_EC5BE12_18-36VDCto12VDC1250mA (layer F.Cu) (tedit 54B1C7DA) - (descr "DCDC-Converter, CINCON, EC5BE12, 18-36VDC to 12VDC 1250mA, RevA") - (tags "DCDC-Converter, CINCON, EC5BE12, 18-36VDC to 12VDC 1250mA, RevA") - (fp_text reference REF** (at 0 -14) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value DCDC-Conv_CINCON_EC5BE12_18-36VDCto12VDC1250mA (at 0 -12) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user "In: 18-36VDC" (at 9.705154 2.675046 90) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user 1250mA (at -25.854846 2.675046 90) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user "Out: 12VDC" (at -28.394846 2.675046 90) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user EC5BE12 (at -8.074846 2.675046 90) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user CINCON (at -13.154846 2.675046 90) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user -Vout (at -20.774846 7.755046 180) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user +Vout (at -20.774846 -2.404954 180) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user -Vin (at -0.454846 10.295046 180) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user +Vin (at -0.454846 -4.944954 180) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -35.8 -10.4) (end -35.8 15.5) (layer F.CrtYd) (width 0.05)) - (fp_line (start 15.5 -10.4) (end 15.5 15.5) (layer F.CrtYd) (width 0.05)) - (fp_line (start -35.8 -10.4) (end 15.5 -10.4) (layer F.CrtYd) (width 0.05)) - (fp_line (start -35.8 15.5) (end 15.5 15.5) (layer F.CrtYd) (width 0.05)) - (fp_line (start 15.24 2.54) (end 15.24 -10.16) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.24 -10.16) (end -35.56 -10.16) (layer F.SilkS) (width 0.15)) - (fp_line (start -35.56 -10.16) (end -35.56 15.24) (layer F.SilkS) (width 0.15)) - (fp_line (start -35.56 15.24) (end 15.24 15.24) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.24 15.24) (end 15.24 2.54) (layer F.SilkS) (width 0.15)) - (pad 1 thru_hole oval (at 0 0) (size 5.9944 2.54) (drill 1.524) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 0 5.08) (size 5.9944 2.54) (drill 1.524) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at -20.32 -7.62) (size 5.9944 2.54) (drill 1.524) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole oval (at -20.32 12.7) (size 5.9944 2.54) (drill 1.524) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_CINCON_EC6C11_18-36Vto5V5A.kicad_mod b/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_CINCON_EC6C11_18-36Vto5V5A.kicad_mod deleted file mode 100644 index 28590b66..00000000 --- a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_CINCON_EC6C11_18-36Vto5V5A.kicad_mod +++ /dev/null @@ -1,63 +0,0 @@ -(module DCDC-Conv_CINCON_EC6C11_18-36Vto5V5A (layer F.Cu) (tedit 54B1C715) - (descr "DCDC-Converter, CINCON, EC6C11, 18-36V to 5V 5A, RevA") - (tags "DCDC-Converter, CINCON, EC6C11, 18-36V to 5V 5A, RevA") - (fp_text reference REF** (at 0 -8.9) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value DCDC-Conv_CINCON_EC6C11_18-36Vto5V5A (at 0 -6.9) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -3.25 -5.35) (end -3.25 45.95) (layer F.CrtYd) (width 0.05)) - (fp_line (start 48.95 -5.35) (end 48.95 45.95) (layer F.CrtYd) (width 0.05)) - (fp_line (start -3.25 -5.35) (end 48.95 -5.35) (layer F.CrtYd) (width 0.05)) - (fp_line (start -3.25 45.95) (end 48.95 45.95) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.54 -2.54) (end -2.54 -5.08) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.54 12.7) (end -2.54 2.54) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.54 20.32) (end -2.54 17.78) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.54 45.72) (end -2.54 25.4) (layer F.SilkS) (width 0.15)) - (fp_line (start 48.26 2.54) (end 48.26 -5.08) (layer F.SilkS) (width 0.15)) - (fp_line (start 48.26 11.43) (end 48.26 7.62) (layer F.SilkS) (width 0.15)) - (fp_line (start 48.26 22.86) (end 48.26 17.78) (layer F.SilkS) (width 0.15)) - (fp_line (start 48.26 45.72) (end 48.26 27.94) (layer F.SilkS) (width 0.15)) - (fp_text user +Vout (at 40.433874 25.790812 270) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user -Vout (at 40.433874 15.630812 270) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user Trim (at 37.893874 5.470812) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user +Vin (at 4.873874 25.790812 270) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user -Vin (at 4.873874 10.550812 270) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user Remote (at 7.413874 0.390812) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user "In: 18-36VDC" (at 9.953874 20.710812 270) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user "Out: 5VDC 5000mA" (at 30.273874 20.710812 270) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user EC6C11 (at 15.033874 20.710812 270) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user CINCON (at 20.113874 20.710812 270) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user DCDC-Conv. (at 25.193874 20.710812 270) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start 48.26 45.72) (end -2.54 45.72) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.54 -5.08) (end 48.26 -5.08) (layer F.SilkS) (width 0.15)) - (pad 1 thru_hole oval (at 0 0) (size 5.99948 2.54) (drill 1.524) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 0 22.86) (size 5.99948 2.54) (drill 1.524) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 0 15.24) (size 5.99948 2.54) (drill 1.524) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole oval (at 45.72 5.08) (size 5.99948 2.54) (drill 1.524) (layers *.Cu *.Mask F.SilkS)) - (pad 6 thru_hole oval (at 45.72 15.24) (size 5.99948 2.54) (drill 1.524) (layers *.Cu *.Mask F.SilkS)) - (pad 7 thru_hole oval (at 45.72 25.4) (size 5.99948 2.54) (drill 1.524) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_DELTA_DPS05U09D_5VDCto9VDC.kicad_mod b/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_DELTA_DPS05U09D_5VDCto9VDC.kicad_mod deleted file mode 100644 index c228729e..00000000 --- a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_DELTA_DPS05U09D_5VDCto9VDC.kicad_mod +++ /dev/null @@ -1,77 +0,0 @@ -(module DCDC-Conv_DELTA_DPS05U09D_5VDCto9VDC (layer F.Cu) (tedit 54B1C715) - (descr "DCDC-Converter, DELTA, Type DPS05U09D, 5VDC to 9VDC, RevA, 28Mar2011") - (tags "DCDC-Converter, DELTA, Type DPS05U09D, 5VDC to 9VDC, RevA, 28Mar2011") - (fp_text reference REF** (at 0 -6.65) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value DCDC-Conv_DELTA_DPS05U09D_5VDCto9VDC (at 0 -4.65) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user NC (at 10.920911 2.384831) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user NC (at 3.420291 2.384831) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user DPS05U09D (at 4.921431 12.384811 270) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user DELTA (at 8.921931 12.885191 270) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user DCDC-Converter (at 11.921671 12.885191 270) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -1.5 -3.1) (end -1.5 31) (layer F.CrtYd) (width 0.05)) - (fp_line (start 16.75 -3.1) (end 16.75 31) (layer F.CrtYd) (width 0.05)) - (fp_line (start -1.5 -3.1) (end 16.75 -3.1) (layer F.CrtYd) (width 0.05)) - (fp_line (start -1.5 31) (end 16.75 31) (layer F.CrtYd) (width 0.05)) - (fp_line (start 9.22052 11.4702) (end 9.22052 11.9705) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.62052 -2.0295) (end 1.62052 -1.5291) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.62052 -1.5291) (end 0.11938 -1.5291) (layer F.SilkS) (width 0.15)) - (fp_text user 1 (at 2.4 -2) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user -Vout (at 10.420531 22.885171) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user -Vout (at 4.421051 22.885171) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user +Vout (at 10.420531 25.387071) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user +Vout (at 4.421051 25.387071) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user -Vin (at 10.420531 27.886431) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user -Vin (at 4.421051 27.886431) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user +Vin (at 10.420531 -0.114529) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user +Vin (at 4.421051 -0.114529) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start 0.02032 -1.43) (end 0.02032 -2.8296) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.02032 21.369) (end 0.02032 3.97002) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.02032 30.7696) (end 0.02032 29.37) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.2197 29.37) (end 15.2197 30.7696) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.2197 4.06908) (end 15.2197 21.369) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.2197 -2.8296) (end 15.2197 -1.43) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.2197 -2.8296) (end 0.02032 -2.8296) (layer F.SilkS) (width 0.15)) - (fp_line (start 0.02032 30.7696) (end 15.2197 30.7696) (layer F.SilkS) (width 0.15)) - (pad 2 thru_hole oval (at 0 2.54) (size 2.49936 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 1 thru_hole oval (at 0 0) (size 2.49936 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 10 thru_hole oval (at 0 22.86) (size 2.49936 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 11 thru_hole oval (at 0 25.4) (size 2.49936 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 12 thru_hole oval (at 0 27.94) (size 2.49936 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 13 thru_hole oval (at 15.24 27.94) (size 2.49936 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 14 thru_hole oval (at 15.24 25.4) (size 2.49936 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 15 thru_hole oval (at 15.24 22.86) (size 2.49936 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 23 thru_hole oval (at 15.24 2.54) (size 2.49936 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 24 thru_hole oval (at 15.24 0) (size 2.49936 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_MeanWell_NID60.kicad_mod b/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_MeanWell_NID60.kicad_mod deleted file mode 100644 index 54575ab8..00000000 --- a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_MeanWell_NID60.kicad_mod +++ /dev/null @@ -1,30 +0,0 @@ -(module DCDC-Conv_MeanWell_NID60 (layer F.Cu) (tedit 54AE3F84) - (descr "MeanWell NID60") - (tags "MeanWell NID60") - (fp_text reference REF** (at 0 -5.6) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value DCDC-Conv_MeanWell_NID60 (at 0 -3.6) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -2.85 -2) (end -2.85 50.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start 5.85 -2) (end 5.85 50.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.85 -2) (end 5.85 -2) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.85 50.25) (end 5.85 50.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.605 -1.762) (end 5.6 -1.762) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.605 -1.762) (end 5.605 50.022) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.6 50.022) (end -2.605 50.022) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.605 50.022) (end -2.605 -1.762) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.605 1.27) (end 5.6 1.27) (layer F.SilkS) (width 0.15)) - (pad 1 thru_hole oval (at 0 0) (size 3.81 1.524) (drill 1) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 0 2.54) (size 3.81 1.524) (drill 1) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 0 5.08) (size 3.81 1.524) (drill 1) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 0 7.62) (size 3.81 1.524) (drill 1) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole oval (at 0 10.16) (size 3.81 1.524) (drill 1) (layers *.Cu *.Mask F.SilkS)) - (pad 6 thru_hole oval (at 0 35.56) (size 3.81 1.524) (drill 1) (layers *.Cu *.Mask F.SilkS)) - (pad 7 thru_hole oval (at 0 38.1) (size 3.81 1.524) (drill 1) (layers *.Cu *.Mask F.SilkS)) - (pad 8 thru_hole oval (at 0 40.64) (size 3.81 1.524) (drill 1) (layers *.Cu *.Mask F.SilkS)) - (pad 9 thru_hole oval (at 0 43.18) (size 3.81 1.524) (drill 1) (layers *.Cu *.Mask F.SilkS)) - (pad 10 thru_hole oval (at 0 45.72) (size 3.81 1.524) (drill 1) (layers *.Cu *.Mask F.SilkS)) - (pad 11 thru_hole oval (at 0 48.26) (size 3.81 1.524) (drill 1) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_Recom_R-78HBxx-0.5.kicad_mod b/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_Recom_R-78HBxx-0.5.kicad_mod deleted file mode 100644 index 1d161034..00000000 --- a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_Recom_R-78HBxx-0.5.kicad_mod +++ /dev/null @@ -1,21 +0,0 @@ -(module DCDC-Conv_Recom_R-78HBxx-0.5 (layer F.Cu) (tedit 54AF95A7) - (descr "Recom R-78HBxx.0.5") - (tags "Recom DCDC R-78") - (fp_text reference REF** (at 0 -5.85) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value DCDC-Conv_Recom_R-78HBxx-0.5 (at 0 -3.85) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -3.5 -2.25) (end -3.5 6.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start 8.6 -2.25) (end 8.6 6.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start -3.5 -2.25) (end 8.6 -2.25) (layer F.CrtYd) (width 0.05)) - (fp_line (start -3.5 6.75) (end 8.6 6.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start 8.34 -2) (end 8.34 6.5) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.34 6.5) (end -3.26 6.5) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.26 6.5) (end -3.26 -2) (layer F.SilkS) (width 0.15)) - (fp_line (start -3.26 -2) (end 8.34 -2) (layer F.SilkS) (width 0.15)) - (pad 2 thru_hole oval (at 2.54 0) (size 2.032 2.54) (drill 1) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 5.08 0) (size 2.032 2.54) (drill 1) (layers *.Cu *.Mask F.SilkS)) - (pad 1 thru_hole oval (at 0 0) (size 2.032 2.54) (drill 1) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_TRACO_TED-1212_Single_9-18VDCto12VDC160mA.kicad_mod b/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_TRACO_TED-1212_Single_9-18VDCto12VDC160mA.kicad_mod deleted file mode 100644 index 06c0d8b2..00000000 --- a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_TRACO_TED-1212_Single_9-18VDCto12VDC160mA.kicad_mod +++ /dev/null @@ -1,68 +0,0 @@ -(module DCDC-Conv_TRACO_TED-1212_Single_9-18VDCto12VDC160mA (layer F.Cu) (tedit 54B1C911) - (descr "DCDC-Converter, TRACO, TED-1212, Single output, 9-18VDC to 12VDC 160m, RevA") - (tags "DCDC-Converter, TRACO, TED-1212, Single output, 9-18VDC to 12VDC 160m, RevA") - (fp_text reference REF** (at 0 -5.85) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value DCDC-Conv_TRACO_TED-1212_Single_9-18VDCto12VDC160mA (at 0 -3.85) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user "OUT:12VDC 160mA" (at 7.6 18.88) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user IN:9-18VDC (at 7.6 16.34) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user "Single Output" (at 7.6 13.8) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user -Out (at 7.6 22.69) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user +Out (at 7.6 25.23) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user -Vin (at 7.6 27.77) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user NC (at 7.6 6.18) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user NC (at 7.6 3.64) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user +Vin (at 7.6 1.1) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user "TRACO TED-1212" (at 7.6 11.26) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user DCDC-Converter (at 7.6 8.72) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -2.65 -2.3) (end -2.65 30.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start 17.85 -2.3) (end 17.85 30.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.65 -2.3) (end 17.85 -2.3) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.65 30.2) (end 17.85 30.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start 5.62102 -2.02946) (end 5.62102 -1.03124) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.62102 -1.03124) (end 6.61924 -0.03048) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.61924 -0.03048) (end 8.62076 -0.03048) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.62076 -0.03048) (end 9.61898 -1.03124) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.61898 -1.03124) (end 9.61898 -2.02946) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.62 29.9695) (end 17.62 -2.02946) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.62 -2.02946) (end -2.37998 -2.02946) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.37998 -2.02946) (end -2.37998 29.9695) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.37998 29.9695) (end 17.62 29.9695) (layer F.SilkS) (width 0.15)) - (pad 1 thru_hole oval (at 0 0) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 0 2.54) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 0 5.08) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 10 thru_hole oval (at 0 22.86) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 11 thru_hole oval (at 0 25.4) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 12 thru_hole oval (at 0 27.94) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 13 thru_hole oval (at 15.24 27.94) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 14 thru_hole oval (at 15.24 25.4) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 15 thru_hole oval (at 15.24 22.86) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 22 thru_hole oval (at 15.24 5.08) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 23 thru_hole oval (at 15.24 2.54) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 24 thru_hole oval (at 15.24 0) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_TRACO_TED-xxxx_Dual.kicad_mod b/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_TRACO_TED-xxxx_Dual.kicad_mod deleted file mode 100644 index 208e8201..00000000 --- a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_TRACO_TED-xxxx_Dual.kicad_mod +++ /dev/null @@ -1,65 +0,0 @@ -(module DCDC-Conv_TRACO_TED-xxxx_Dual (layer F.Cu) (tedit 54B1C911) - (descr "DCDC-Converter, TRACO, TED-xxxx, Dual output, generic, RevA") - (tags "DCDC-Converter, TRACO, TED-xxxx, Dual output, generic, RevA") - (fp_text reference REF** (at 0 -5.85) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value DCDC-Conv_TRACO_TED-xxxx_Dual (at 0 -3.85) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user "Dual Output" (at 7.6 19.08) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user -Out1 (at 7.6 22.89) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user +Out1 (at 7.6 25.43) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user -Vin (at 7.6 27.97) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user +Out2 (at 7.6 6.38) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user -Out2 (at 7.6 3.84) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user +Vin (at 7.6 1.3) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user TED-xxxx (at 7.6 16.54) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user TRACO (at 7.6 14) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user DCDC-Converter (at 7.6 11.46) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -2.65 -2.3) (end -2.65 30.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start 17.85 -2.3) (end 17.85 30.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.65 -2.3) (end 17.85 -2.3) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.65 30.2) (end 17.85 30.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start 5.62102 -2.02946) (end 5.62102 -1.03124) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.62102 -1.03124) (end 6.61924 -0.03048) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.61924 -0.03048) (end 8.62076 -0.03048) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.62076 -0.03048) (end 9.61898 -1.03124) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.61898 -1.03124) (end 9.61898 -2.02946) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.62 29.9695) (end 17.62 -2.02946) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.62 -2.02946) (end -2.37998 -2.02946) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.37998 -2.02946) (end -2.37998 29.9695) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.37998 29.9695) (end 17.62 29.9695) (layer F.SilkS) (width 0.15)) - (pad 1 thru_hole oval (at 0 0) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 0 2.54) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 0 5.08) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 10 thru_hole oval (at 0 22.86) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 11 thru_hole oval (at 0 25.4) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 12 thru_hole oval (at 0 27.94) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 13 thru_hole oval (at 15.24 27.94) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 14 thru_hole oval (at 15.24 25.4) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 15 thru_hole oval (at 15.24 22.86) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 22 thru_hole oval (at 15.24 5.08) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 23 thru_hole oval (at 15.24 2.54) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 24 thru_hole oval (at 15.24 0) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_TRACO_TED-xxxx_Single.kicad_mod b/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_TRACO_TED-xxxx_Single.kicad_mod deleted file mode 100644 index 8bf7ba3c..00000000 --- a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_TRACO_TED-xxxx_Single.kicad_mod +++ /dev/null @@ -1,65 +0,0 @@ -(module DCDC-Conv_TRACO_TED-xxxx_Single (layer F.Cu) (tedit 54B1C911) - (descr "DCDC-Converter, TRACO, TED-xxxx, Single output, generic, RevA") - (tags "DCDC-Converter, TRACO, TED-xxxx, Single output, generic, RevA") - (fp_text reference REF** (at 0 -5.85) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value DCDC-Conv_TRACO_TED-xxxx_Single (at 0 -3.85) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user "Single Output" (at 7.4 19.08) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user -Out (at 7.4 22.89) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user +Out (at 7.4 25.43) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user -Vin (at 7.4 27.97) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user NC (at 7.4 6.38) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user NC (at 7.4 3.84) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user +Vin (at 7.4 1.3) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user TED-xxxx (at 7.4 16.54) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user TRACO (at 7.4 14) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user DCDC-Converter (at 7.4 11.46) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -2.65 -2.3) (end -2.65 30.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start 17.85 -2.3) (end 17.85 30.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.65 -2.3) (end 17.85 -2.3) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.65 30.2) (end 17.85 30.2) (layer F.CrtYd) (width 0.05)) - (fp_line (start 5.62102 -2.02946) (end 5.62102 -1.03124) (layer F.SilkS) (width 0.15)) - (fp_line (start 5.62102 -1.03124) (end 6.61924 -0.03048) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.61924 -0.03048) (end 8.62076 -0.03048) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.62076 -0.03048) (end 9.61898 -1.03124) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.61898 -1.03124) (end 9.61898 -2.02946) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.62 29.9695) (end 17.62 -2.02946) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.62 -2.02946) (end -2.37998 -2.02946) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.37998 -2.02946) (end -2.37998 29.9695) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.37998 29.9695) (end 17.62 29.9695) (layer F.SilkS) (width 0.15)) - (pad 1 thru_hole oval (at 0 0) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 0 2.54) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 0 5.08) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 10 thru_hole oval (at 0 22.86) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 11 thru_hole oval (at 0 25.4) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 12 thru_hole oval (at 0 27.94) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 13 thru_hole oval (at 15.24 27.94) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 14 thru_hole oval (at 15.24 25.4) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 15 thru_hole oval (at 15.24 22.86) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 22 thru_hole oval (at 15.24 5.08) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 23 thru_hole oval (at 15.24 2.54) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 24 thru_hole oval (at 15.24 0) (size 2.99974 1.50114) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_TRACO_TEN10-1212_9-18VDCto12VDC830mA.kicad_mod b/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_TRACO_TEN10-1212_9-18VDCto12VDC830mA.kicad_mod deleted file mode 100644 index 68a9d546..00000000 --- a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_TRACO_TEN10-1212_9-18VDCto12VDC830mA.kicad_mod +++ /dev/null @@ -1,50 +0,0 @@ -(module DCDC-Conv_TRACO_TEN10-1212_9-18VDCto12VDC830mA (layer F.Cu) (tedit 54B1C887) - (descr "DCDC-Converter, TRACO, TEN10-1212, 9-18VDC to 12VDC 830mA, RevA") - (tags "DCDC-Converter, TRACO, TEN10-1212, 9-18VDC to 12VDC 830mA, RevA") - (fp_text reference REF** (at 0 -14) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value DCDC-Conv_TRACO_TEN10-1212_9-18VDCto12VDC830mA (at 0 -12) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user "In: 9-18VDC" (at 9.747856 2.411628 90) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user 830mA (at -25.812144 2.411628 90) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user "Out: 12VDC" (at -28.352144 2.411628 90) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user TEN10-1212 (at -8.032144 2.411628 90) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user TRACO (at -13.112144 2.411628 90) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user -Vout (at -20.732144 7.491628 180) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user +Vout (at -20.732144 -2.668372 180) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user -Vin (at -0.412144 10.031628 180) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user +Vin (at -0.412144 -5.208372 180) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -35.8 -10.4) (end -35.8 15.5) (layer F.CrtYd) (width 0.05)) - (fp_line (start 15.5 -10.4) (end 15.5 15.5) (layer F.CrtYd) (width 0.05)) - (fp_line (start -35.8 -10.4) (end 15.5 -10.4) (layer F.CrtYd) (width 0.05)) - (fp_line (start -35.8 15.5) (end 15.5 15.5) (layer F.CrtYd) (width 0.05)) - (fp_line (start 15.24 2.54) (end 15.24 -10.16) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.24 -10.16) (end -35.56 -10.16) (layer F.SilkS) (width 0.15)) - (fp_line (start -35.56 -10.16) (end -35.56 15.24) (layer F.SilkS) (width 0.15)) - (fp_line (start -35.56 15.24) (end 15.24 15.24) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.24 15.24) (end 15.24 2.54) (layer F.SilkS) (width 0.15)) - (pad 1 thru_hole oval (at 0 0) (size 5.9944 2.54) (drill 1.524) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 0 5.08) (size 5.9944 2.54) (drill 1.524) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at -20.32 -7.62) (size 5.9944 2.54) (drill 1.524) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole oval (at -20.32 12.7) (size 5.9944 2.54) (drill 1.524) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_TRACO_TEN10-xxxx.kicad_mod b/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_TRACO_TEN10-xxxx.kicad_mod deleted file mode 100644 index 38c8f66d..00000000 --- a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_TRACO_TEN10-xxxx.kicad_mod +++ /dev/null @@ -1,41 +0,0 @@ -(module DCDC-Conv_TRACO_TEN10-xxxx (layer F.Cu) (tedit 54B1C887) - (descr "DCDC-Converter, TRACO, TEN10-xxxx, Generic, RevA") - (tags "DCDC-Converter, TRACO, TEN10-xxxx, Generic, RevA") - (fp_text reference REF** (at 0 -14) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value DCDC-Conv_TRACO_TEN10-xxxx (at 0 -12) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user TEN10-xxxx (at -8.085315 2.794491 90) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user TRACO (at -13.165315 2.794491 90) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user -Vout (at -20.785315 7.874491 180) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user +Vout (at -20.785315 -2.285509 180) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user -Vin (at -0.465315 10.414491 180) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user +Vin (at -0.465315 -4.825509 180) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -35.8 -10.4) (end -35.8 15.5) (layer F.CrtYd) (width 0.05)) - (fp_line (start 15.5 -10.4) (end 15.5 15.5) (layer F.CrtYd) (width 0.05)) - (fp_line (start -35.8 -10.4) (end 15.5 -10.4) (layer F.CrtYd) (width 0.05)) - (fp_line (start -35.8 15.5) (end 15.5 15.5) (layer F.CrtYd) (width 0.05)) - (fp_line (start 15.24 2.54) (end 15.24 -10.16) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.24 -10.16) (end -35.56 -10.16) (layer F.SilkS) (width 0.15)) - (fp_line (start -35.56 -10.16) (end -35.56 15.24) (layer F.SilkS) (width 0.15)) - (fp_line (start -35.56 15.24) (end 15.24 15.24) (layer F.SilkS) (width 0.15)) - (fp_line (start 15.24 15.24) (end 15.24 2.54) (layer F.SilkS) (width 0.15)) - (pad 1 thru_hole oval (at 0 0) (size 5.9944 2.54) (drill 1.524) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 0 5.08) (size 5.9944 2.54) (drill 1.524) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at -20.32 -7.62) (size 5.9944 2.54) (drill 1.524) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole oval (at -20.32 12.7) (size 5.9944 2.54) (drill 1.524) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_TRACO_TME05xx_TME12xx.kicad_mod b/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_TRACO_TME05xx_TME12xx.kicad_mod deleted file mode 100644 index b42f74fa..00000000 --- a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_TRACO_TME05xx_TME12xx.kicad_mod +++ /dev/null @@ -1,47 +0,0 @@ -(module DCDC-Conv_TRACO_TME05xx_TME12xx (layer F.Cu) (tedit 54B1C911) - (descr "DCDC-Converter, Traco, TME05xx, TME12xx, RevA, 27Mar2011,") - (tags "DCDC-Converter, Traco, TME05xx, TME12xx, RevA, 27Mar2011,") - (fp_text reference REF** (at 0 -8.2) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value DCDC-Conv_TRACO_TME05xx_TME12xx (at 0 -6.2) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user 1 (at -1.4 1) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -2.15 -4.65) (end -2.15 1.95) (layer F.CrtYd) (width 0.05)) - (fp_line (start 9.85 -4.65) (end 9.85 1.95) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.15 -4.65) (end 9.85 -4.65) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.15 1.95) (end 9.85 1.95) (layer F.CrtYd) (width 0.05)) - (fp_line (start -0.99822 1.7018) (end -1.89992 1.7018) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.6002 1.7018) (end 0.8509 1.7018) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.15036 1.7018) (end 3.35026 1.7018) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.60146 1.7018) (end 5.95122 1.7018) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.6012 1.7018) (end 8.50138 1.7018) (layer F.SilkS) (width 0.15)) - (fp_text user OUT (at 6.49936 -3.39898) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user IN (at 1.00026 -3.39898) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user + (at 7.50012 -2.40076) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user + (at 2.49886 -2.40076) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user - (at 5.00076 -2.40076) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user - (at -0.0005 -2.40076) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start 9.6012 1.7018) (end 9.6012 -4.39928) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.6012 -4.39928) (end -1.89992 -4.39928) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.89992 -4.39928) (end -1.89992 1.7018) (layer F.SilkS) (width 0.15)) - (pad 1 thru_hole oval (at 0 0) (size 1.50114 2.99974) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2.54 0) (size 1.50114 2.99974) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 5.08 0) (size 1.50114 2.99974) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 7.62 0) (size 1.50114 2.99974) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_TRACO_TMH-xxxx_Dual.kicad_mod b/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_TRACO_TMH-xxxx_Dual.kicad_mod deleted file mode 100644 index 0cb15396..00000000 --- a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_TRACO_TMH-xxxx_Dual.kicad_mod +++ /dev/null @@ -1,49 +0,0 @@ -(module DCDC-Conv_TRACO_TMH-xxxx_Dual (layer F.Cu) (tedit 54B1C911) - (descr "DCDC-Converter, TRACO, TMH-xxxx, Dual output, RevA, 27Mar2011") - (tags "DCDC-Converter, TRACO, TMH-xxxx, Dual output, RevA, 27Mar2011") - (fp_text reference REF** (at 0 -10.05) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value DCDC-Conv_TRACO_TMH-xxxx_Dual (at 0 -8.05) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user 1 (at -1.6 0.4) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user Vout (at 14.29986 -4.59898) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user Vin (at 1.30014 -4.59898) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user Com (at 10.79974 -4.10114 90) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user + (at 12.80126 -2.6) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user - (at 7.29962 -2.6) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user - (at 2.79874 -2.6) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user + (at -0.201 -2.6) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -2.6 -6.5) (end -2.6 1.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start 17.4 -6.5) (end 17.4 1.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.6 -6.5) (end 17.4 -6.5) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.6 1.75) (end 17.4 1.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start -1.20142 1.24968) (end -2.35204 1.24968) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.44906 1.24968) (end 3.69824 1.24968) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.1501 1.24968) (end 13.8481 1.24968) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.1501 1.24968) (end 17.1501 -6.2484) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.1501 -6.2484) (end -2.35204 -6.2484) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.35204 -6.2484) (end -2.35204 1.24968) (layer F.SilkS) (width 0.15)) - (pad 1 thru_hole oval (at 0 0) (size 1.50114 2.99974) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2.54 0) (size 1.50114 2.99974) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 7.62 0) (size 1.50114 2.99974) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole oval (at 10.16 0) (size 1.50114 2.99974) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 6 thru_hole oval (at 12.7 0) (size 1.50114 2.99974) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_TRACO_TMH-xxxx_Dual_RevB.kicad_mod b/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_TRACO_TMH-xxxx_Dual_RevB.kicad_mod deleted file mode 100644 index 02b4fcf2..00000000 --- a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_TRACO_TMH-xxxx_Dual_RevB.kicad_mod +++ /dev/null @@ -1,54 +0,0 @@ -(module DCDC-Conv_TRACO_TMH-xxxx_Dual_RevB (layer F.Cu) (tedit 54B1C911) - (descr "DCDC-Converter, TRACO, TMH-xxxx, Dual output, RevB, 06 Apr 2011") - (tags "DCDC-Converter, TRACO, TMH-xxxx, Dual output, RevB, 06 Apr 2011") - (fp_text reference REF** (at 0 -5.25) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value DCDC-Conv_TRACO_TMH-xxxx_Dual_RevB (at 0 -3.25) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -0.8995 5.20096) (end -0.59978 5.50068) (layer F.SilkS) (width 0.15)) - (fp_circle (center -0.8995 5.20096) (end -0.35086 5.6988) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.6 -1.75) (end -2.6 6.5) (layer F.CrtYd) (width 0.05)) - (fp_line (start 17.4 -1.75) (end 17.4 6.5) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.6 -1.75) (end 17.4 -1.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.6 6.5) (end 17.4 6.5) (layer F.CrtYd) (width 0.05)) - (fp_line (start -1.15062 -1.24968) (end -2.35204 -1.24968) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.4478 -1.24968) (end 1.19888 -1.24968) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.44906 -1.24968) (end 3.74904 -1.24968) (layer F.SilkS) (width 0.15)) - (fp_line (start 8.94842 -1.24968) (end 8.6995 -1.24968) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.5494 -1.24968) (end 11.2979 -1.24968) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.1501 -1.24968) (end 13.8989 -1.24968) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.35204 6.2484) (end 17.1501 6.2484) (layer F.SilkS) (width 0.15)) - (fp_text user 1 (at -1.6 -0.2) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user Vout (at 14.44972 4.44912) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user Vin (at 1.5008 4.35006) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user Com (at 10.50002 3.99954 90) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user + (at 12.80126 2.6) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user - (at 7.29962 2.6) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user - (at 2.79874 2.6) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user + (at -0.201 2.6) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start 17.1501 6.2484) (end 17.1501 -1.24968) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.35204 -1.24968) (end -2.35204 6.2484) (layer F.SilkS) (width 0.15)) - (pad 1 thru_hole oval (at 0 0) (size 1.50114 2.99974) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2.55016 0) (size 1.50114 2.99974) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 7.59968 0) (size 1.50114 2.99974) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 5 thru_hole oval (at 10.1498 0) (size 1.50114 2.99974) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 6 thru_hole oval (at 12.7 0) (size 1.50114 2.99974) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_TRACO_TMH-xxxx_Single.kicad_mod b/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_TRACO_TMH-xxxx_Single.kicad_mod deleted file mode 100644 index da23524c..00000000 --- a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_TRACO_TMH-xxxx_Single.kicad_mod +++ /dev/null @@ -1,46 +0,0 @@ -(module DCDC-Conv_TRACO_TMH-xxxx_Single (layer F.Cu) (tedit 54B1CC8C) - (descr "DCDC-Converter, TRACO, TMH-xxxx, Single output, RevA, 27Mar2011") - (tags "DCDC-Converter, TRACO, TMH-xxxx, Single output, RevA, 27Mar2011") - (fp_text reference REF** (at 0 -10.05) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value DCDC-Conv_TRACO_TMH-xxxx_Single (at 0 -8.05) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user Vout (at 9.49898 -4.49898) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user + (at 12.50126 -2.5) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user - (at 7.5 -2.5) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user 1 (at -1.75 0.5) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user Vin (at 1.00014 -4.49898) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user - (at 2.49874 -2.5) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user + (at -0.00062 -2.5) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -2.6 -6.5) (end -2.6 1.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start 17.4 -6.5) (end 17.4 1.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.6 -6.5) (end 17.4 -6.5) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.6 1.75) (end 17.4 1.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start -1.20142 1.24968) (end -2.35204 1.24968) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.2992 1.24968) (end 3.74904 1.24968) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.4478 1.24968) (end 8.84936 1.24968) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.1501 1.24968) (end 13.9497 1.24968) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.1501 1.24968) (end 17.1501 -6.2484) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.1501 -6.2484) (end -2.35204 -6.2484) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.35204 -6.2484) (end -2.35204 1.24968) (layer F.SilkS) (width 0.15)) - (pad 1 thru_hole oval (at 0 0) (size 1.50114 2.99974) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2.54 0) (size 1.50114 2.99974) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 7.62 0) (size 1.50114 2.99974) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 6 thru_hole oval (at 12.7 0) (size 1.50114 2.99974) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_TRACO_TMH-xxxx_Single_RevB.kicad_mod b/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_TRACO_TMH-xxxx_Single_RevB.kicad_mod deleted file mode 100644 index c82b76b8..00000000 --- a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_TRACO_TMH-xxxx_Single_RevB.kicad_mod +++ /dev/null @@ -1,49 +0,0 @@ -(module DCDC-Conv_TRACO_TMH-xxxx_Single_RevB (layer F.Cu) (tedit 54B1CC8C) - (descr "DCDC-Converter, TRACO, TMH-xxxx, Single output, RevB, 06Apr2011") - (tags "DCDC-Converter, TRACO, TMH-xxxx, Single output, RevB, 06Apr2011") - (fp_text reference REF** (at 0 -5.25) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value DCDC-Conv_TRACO_TMH-xxxx_Single_RevB (at 0 -3.25) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_circle (center -1.04964 5.00082) (end -0.95058 5.3488) (layer F.SilkS) (width 0.15)) - (fp_circle (center -1.04964 5.00082) (end -0.54926 5.4504) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.6 -1.75) (end -2.6 6.5) (layer F.CrtYd) (width 0.05)) - (fp_line (start 17.4 -1.75) (end 17.4 6.5) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.6 -1.75) (end 17.4 -1.75) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.6 6.5) (end 17.4 6.5) (layer F.CrtYd) (width 0.05)) - (fp_line (start -1.15062 -1.24968) (end -2.35204 -1.24968) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.4478 -1.24968) (end 1.14808 -1.24968) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.39826 -1.24968) (end 3.79984 -1.24968) (layer F.SilkS) (width 0.15)) - (fp_line (start 11.3995 -1.24968) (end 8.84936 -1.24968) (layer F.SilkS) (width 0.15)) - (fp_line (start 17.1501 -1.24968) (end 13.8989 -1.24968) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.35204 6.2484) (end 17.0993 6.2484) (layer F.SilkS) (width 0.15)) - (fp_text user Vout (at 10.10096 4.20072) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user + (at 12.50126 2.25) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user - (at 7.5 2.25) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user 1 (at -1.75 0) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user Vin (at 1.24906 4.29978) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user - (at 2.49874 2.25) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user + (at -0.00062 2.25) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start 17.1501 6.2484) (end 17.1501 -1.24968) (layer F.SilkS) (width 0.15)) - (fp_line (start -2.35204 -1.24968) (end -2.35204 6.2484) (layer F.SilkS) (width 0.15)) - (pad 1 thru_hole oval (at 0 0) (size 1.50114 2.99974) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2.55016 0) (size 1.50114 2.99974) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 7.59968 0) (size 1.50114 2.99974) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 6 thru_hole oval (at 12.7 0) (size 1.50114 2.99974) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_Traco_TME24xx.kicad_mod b/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_Traco_TME24xx.kicad_mod deleted file mode 100644 index b772c6a5..00000000 --- a/KiCAD/Converters_DCDC_ACDC.pretty/DCDC-Conv_Traco_TME24xx.kicad_mod +++ /dev/null @@ -1,49 +0,0 @@ -(module DCDC-Conv_Traco_TME24xx (layer F.Cu) (tedit 54B1CC8C) - (descr "DCDC-Converter, Traco, TME24xx, RevA, 27Mar2011,") - (tags "DCDC-Converter, Traco, TME24xx, RevA, 27Mar2011,") - (fp_text reference REF** (at 0 -9.2) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value DCDC-Conv_Traco_TME24xx (at 0 -7.2) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -2.15 -5.65) (end -2.15 1.95) (layer F.CrtYd) (width 0.05)) - (fp_line (start 9.85 -5.65) (end 9.85 1.95) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.15 -5.65) (end 9.85 -5.65) (layer F.CrtYd) (width 0.05)) - (fp_line (start -2.15 1.95) (end 9.85 1.95) (layer F.CrtYd) (width 0.05)) - (fp_line (start 9.6012 -4.39928) (end 9.6012 -5.3975) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.6012 -5.3975) (end -1.89992 -5.3975) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.89992 -5.3975) (end -1.89992 -4.39928) (layer F.SilkS) (width 0.15)) - (fp_text user 1 (at -1.25 1) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start -0.99822 1.7018) (end -1.89992 1.7018) (layer F.SilkS) (width 0.15)) - (fp_line (start 1.6002 1.7018) (end 0.8509 1.7018) (layer F.SilkS) (width 0.15)) - (fp_line (start 4.15036 1.7018) (end 3.35026 1.7018) (layer F.SilkS) (width 0.15)) - (fp_line (start 6.60146 1.7018) (end 5.95122 1.7018) (layer F.SilkS) (width 0.15)) - (fp_line (start 9.6012 1.7018) (end 8.50138 1.7018) (layer F.SilkS) (width 0.15)) - (fp_text user OUT (at 6.49936 -3.4986) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user IN (at 1.00026 -3.4986) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user + (at 7.50012 -2.50038) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user + (at 2.49886 -2.50038) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user - (at 5.00076 -2.50038) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text user - (at -0.0005 -2.50038) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start 9.6012 1.7018) (end 9.6012 -4.39928) (layer F.SilkS) (width 0.15)) - (fp_line (start -1.89992 -4.39928) (end -1.89992 1.7018) (layer F.SilkS) (width 0.15)) - (pad 1 thru_hole oval (at 0 0) (size 1.50114 2.99974) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 2 thru_hole oval (at 2.54 0) (size 1.50114 2.99974) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 3 thru_hole oval (at 5.08 0) (size 1.50114 2.99974) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) - (pad 4 thru_hole oval (at 7.62 0) (size 1.50114 2.99974) (drill 1.00076) (layers *.Cu *.Mask F.SilkS)) -) diff --git a/KiCAD/Converters_DCDC_ACDC.pretty/dc-dc.dcm b/KiCAD/Converters_DCDC_ACDC.pretty/dc-dc.dcm deleted file mode 100644 index 7a51ad85..00000000 --- a/KiCAD/Converters_DCDC_ACDC.pretty/dc-dc.dcm +++ /dev/null @@ -1,1061 +0,0 @@ -EESchema-DOCLIB Version 2.0 -# -$CMP ADP2108 -D 3MHz switching buck regulator, 600mA fixed output voltage in SOT23-5 package -K Voltage regulator switching buck fixed output analog -F http://www.analog.com/media/en/technical-documentation/data-sheets/ADP2108.pdf -$ENDCMP -# -$CMP APE1707H-12-HF -D 12V 2A, 150KHz PWM Buck DC/DC Converter, TO252-5 (D-PAK) -K 12V 2A 150KHz PWM Buck DC/DC -$ENDCMP -# -$CMP APE1707H-33-HF -D 3.3V 2A, 150KHz PWM Buck DC/DC Converter, TO252-5 (D-PAK) -K 3.3V 2A 150KHz PWM Buck DC/DC -$ENDCMP -# -$CMP APE1707H-50-HF -D 5.0V 2A, 150KHz PWM Buck DC/DC Converter, TO252-5 (D-PAK) -K 5V 2A 150KHz PWM Buck DC/DC -$ENDCMP -# -$CMP APE1707H-HF -D Adjustable 2A, 150KHz PWM Buck DC/DC Converter, TO252-5 (D-PAK) -K Adjustable 2A 150KHz PWM Buck DC/DC -$ENDCMP -# -$CMP APE1707M-12-HF -D APE1707M-33-HF, 12V 2A, 150KHz PWM Buck DC/DC Converter, SO8 -K 12V 2A 150KHz PWM Buck DC/DC -$ENDCMP -# -$CMP APE1707M-33-HF -D 3.3V 2A, 150KHz PWM Buck DC/DC Converter, SO8 -K 3.3V 2A 150KHz PWM Buck DC/DC -$ENDCMP -# -$CMP APE1707M-50-HF -D 5.0V 2A, 150KHz PWM Buck DC/DC Converter, SO8 -K 5V 2A 150KHz PWM Buck DC/DC -$ENDCMP -# -$CMP APE1707M-HF -D Adjustable 2A, 150KHz PWM Buck DC/DC Converter, SO8 -K Adjustable 2A 150KHz PWM Buck DC/DC -$ENDCMP -# -$CMP BD9001F -D 48V 2A, Flexible Step-Down Switching Regulator, SO8 -K DC-DC Step-Down Switching Regulator -F http://rohmfs.rohm.com/en/products/databook/datasheet/ic/power/switching_regulator/bd9778f-e.pdf -$ENDCMP -# -$CMP BD9778F -D 35V 2A, Flexible Step-Down Switching Regulator, SO8 -K DC-DC Step-Down Switching Regulator -F http://rohmfs.rohm.com/en/products/databook/datasheet/ic/power/switching_regulator/bd9778f-e.pdf -$ENDCMP -# -$CMP BD9778HFP -D 35V 2A, Flexible Step-Down Switching Regulator, HRP7 -K DC-DC Step-Down Switching Regulator -F http://rohmfs.rohm.com/en/products/databook/datasheet/ic/power/switching_regulator/bd9778f-e.pdf -$ENDCMP -# -$CMP BD9781HFP -D 35V 4A, Flexible Step-Down Switching Regulator, HRP7 -K DC-DC Step-Down Switching Regulator -F http://rohmfs.rohm.com/en/products/databook/datasheet/ic/power/switching_regulator/bd9778f-e.pdf -$ENDCMP -# -$CMP BD9G341EFJ -D 12V-76V input voltage range 3A output current -K BD9G341EFJ, Buck Converter -F http://rohmfs.rohm.com/en/products/databook/datasheet/ic/power/switching_regulator/bd9778f-e.pdf -$ENDCMP -# -$CMP GL2576-12SF8DR -D 12V 3A, 52KHz Step Down Converter, SO8 -K 12V 3A 52KHz Buck DC/DC -F http://www.dianyuan.com/bbs/u/54/437861181916300.pdf -$ENDCMP -# -$CMP GL2576-12TA5PR -D 12V 3A, 52KHz Step Down Converter, TD2P-5 -K 12V 3A 52KHz Buck DC/DC -F http://www.dianyuan.com/bbs/u/54/437861181916300.pdf -$ENDCMP -# -$CMP GL2576-12TA5R -D 12V 3A, 52KHz Step Down Converter, TO263-5 (D2-PAK) -K 12V 3A 52KHz Buck DC/DC -F http://www.dianyuan.com/bbs/u/54/437861181916300.pdf -$ENDCMP -# -$CMP GL2576-12TB5T -D 12V 3A, 52KHz Step Down Converter, TO220-5 -K 12V 3A 52KHz Buck DC/DC -F http://www.dianyuan.com/bbs/u/54/437861181916300.pdf -$ENDCMP -# -$CMP GL2576-15SF8DR -D 15V 3A, 52KHz Step Down Converter, SO8 -K 15V 3A 52KHz Buck DC/DC -F http://www.dianyuan.com/bbs/u/54/437861181916300.pdf -$ENDCMP -# -$CMP GL2576-15TA5PR -D 15V 3A, 52KHz Step Down Converter, TD2P-5 -K 15V 3A 52KHz Buck DC/DC -F http://www.dianyuan.com/bbs/u/54/437861181916300.pdf -$ENDCMP -# -$CMP GL2576-15TA5R -D 15V 3A, 52KHz Step Down Converter, TO263-5 (D2-PAK) -K 15V 3A 52KHz Buck DC/DC -F http://www.dianyuan.com/bbs/u/54/437861181916300.pdf -$ENDCMP -# -$CMP GL2576-15TB5T -D 15V 3A, 52KHz Step Down Converter, TO220-5 -K 15V 3A 52KHz Buck DC/DC -F http://www.dianyuan.com/bbs/u/54/437861181916300.pdf -$ENDCMP -# -$CMP GL2576-3.3SF8DR -D 3.3V 3A, 52KHz Step Down Converter, SO8 -K 3.3V 3A 52KHz Buck DC/DC -F http://www.dianyuan.com/bbs/u/54/437861181916300.pdf -$ENDCMP -# -$CMP GL2576-3.3TA5PR -D 3.3V 3A, 52KHz Step Down Converter, TD2P-5 -K 3.3V 3A 52KHz Buck DC/DC -F http://www.dianyuan.com/bbs/u/54/437861181916300.pdf -$ENDCMP -# -$CMP GL2576-3.3TA5R -D 3.3V 3A, 52KHz Step Down Converter, TO263-5 (D2-PAK) -K 3.3V 3A 52KHz Buck DC/DC -F http://www.dianyuan.com/bbs/u/54/437861181916300.pdf -$ENDCMP -# -$CMP GL2576-3.3TB5T -D 3.3V 3A, 52KHz Step Down Converter, TO220-5 -K 3.3V 3A 52KHz Buck DC/DC -F http://www.dianyuan.com/bbs/u/54/437861181916300.pdf -$ENDCMP -# -$CMP GL2576-5.0SF8DR -D 5V 3A, 52KHz Step Down Converter, SO8 -K 5V 3A 52KHz Buck DC/DC -F http://www.dianyuan.com/bbs/u/54/437861181916300.pdf -$ENDCMP -# -$CMP GL2576-5.0TA5PR -D 5V 3A, 52KHz Step Down Converter, TD2P-5 -K 5V 3A 52KHz Buck DC/DC -F http://www.dianyuan.com/bbs/u/54/437861181916300.pdf -$ENDCMP -# -$CMP GL2576-5.0TA5R -D 5V 3A, 52KHz Step Down Converter, TO263-5 (D2-PAK) -K 5V 3A 52KHz Buck DC/DC -F http://www.dianyuan.com/bbs/u/54/437861181916300.pdf -$ENDCMP -# -$CMP GL2576-5.0TB5T -D 5V 3A, 52KHz Step Down Converter, TO220-5 -K 5V 3A 52KHz Buck DC/DC -F http://www.dianyuan.com/bbs/u/54/437861181916300.pdf -$ENDCMP -# -$CMP GL2576-ASF8DR -D Adjustable 3A, 52KHz Step Down Converter, SO8 -K Adjustable 3A 52KHz Buck DC/DC -F http://www.dianyuan.com/bbs/u/54/437861181916300.pdf -$ENDCMP -# -$CMP GL2576-ATA5PR -D Adjustable 3A, 52KHz Step Down Converter, TD2P-5 -K Adjustable 3A 52KHz Buck DC/DC -F http://www.dianyuan.com/bbs/u/54/437861181916300.pdf -$ENDCMP -# -$CMP GL2576-ATA5R -D Adjustable 3A, 52KHz Step Down Converter, TO263-5 (D2-PAK) -K Adjustable 3A 52KHz Buck DC/DC -F http://www.dianyuan.com/bbs/u/54/437861181916300.pdf -$ENDCMP -# -$CMP GL2576-ATB5T -D Adjustable 3A, 52KHz Step Down Converter, TO220-5 -K Adjustable 3A 52KHz Buck DC/DC -F http://www.dianyuan.com/bbs/u/54/437861181916300.pdf -$ENDCMP -# -$CMP ICL7660 -D Switched-Capacitor Voltage Converter, 1.5V to 10.0V operating supply voltage, 10mA with a 0.5V output drop -K monolithic CMOS switched capacitor voltage converter invert double divide multiply -F http://datasheets.maximintegrated.com/en/ds/ICL7660-MAX1044.pdf -$ENDCMP -# -$CMP ISL8117 -D Synchronous step-down PWM controller, 4.5v to 60v input, 0.6v to 54v output -K PWM step down buck converter controller synchronous POL -F https://www.intersil.com/content/dam/Intersil/documents/isl8/isl8117.pdf -$ENDCMP -# -$CMP LM2574HVH-12 -D LM2574N, 12V, 0.5A Step-Down VR, High Votage Input -K SIMPLE SWITCHER® Step-Down Voltage Regulator 12V 500mA HV -F www.national.com/ds/LM/LM2574.pdf -$ENDCMP -# -$CMP LM2574HVH-15 -D LM2574N, 15V, 0.5A Step-Down VR, High Votage Input -K SIMPLE SWITCHER® Step-Down Voltage Regulator 15V 500mA HV -F www.national.com/ds/LM/LM2574.pdf -$ENDCMP -# -$CMP LM2574HVH-3.3 -D LM2574N, 3.3V, 0.5A Step-Down VR, High Votage Input -K SIMPLE SWITCHER® Step-Down Voltage Regulator 3.3V 500mA HV -F www.national.com/ds/LM/LM2574.pdf -$ENDCMP -# -$CMP LM2574HVH-5 -D LM2574N, 5V, 0.5A Step-Down VR, High Votage Input -K SIMPLE SWITCHER® Step-Down Voltage Regulator 5V 500mA HV -F www.national.com/ds/LM/LM2574.pdf -$ENDCMP -# -$CMP LM2574HVH-ADJ -D LM2574N, Adjustable Output, 0.5A Step-Down VR, High Votage Input -K SIMPLE SWITCHER® Step-Down Voltage Regulator Adjustable 500mA HV -F www.national.com/ds/LM/LM2574.pdf -$ENDCMP -# -$CMP LM2574N-12 -D 12V, 0.5A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 12V 500mA -F www.national.com/ds/LM/LM2574.pdf -$ENDCMP -# -$CMP LM2574N-15 -D 15V, 0.5A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 15V 500mA -F www.national.com/ds/LM/LM2574.pdf -$ENDCMP -# -$CMP LM2574N-3.3 -D 3.3V, 0.5A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 3.3V 500mA -F www.national.com/ds/LM/LM2574.pdf -$ENDCMP -# -$CMP LM2574N-5 -D 5V, 0.5A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 5V 500mA -F www.national.com/ds/LM/LM2574.pdf -$ENDCMP -# -$CMP LM2574N-ADJ -D Adjustable Output, 0.5A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator Adjustable 500mA -F www.national.com/ds/LM/LM2574.pdf -$ENDCMP -# -$CMP LM2576HVS-12 -D TO-263, 12V 3A Step-Down VR High Voltage Input -K SIMPLE SWITCHER® Step-Down Voltage Regulator 12V 3A High Voltage -F http://www.ti.com/lit/ds/symlink/lm2576.pdf -$ENDCMP -# -$CMP LM2576HVS-15 -D TO-263, 15V 3A Step-Down VR High Voltage Input -K SIMPLE SWITCHER® Step-Down Voltage Regulator 15V 3A High Voltage -F http://www.ti.com/lit/ds/symlink/lm2576.pdf -$ENDCMP -# -$CMP LM2576HVS-3.3 -D TO-263, 3.3V 3A Step-Down VR High Voltage Input -K SIMPLE SWITCHER® Step-Down Voltage Regulator 3.3V 3A High Voltage -F http://www.ti.com/lit/ds/symlink/lm2576.pdf -$ENDCMP -# -$CMP LM2576HVS-5 -D TO-263, 5V 3A Step-Down VR High Voltage Input -K SIMPLE SWITCHER® Step-Down Voltage Regulator 5V 3A High Voltage -F http://www.ti.com/lit/ds/symlink/lm2576.pdf -$ENDCMP -# -$CMP LM2576HVS-ADJ -D TO-263, Adjustable Output 3A Step-Down VR High Voltage Input -K SIMPLE SWITCHER® Step-Down Voltage Regulator 3A Adjustable High Voltage -F http://www.ti.com/lit/ds/symlink/lm2576.pdf -$ENDCMP -# -$CMP LM2576HVT-12 -D LM2576HVS, TO-220-5, 12V 3A Step-Down VR High Voltage Input -K SIMPLE SWITCHER® Step-Down Voltage Regulator 12V 3A High Voltage -F http://www.ti.com/lit/ds/symlink/lm2576.pdf -$ENDCMP -# -$CMP LM2576HVT-15 -D LM2576HVS, TO-220-5, 15V 3A Step-Down VR High Voltage Input -K SIMPLE SWITCHER® Step-Down Voltage Regulator 15V 3A High Voltage -F http://www.ti.com/lit/ds/symlink/lm2576.pdf -$ENDCMP -# -$CMP LM2576HVT-3.3 -D LM2576HVS, TO-220-5, 3.3V 3A Step-Down VR High Voltage Input -K SIMPLE SWITCHER® Step-Down Voltage Regulator 3.3V 3A High Voltage -F http://www.ti.com/lit/ds/symlink/lm2576.pdf -$ENDCMP -# -$CMP LM2576HVT-5 -D LM2576HVS, TO-220-5, 5V 3A Step-Down VR High Voltage Input -K SIMPLE SWITCHER® Step-Down Voltage Regulator 5V 3A High Voltage -F http://www.ti.com/lit/ds/symlink/lm2576.pdf -$ENDCMP -# -$CMP LM2576HVT-ADJ -D LM2576HVS, TO-220-5, Adjustable Output 3A Step-Down VR High Voltage Input -K SIMPLE SWITCHER® Step-Down Voltage Regulator 3A Adjustable High Voltage -F http://www.ti.com/lit/ds/symlink/lm2576.pdf -$ENDCMP -# -$CMP LM2576S-12 -D TO-263, 12V 3A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 12V 3A -F http://www.ti.com/lit/ds/symlink/lm2576.pdf -$ENDCMP -# -$CMP LM2576S-15 -D TO-263, 15V 3A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 15V 3A -F http://www.ti.com/lit/ds/symlink/lm2576.pdf -$ENDCMP -# -$CMP LM2576S-3.3 -D TO-263, 3.3V 3A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 3.3V 3A -F http://www.ti.com/lit/ds/symlink/lm2576.pdf -$ENDCMP -# -$CMP LM2576S-5 -D TO-263, 5V 3A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 5V 3A -F http://www.ti.com/lit/ds/symlink/lm2576.pdf -$ENDCMP -# -$CMP LM2576S-ADJ -D TO-263, Adjustable Output 3A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 3A Adjustable -F http://www.ti.com/lit/ds/symlink/lm2576.pdf -$ENDCMP -# -$CMP LM2576T-12 -D LM2576S, TO-220-5, 12V 3A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 12V 3A -F http://www.ti.com/lit/ds/symlink/lm2576.pdf -$ENDCMP -# -$CMP LM2576T-15 -D LM2576S, TO-220-5, 15V 3A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 15V 3A -F http://www.ti.com/lit/ds/symlink/lm2576.pdf -$ENDCMP -# -$CMP LM2576T-3.3 -D LM2576S, TO-220-5, 3.3V 3A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 3.3V 3A -F http://www.ti.com/lit/ds/symlink/lm2576.pdf -$ENDCMP -# -$CMP LM2576T-5 -D LM2576S, TO-220-5, 5V 3A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 5V 3A -F http://www.ti.com/lit/ds/symlink/lm2576.pdf -$ENDCMP -# -$CMP LM2576T-ADJ -D LM2576S, TO-220-5, Adjustable Output 3A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 3A Adjustable -F http://www.ti.com/lit/ds/symlink/lm2576.pdf -$ENDCMP -# -$CMP LM2595S-12 -D 12V, 1A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 12V 1A -F www.national.com/ds/LM/LM2595.pdf -$ENDCMP -# -$CMP LM2595S-3.3 -D 3.3V, 1A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 3.3V 1A -F www.national.com/ds/LM/LM2595.pdf -$ENDCMP -# -$CMP LM2595S-5 -D 5V, 1A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 5V 1A -F www.national.com/ds/LM/LM2595.pdf -$ENDCMP -# -$CMP LM2595S-ADJ -D Adjustable Output 1A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 1A Adjustable -F www.national.com/ds/LM/LM2595.pdf -$ENDCMP -# -$CMP LM2595T-12 -D LM2595M, 12V, 1A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 12V 1A -F www.national.com/ds/LM/LM2595.pdf -$ENDCMP -# -$CMP LM2595T-3.3 -D 3.3V, 1A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 3.3V 1A -F www.national.com/ds/LM/LM2595.pdf -$ENDCMP -# -$CMP LM2595T-5 -D 5V, 1A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 5V 1A -F www.national.com/ds/LM/LM2595.pdf -$ENDCMP -# -$CMP LM2595T-ADJ -D Adjustable Output 1A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 1A Adjustable -F www.national.com/ds/LM/LM2595.pdf -$ENDCMP -# -$CMP LM2596S-12 -D TO-263, 12V 3A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 12V 3A -F http://www.ti.com/lit/ds/symlink/lm2576.pdf -$ENDCMP -# -$CMP LM2596S-3.3 -D TO-263, 3.3V 3A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 3.3V 3A -F http://www.ti.com/lit/ds/symlink/lm2576.pdf -$ENDCMP -# -$CMP LM2596S-5 -D TO-263, 5V 3A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 5V 3A -F http://www.ti.com/lit/ds/symlink/lm2576.pdf -$ENDCMP -# -$CMP LM2596S-ADJ -D TO-263, Adjustable 3A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator Adjustable 3A -F http://www.ti.com/lit/ds/symlink/lm2576.pdf -$ENDCMP -# -$CMP LM2596T-12 -D TO220-5, 12V 3A 150kHz Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 12V 3A -F http://www.ti.com/lit/ds/symlink/lm2576.pdf -$ENDCMP -# -$CMP LM2596T-3.3 -D TO220-5, 3.3V 3A 150kHz Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 3.3V 3A -F http://www.ti.com/lit/ds/symlink/lm2576.pdf -$ENDCMP -# -$CMP LM2596T-5 -D TO220-5, 5V 3A 150kHz Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 5V 3A -F http://www.ti.com/lit/ds/symlink/lm2576.pdf -$ENDCMP -# -$CMP LM2596T-ADJ -D TO220-5, Adjustable 3A 150kHz Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator Adjustable 3A -F http://www.ti.com/lit/ds/symlink/lm2576.pdf -$ENDCMP -# -$CMP LM2672M-12 -D 12V, 1A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 12V 1A -F www.national.com/ds/LM/LM2672.pdf -$ENDCMP -# -$CMP LM2672M-3.3 -D 3.3V, 1A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 3.3V 1A -F www.national.com/ds/LM/LM2672.pdf -$ENDCMP -# -$CMP LM2672M-ADJ -D Adjustable Output, 1A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator -F www.national.com/ds/LM/LM2672.pdf -$ENDCMP -# -$CMP LM2672N-12 -D 12V, 1A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 12V 1A -F www.national.com/ds/LM/LM2672.pdf -$ENDCMP -# -$CMP LM2672N-3.3 -D 3.3V, 1A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 3.3V 1A -F www.national.com/ds/LM/LM2672.pdf -$ENDCMP -# -$CMP LM2672N-ADJ -D Adjustable Output, 1A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator -F www.national.com/ds/LM/LM2672.pdf -$ENDCMP -# -$CMP LM2674M-12 -D 12V, 500 mA Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 12V 500mA -F www.national.com/ds/LM/LM2674.pdf -$ENDCMP -# -$CMP LM2674M-3.3 -D 3.3V, 500 mA Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator -F www.national.com/ds/LM/LM2674.pdf -$ENDCMP -# -$CMP LM2674M-5.0 -D 5V, 500 mA Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator -F www.national.com/ds/LM/LM2674.pdf -$ENDCMP -# -$CMP LM2674M-ADJ -D Adjustable Output, 500 mA Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator -F www.national.com/ds/LM/LM2674.pdf -$ENDCMP -# -$CMP LM2674N-12 -D LM2674M, 12V, 500 mA Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 12V 500mA -F www.national.com/ds/LM/LM2674.pdf -$ENDCMP -# -$CMP LM2674N-3.3 -D LM2674M, 3.3V, 500 mA Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator -F www.national.com/ds/LM/LM2674.pdf -$ENDCMP -# -$CMP LM2674N-5.0 -D LM2674M, 5V, 500 mA Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator -F www.national.com/ds/LM/LM2674.pdf -$ENDCMP -# -$CMP LM2674N-ADJ -D LM2674M, Adjustable Output, 500 mA Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator -F www.national.com/ds/LM/LM2674.pdf -$ENDCMP -# -$CMP LM2675M-12 -D 12V, 1A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 12V 1A -F www.national.com/ds/LM/LM2675.pdf -$ENDCMP -# -$CMP LM2675M-3.3 -D 3.3V, 1A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 3.3V 1A -F www.national.com/ds/LM/LM2675.pdf -$ENDCMP -# -$CMP LM2675M-5 -D 5V, 1A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 5V 1A -F www.national.com/ds/LM/LM2675.pdf -$ENDCMP -# -$CMP LM2675M-ADJ -D Adjustable Output, 1A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator Adjustable -F www.national.com/ds/LM/LM2675.pdf -$ENDCMP -# -$CMP LM2675N-12 -D LM2675M, 12V, 1A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 12V 1A -F www.national.com/ds/LM/LM2675.pdf -$ENDCMP -# -$CMP LM2675N-3.3 -D LM2675M, 3.3V, 1A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 3.3V 1A -F www.national.com/ds/LM/LM2675.pdf -$ENDCMP -# -$CMP LM2675N-5 -D LM2675M, 5V, 1A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator 5V 1A -F www.national.com/ds/LM/LM2675.pdf -$ENDCMP -# -$CMP LM2675N-ADJ -D LM2675M, Adjustable Output, 1A Step-Down VR -K SIMPLE SWITCHER® Step-Down Voltage Regulator Adjustable -F www.national.com/ds/LM/LM2675.pdf -$ENDCMP -# -$CMP LM27313XMF -D 1A, 28Vout Boost Voltage Regulator, 1.6MHz Frequency, SOT-23-5 -K Miniature Step-Up Boost Voltage Regulator -F http://www.ti.com/lit/ds/symlink/lm27313.pdf -$ENDCMP -# -$CMP LM2731XMF -D LM27313, 1.8A, 22Vout Boost Voltage Regulator, 1.6MHz Frequency, SOT-23-5 -K Miniature Step-Up Boost Voltage Regulator -F http://www.ti.com/lit/ds/symlink/lm2731.pdf -$ENDCMP -# -$CMP LM2731YMF -D LM27313, 1.8A, 22Vout Boost Voltage Regulator, 600kHz Frequency, SOT-23-5 -K Miniature Step-Up Boost Voltage Regulator -F http://www.ti.com/lit/ds/symlink/lm2731.pdf -$ENDCMP -# -$CMP LM2733XMF -D LM27313, 1A, 40Vout Boost Voltage Regulator, 1.6MHz Frequency, SOT-23-5 -K Miniature Step-Up Boost Voltage Regulator -F http://www.ti.com/lit/ds/symlink/lm2733.pdf -$ENDCMP -# -$CMP LM2733YMF -D LM27313, 1A, 40Vout Boost Voltage Regulator, 600kHz Frequency, SOT-23-5 -K Miniature Step-Up Boost Voltage Regulator -F http://www.ti.com/lit/ds/symlink/lm2733.pdf -$ENDCMP -# -$CMP LM2735XMF -D LM27313, 2.1A, 24Vout Boost/Flyback/SEPIC Voltage Regulator, 520kHz/1.6MHz Frequency, SOT-23-5 -K Miniature Step-Up Boost Flyback SEPIC Voltage Regulator -F http://www.ti.com/lit/ds/symlink/lm2735.pdf -$ENDCMP -# -$CMP LM3407MY -D LED Lighting CC Floating Buck Switching Regulator, eMSOP-8 -K LED Step-Down Switching Regulator -F http://www.ti.com/lit/ds/symlink/lm3407.pdf -$ENDCMP -# -$CMP LM3670MF -D Miniature Step-Down DC-DC Converter, 2.5V < Vin < 5.5V -K DC-DC buck conveter step down voltage regulator -F www.ti.com/lit/ds/symlink/lm3670.pdf -$ENDCMP -# -$CMP LM5006MM -D 600 mA, 80V Constant On-Time Buck Switching Regulator -K Constant On-Time Buck Switching Regulator -F http://www.ti.com/lit/ds/symlink/lm5006.pdf -$ENDCMP -# -$CMP LM5007MM -D 700 mA, 80V Step-Down Switching Regulator -K Step-Down Switching Regulator -F www.national.com/ds/LM/LM5007.pdf -$ENDCMP -# -$CMP LM5007SD -D 700 mA, 80V Step-Down Switching Regulator -K Step-Down Switching Regulator -F www.national.com/ds/LM/LM5007.pdf -$ENDCMP -# -$CMP LM5008MM -D 500 mA, 100V Step-Down Switching Regulator -K Step-Down Switching Regulator -F www.national.com/ds/LM/LM5008.pdf -$ENDCMP -# -$CMP LM5008SD -D 500 mA, 100V Step-Down Switching Regulator -K Step-Down Switching Regulator -F www.national.com/ds/LM/LM5008.pdf -$ENDCMP -# -$CMP LM5008SDC -D 500 mA, 100V Step-Down Switching Regulator -K Step-Down Switching Regulator -F www.national.com/ds/LM/LM5008.pdf -$ENDCMP -# -$CMP LM5009MM -D 150 mA, 100V Step-Down Switching Regulator -K Step-Down Switching Regulator -F www.national.com/ds/LM/LM5009.pdf -$ENDCMP -# -$CMP LM5017MR -D 600 mA, 100V Step-Down Switching Regulator -K Step-Down Switching Regulator High Voltage -F http://www.national.com/ds/LM/LM5017.pdf -$ENDCMP -# -$CMP LM5017SD -D 600 mA, 100V Step-Down Switching Regulator -K Step-Down Switching Regulator High Voltage High Frequency -F http://www.national.com/ds/LM/LM5017.pdf -$ENDCMP -# -$CMP LMR10510XMF -D 1A, 5.5V Step-Down Voltage Regulator, 1.6MHz Frequency, SOT-23-5 -K Miniature Step-Down Buck Voltage Regulator -F http://www.ti.com/lit/ds/symlink/lmr10510.pdf -$ENDCMP -# -$CMP LMR10510YMF -D 1A, 5.5V Step-Down Voltage Regulator, 3MHz Frequency, SOT-23-5 -K Miniature Step-Down Buck Voltage Regulator -F http://www.ti.com/lit/ds/symlink/lmr10510.pdf -$ENDCMP -# -$CMP LMR10510YSD -D LM10510, 1A, 5.5V Step-Down Voltage Regulator, 3MHz Frequency -K Miniature Step-Down Buck Voltage Regulator -F http://www.ti.com/lit/ds/symlink/lmr10510.pdf -$ENDCMP -# -$CMP LMR62014XMF -D 1.4A, 20Vout Step-Up Voltage Regulator, 1.6MHz Frequency, SOT-23-5 -K Miniature Step-Up Boost Voltage Regulator -F http://www.ti.com/lit/ds/symlink/lmr62014.pdf -$ENDCMP -# -$CMP LMR62421XMF -D 2.1A, 24Vout Boost/SEPIC Voltage Regulator, 1.6MHz Frequency, SOT-23-5 -K Miniature Step-Up Boost SEPIC Voltage Regulator -F http://www.ti.com/lit/ds/symlink/lmr62421.pdf -$ENDCMP -# -$CMP LMR62421XSD -D 2.1A, 24Vout Step-Up Voltage Regulator, 1.6MHz Frequency -K Miniature Step-Up Boost SEPIC Voltage Regulator -F http://www.ti.com/lit/ds/symlink/lmr62421.pdf -$ENDCMP -# -$CMP LMR64010XMF -D LM64010, 1A, 40Vout Step-Up Voltage Regulator, 1.6MHz Frequency, SOT-23-5 -K Miniature Step-Up Boost Voltage Regulator -F http://www.ti.com/lit/ds/symlink/lmr64010.pdf -$ENDCMP -# -$CMP LT1054 -D Switched-Capacitor Voltage Converter with Regulator, output current 100mA, operating range 3.5V to 15V, low loss 1.1V at 100mA -K monolithic bipolar switched capacitor voltage converter regulator inverter doubler shutdown -F http://cds.linear.com/docs/en/datasheet/1054lfh.pdf -$ENDCMP -# -$CMP LT3439 -D Low EMI DC/DC converter. -F regulator/lt3439.pdf -$ENDCMP -# -$CMP LTC1044 -D Switched Capacitor Voltage Converter, 1.5V to 9V supply operation, 200uA Max No Load Supply Current at 5V -K monolithic CMOS switched capacitor voltage converter invert double divide multiply boost -F http://cds.linear.com/docs/en/datasheet/lt1044.pdf -$ENDCMP -# -$CMP LTC3630 -D High efficiency 65V 500mA synchronous step-down converter -K buck dc-dc switcher switching -F http://cds.linear.com/docs/en/datasheet/3630fd.pdf -$ENDCMP -# -$CMP LTC3630A -D High efficiency 76V 500mA synchronous step-down converter -K buck dc-dc switcher switching -F http://cds.linear.com/docs/en/datasheet/3630afc.pdf -$ENDCMP -# -$CMP LTC3886 -D 60V dual output buck output with digital power system management -K step down switch manager I2C telemetry fault current sense -F http://cds.linear.com/docs/en/datasheet/3886fa.pdf -$ENDCMP -# -$CMP LTC3890 -D 60V dual 2-phase synchronous step-down DC/DC controller in QFN-32 package -K buck regulator power two outputs -F http://cds.linear.com/docs/en/datasheet/3890fc.pdf -$ENDCMP -# -$CMP LTC3890-1 -D 60V dual 2-phase synchronous step-down DC/DC controller in SSOP-28 package -K buck regulator power two outputs -F http://cds.linear.com/docs/en/datasheet/38901fb.pdf -$ENDCMP -# -$CMP MAX1044 -D Switched-Capacitor Voltage Converter, 1.5V to 10.0V operating supply voltage, 10mA with a 0.5V output drop -K monolithic CMOS switched capacitor voltage converter invert double divide multiply boost -F http://datasheets.maximintegrated.com/en/ds/ICL7660-MAX1044.pdf -$ENDCMP -# -$CMP MAX5035AASA -D 3.3V 1A, High-Efficiency Step-Down DC-DC Converter, Vin 76V, High Temperature Grade, SO8 -K 3.3V 1A Step-Down Converter 76V Hi-Temp -F http://datasheets.maximintegrated.com/en/ds/MAX5035.pdf -$ENDCMP -# -$CMP MAX5035AUPA -D 3.3V 1A, High-Efficiency Step-Down DC-DC Converter, Vin 76V, PDIP-8 -K 3.3V 1A Step-Down Converter 76V -F http://datasheets.maximintegrated.com/en/ds/MAX5035.pdf -$ENDCMP -# -$CMP MAX5035AUSA -D 3.3V 1A, High-Efficiency Step-Down DC-DC Converter, Vin 76V, SO8 -K 3.3V 1A Step-Down Converter 76V -F http://datasheets.maximintegrated.com/en/ds/MAX5035.pdf -$ENDCMP -# -$CMP MAX5035BASA -D 5V 1A, High-Efficiency Step-Down DC-DC Converter, Vin 76V, High Temperature Grade, SO8 -K 5V 1A Step-Down Converter 76V Hi-Temp -F http://datasheets.maximintegrated.com/en/ds/MAX5035.pdf -$ENDCMP -# -$CMP MAX5035BUPA -D 5V 1A, High-Efficiency Step-Down DC-DC Converter, Vin 76V, PDIP-8 -K 5V 1A Step-Down Converter 76V -F http://datasheets.maximintegrated.com/en/ds/MAX5035.pdf -$ENDCMP -# -$CMP MAX5035BUSA -D 5V 1A, High-Efficiency Step-Down DC-DC Converter, Vin 76V, SO8 -K 5V 1A Step-Down Converter 76V -F http://datasheets.maximintegrated.com/en/ds/MAX5035.pdf -$ENDCMP -# -$CMP MAX5035CASA -D 12V 1A, High-Efficiency Step-Down DC-DC Converter, Vin 76V, High Temperature Grade, SO8 -K 12V 1A Step-Down Converter 76V -F http://datasheets.maximintegrated.com/en/ds/MAX5035.pdf -$ENDCMP -# -$CMP MAX5035CUPA -D 12V 1A, High-Efficiency Step-Down DC-DC Converter, Vin 76V, PDIP-8 -K 12V 1A Step-Down Converter 76V -F http://datasheets.maximintegrated.com/en/ds/MAX5035.pdf -$ENDCMP -# -$CMP MAX5035CUSA -D 12V 1A, High-Efficiency Step-Down DC-DC Converter, Vin 76V, SO8 -K 12V 1A Step-Down Converter 76V -F http://datasheets.maximintegrated.com/en/ds/MAX5035.pdf -$ENDCMP -# -$CMP MAX5035DASA -D AdjustableV 1A, High-Efficiency Step-Down DC-DC Converter, Vin 76V, High Temperature Grade, SO8 -K Adjustable V 1A Step-Down Converter 76V Hi-Temp -F http://datasheets.maximintegrated.com/en/ds/MAX5035.pdf -$ENDCMP -# -$CMP MAX5035DUPA -D Adjustable 1A, High-Efficiency Step-Down DC-DC Converter, Vin 76V, PDIP-8 -K Adjustable 1A Step-Down Converter 76V -F http://datasheets.maximintegrated.com/en/ds/MAX5035.pdf -$ENDCMP -# -$CMP MAX5035DUSA -D Adjustable 1A, High-Efficiency Step-Down DC-DC Converter, Vin 76V, SO8 -K Adjustable 1A Step-Down Converter 76V -F http://datasheets.maximintegrated.com/en/ds/MAX5035.pdf -$ENDCMP -# -$CMP MAX5035EASA -D Adjustable 1A, High-Efficiency Step-Down DC-DC Converter, Vin 76V, High Temperature Grade, SO8 -K Adjustable 1A Step-Down Converter 76V Hi-Temp -F http://datasheets.maximintegrated.com/en/ds/MAX5035.pdf -$ENDCMP -# -$CMP MAX5035EUSA -D Adjustable 1A, High-Efficiency Step-Down DC-DC Converter, Vin 76V, SO8 -K Adjustable 1A Step-Down Converter 76V -F http://datasheets.maximintegrated.com/en/ds/MAX5035.pdf -$ENDCMP -# -$CMP MAX777 -D Low voltage input, step-up, DC-DC converter -K switching regulator boost step-up dc-dc -F http://www.ret.hu/DataSheets/38_ANALOG_IC/MAX_062/MAX777L_778L_779L.pdf -$ENDCMP -# -$CMP MCP16311-MNY -D 30V Input 1A output integrated synchronous switch step-down regulator with PFM/PWM modulation -K buck regulator power supply voltage regulator -F http://ww1.microchip.com/downloads/en/DeviceDoc/20005255B.pdf -$ENDCMP -# -$CMP MCP16311-MS -D 30V Input 1A output integrated synchronous switch step-down regulator with PFM/PWM modulation -K buck regulator power supply voltage regulator -F http://ww1.microchip.com/downloads/en/DeviceDoc/20005255B.pdf -$ENDCMP -# -$CMP MCP16312-MNY -D 30V Input 1A output integrated synchronous switch step-down regulator with PWM modulation -K buck regulator power supply voltage regulator -F http://ww1.microchip.com/downloads/en/DeviceDoc/20005255B.pdf -$ENDCMP -# -$CMP MCP16312-MS -D 30V Input 1A output integrated synchronous switch step-down regulator with PWM modulation -K buck regulator power supply voltage regulator -F http://ww1.microchip.com/downloads/en/DeviceDoc/20005255B.pdf -$ENDCMP -# -$CMP NID60 -D 60W, 250kHz Step Down Converter -K 60W, 250KHz Buck DC/DC -F https://www.meanwell-web.com/en/download_datasheet.php?products_id=NID60S24-12&type=3 -$ENDCMP -# -$CMP ST1CC40PHR -D DC/DC Buck CC Converter for LED's, Vin 18V, 3A, Power SO-8 (Preliminary) -K DC/DC Buck Conwerter 3A Low Voltage Input LED Lighting -$ENDCMP -# -$CMP ST1S10PHR -D DC/DC Buck Converter, Vin 18V, 3A, Power SO-8 -K DC/DC Buck Conwerter 3A Low Voltage Input -F http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/CD00169322.pdf -$ENDCMP -# -$CMP ST1S10PUR -D ST1S10PHR, DC/DC Buck Converter, Vin 18V, 3A, DFN-8 (4x4mm) -K DC/DC Buck Conwerter 3A Low Voltage Input -F http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/CD00169322.pdf -$ENDCMP -# -$CMP ST1S14PHR -D DC/DC Buck Converter, Vin 48V, 3A, Power SO-8 -K DC/DC Buck Conwerter 3A -F http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/CD00285678.pdf -$ENDCMP -# -$CMP TPS5430DDA -D 36V 3A, Step Down Swift Converter, HSOIC8 -K Step-Down DC-DC Switching Regulator -F http://www.ti.com/lit/ds/symlink/tps5430.pdf -$ENDCMP -# -$CMP TPS5431DDA -D 23V 3A, Step Down Swift Converter, HSOIC8 -K Step-Down DC-DC Switching Regulator -F http://www.ti.com/lit/ds/symlink/tps5430.pdf -$ENDCMP -# -$CMP TPS54340DDA -D 42V 3.5 A, Step Down DC-DC Converter with Eco-mode, HSOIC8 -K Step-Down DC-DC Switching Regulator High Voltage High Frequency -F http://www.ti.com/lit/ds/symlink/tps54340.pdf -$ENDCMP -# -$CMP TPS54360DDA -D 60V 3.5 A, Step Down DC-DC Converter with Eco-mode, HSOIC8 -K Step-Down DC-DC Switching Regulator High Voltage High Frequency -F http://www.ti.com/lit/ds/symlink/tps54360.pdf -$ENDCMP -# -$CMP TPS560200 -D 17V step-down regulator, 500mA output in SOT23-5 package -K Voltage regulator switching buck fixed output analog -F http://www.ti.com/lit/ds/symlink/tps560200.pdf -$ENDCMP -# -$CMP TPS60500DGS -D 250mA Step-Down Charge Pump Regulator, Adjustable -K Regulator Step-Down Charge Pump TPS Texas Instruments Ti -F http://www.ti.com/lit/ds/symlink/tps60503.pdf -$ENDCMP -# -$CMP TPS60501DGS -D 250mA Step-Down Charge Pump Regulator, 3.3V -K Regulator Step-Down Charge Pump TPS Texas Instruments Ti -F http://www.ti.com/lit/ds/symlink/tps60503.pdf -$ENDCMP -# -$CMP TPS60502DGS -D 250mA Step-Down Charge Pump Regulator, 1.8V -K Regulator Step-Down Charge Pump TPS Texas Instruments Ti -F http://www.ti.com/lit/ds/symlink/tps60503.pdf -$ENDCMP -# -$CMP TPS60503DGS -D 250mA Step-Down Charge Pump Regulator, 1.5V -K Regulator Step-Down Charge Pump TPS Texas Instruments Ti -F http://www.ti.com/lit/ds/symlink/tps60503.pdf -$ENDCMP -# -$CMP TPS62200DBV -D SOT-23-5, High-Efficiency Step-Down DC-DC Converter, Adjustable -K TPS62200DBV Step-Down DC-DC Converter SOT-23-5 -F http://www.ti.com/lit/ds/symlink/tps62201.pdf -$ENDCMP -# -$CMP TPS62201DBV -D SOT-23-5, High-Efficiency Step-Down DC-DC Converter, 1.5V -K TPS62201DBV Step-Down DC-DC Converter SOT-23-5 -F http://www.ti.com/lit/ds/symlink/tps62201.pdf -$ENDCMP -# -$CMP TPS62202DBV -D SOT-23-5, High-Efficiency Step-Down DC-DC Converter, 1.8V -K TPS62202DBV Step-Down DC-DC Converter SOT-23-5 -F http://www.ti.com/lit/ds/symlink/tps62201.pdf -$ENDCMP -# -$CMP TPS62203DBV -D SOT-23-5, High-Efficiency Step-Down DC-DC Converter, 3.3V -K TPS62203DBV Step-Down DC-DC Converter SOT-23-5 -F http://www.ti.com/lit/ds/symlink/tps62201.pdf -$ENDCMP -# -$CMP TPS62204DBV -D SOT-23-5, High-Efficiency Step-Down DC-DC Converter, 1.6V -K TPS62204DBV Step-Down DC-DC Converter SOT-23-5 -F http://www.ti.com/lit/ds/symlink/tps62201.pdf -$ENDCMP -# -$CMP TPS62205DBV -D SOT-23-5, High-Efficiency Step-Down DC-DC Converter, 2.5V -K TPS62205DBV Step-Down DC-DC Converter SOT-23-5 -F http://www.ti.com/lit/ds/symlink/tps62201.pdf -$ENDCMP -# -$CMP TPS62207DBV -D SOT-23-5, High-Efficiency Step-Down DC-DC Converter, 1.2V -K TPS62207DBV Step-Down DC-DC Converter SOT-23-5 -F http://www.ti.com/lit/ds/symlink/tps62201.pdf -$ENDCMP -# -$CMP TPS62208DBV -D SOT-23-5, High-Efficiency Step-Down DC-DC Converter, 1.875V -K TPS62208DBV Step-Down DC-DC Converter SOT-23-5 -F http://www.ti.com/lit/ds/symlink/tps62201.pdf -$ENDCMP -# -#End Doc Library diff --git a/KiCAD/Converters_DCDC_ACDC.pretty/dc-dc.lib b/KiCAD/Converters_DCDC_ACDC.pretty/dc-dc.lib deleted file mode 100644 index 86c7476c..00000000 --- a/KiCAD/Converters_DCDC_ACDC.pretty/dc-dc.lib +++ /dev/null @@ -1,1493 +0,0 @@ -EESchema-LIBRARY Version 2.3 -#encoding utf-8 -# -# ADP2108 -# -DEF ADP2108 U 0 40 Y Y 1 F N -F0 "U" -200 200 50 H V L CNN -F1 "ADP2108" 0 200 50 H V L CNN -F2 "TSOT23-5" 50 -200 50 H V L CNN -F3 "" -250 -350 50 H V C CNN -DRAW -S -200 150 200 -150 0 1 10 f -X Vin 1 -300 100 100 R 50 50 1 1 I -X GND 2 0 -250 100 U 50 50 1 1 I -X EN 3 -300 0 100 R 50 50 1 1 I -X FB 4 300 -100 100 L 50 50 1 1 I -X SW 5 300 100 100 L 50 50 1 1 I -ENDDRAW -ENDDEF -# -# APE1707H-33-HF -# -DEF APE1707H-33-HF U 0 40 Y Y 1 F N -F0 "U" -300 350 50 H V L CNN -F1 "APE1707H-33-HF" -300 250 50 H V L CNN -F2 "TO-252-5" 250 -250 50 H V C CIN -F3 "" 0 0 50 H V C CNN -ALIAS APE1707H-50-HF APE1707H-12-HF APE1707H-HF -$FPLIST - TO-252* - D-PAK-5* - DPAK-5* -$ENDFPLIST -DRAW -S -300 200 300 -200 0 1 10 f -X VCC 1 -400 100 100 R 50 50 1 1 W -X SW 2 400 -100 100 L 50 50 1 1 O -X VSS 3 0 -300 100 U 50 50 1 1 W -X FB 4 400 100 100 L 50 50 1 1 I -X ~EN~ 5 -400 -100 100 R 50 50 1 1 I -ENDDRAW -ENDDEF -# -# APE1707M-33-HF -# -DEF APE1707M-33-HF U 0 40 Y Y 1 F N -F0 "U" -400 350 50 H V L CNN -F1 "APE1707M-33-HF" -400 250 50 H V L CNN -F2 "SOIC-8" 300 -250 50 H V C CIN -F3 "" 0 0 50 H V C CNN -ALIAS APE1707M-50-HF APE1707M-12-HF APE1707M-HF -$FPLIST - SO* -$ENDFPLIST -DRAW -S -400 200 400 -200 0 1 10 f -X VCC 1 -500 100 100 R 50 50 1 1 W -X SW 2 500 -100 100 L 50 50 1 1 O -X FB 3 500 100 100 L 50 50 1 1 I -X ~EN~ 4 -500 -100 100 R 50 50 1 1 I -X VSS 5 -200 -300 100 U 50 50 1 1 W -X VSS 6 -100 -300 100 U 50 50 1 1 W -X VSS 7 0 -300 100 U 50 50 1 1 W -X VSS 8 100 -300 100 U 50 50 1 1 W -ENDDRAW -ENDDEF -# -# BD9001F -# -DEF BD9001F U 0 40 Y Y 1 F N -F0 "U" -300 450 50 H V L CNN -F1 "BD9001F" -300 350 50 H V L CNN -F2 "SOIC-8" 250 -350 50 H V C CIN -F3 "" 0 0 50 H V C CNN -$FPLIST - SO* -$ENDFPLIST -DRAW -S -300 300 300 -300 0 1 10 f -X SW 1 400 200 100 L 50 50 1 1 O -X FB 3 400 -200 100 L 50 50 1 1 P -X INV 4 400 0 100 L 50 50 1 1 I -X RT 6 -400 -200 100 R 50 50 1 1 P -X GND 7 0 -400 100 U 50 50 1 1 W -X VIN 8 -400 200 100 R 50 50 1 1 W -ENDDRAW -ENDDEF -# -# BD9778F -# -DEF BD9778F U 0 40 Y Y 1 F N -F0 "U" -300 450 50 H V L CNN -F1 "BD9778F" -300 350 50 H V L CNN -F2 "SOIC-8" 250 -350 50 H V C CIN -F3 "" 0 0 50 H V C CNN -$FPLIST - SO* -$ENDFPLIST -DRAW -S -300 300 300 -300 0 1 10 f -X VIN 1 -400 100 100 R 50 50 1 1 W -X SW 2 400 200 100 L 50 50 1 1 O -X FB 3 400 -200 100 L 50 50 1 1 P -X INV 4 400 0 100 L 50 50 1 1 I -X EN 5 -400 -200 100 R 50 50 1 1 P -X RT 6 -400 -100 100 R 50 50 1 1 P -X GND 7 0 -400 100 U 50 50 1 1 W -X PVIN 8 -400 200 100 R 50 50 1 1 W -ENDDRAW -ENDDEF -# -# BD9778HFP -# -DEF BD9778HFP U 0 40 Y Y 1 F N -F0 "U" -300 450 50 H V L CNN -F1 "BD9778HFP" -300 350 50 H V L CNN -F2 "HRP7" 250 -350 50 H V C CIN -F3 "" 0 0 50 H V C CNN -DRAW -S -300 300 300 -300 0 1 10 f -X VIN 1 -400 200 100 R 50 50 1 1 W -X SW 2 400 200 100 L 50 50 1 1 O -X FB 3 400 -200 100 L 50 50 1 1 P -X GND 4 0 -400 100 U 50 50 1 1 W -X INV 5 400 0 100 L 50 50 1 1 I -X RT 6 -400 0 100 R 50 50 1 1 P -X EN 7 -400 -200 100 R 50 50 1 1 P -ENDDRAW -ENDDEF -# -# BD9781HFP -# -DEF BD9781HFP U 0 40 Y Y 1 F N -F0 "U" -400 450 50 H V L CNN -F1 "BD9781HFP" -400 350 50 H V L CNN -F2 "HRP7" 400 -350 50 H V C CIN -F3 "" 0 0 50 H V C CNN -DRAW -S -400 300 400 -300 0 1 10 f -X VIN 1 -500 200 100 R 50 50 1 1 W -X SW 2 500 200 100 L 50 50 1 1 O -X RT 3 -500 0 100 R 50 50 1 1 P -X GND 4 100 -400 100 U 50 50 1 1 W -X FB 5 500 -200 100 L 50 50 1 1 P -X INV 6 500 0 100 L 50 50 1 1 I -X EN/SYNC 7 -500 -200 100 R 50 50 1 1 P -ENDDRAW -ENDDEF -# -# BD9G341EFJ -# -DEF BD9G341EFJ U 0 40 Y Y 1 F N -F0 "U" -250 450 50 H V C CNN -F1 "BD9G341EFJ" 300 450 50 H V C CNN -F2 "" 0 0 50 H V C CNN -F3 "" 0 0 50 H V C CNN -$FPLIST - HTSOP* -$ENDFPLIST -DRAW -S -300 400 300 -400 0 1 10 f -X LX 1 400 300 100 L 50 50 1 1 P -X GND 2 -100 -500 100 U 50 50 1 1 W -X VC 3 400 -200 100 L 50 50 1 1 O -X FB 4 400 0 100 L 50 50 1 1 I -X RT 5 100 -500 100 U 50 50 1 1 I -X EN 6 -400 0 100 R 50 50 1 1 I -X BST 7 0 500 100 D 50 50 1 1 I -X VCC 8 -400 300 100 R 50 50 1 1 W -ENDDRAW -ENDDEF -# -# GL2576-3.3SF8DR -# -DEF GL2576-3.3SF8DR U 0 40 Y Y 1 F N -F0 "U" -500 350 50 H V L CNN -F1 "GL2576-3.3SF8DR" -500 250 50 H V L CNN -F2 "SOIC-8" 450 -250 50 H V C CIN -F3 "" 0 0 50 H V C CNN -ALIAS GL2576-5.0SF8DR GL2576-12SF8DR GL2576-15SF8DR GL2576-ASF8DR -$FPLIST - SO* -$ENDFPLIST -DRAW -S -500 200 500 -200 0 1 10 f -X VIN 1 -600 100 100 R 50 50 1 1 W -X VOUT 2 600 -100 100 L 50 50 1 1 P -X FB 3 600 100 100 L 50 50 1 1 P -X ~ON~/OFF 4 -600 -100 100 R 50 50 1 1 I -X GND 5 -100 -300 100 U 50 50 1 1 W -X GND 6 0 -300 100 U 50 50 1 1 W -X GND 7 100 -300 100 U 50 50 1 1 W -X GND 8 200 -300 100 U 50 50 1 1 W -ENDDRAW -ENDDEF -# -# GL2576-3.3TA5PR -# -DEF GL2576-3.3TA5PR U 0 40 Y Y 1 F N -F0 "U" -400 350 50 H V L CNN -F1 "GL2576-3.3TA5PR" -400 250 50 H V L CNN -F2 "TD2P-5" 300 -250 50 H V C CIN -F3 "" 0 0 50 H V C CNN -ALIAS GL2576-5.0TA5PR GL2576-12TA5PR GL2576-15TA5PR GL2576-ATA5PR -DRAW -S -400 200 400 -200 0 1 10 f -X VIN 1 -500 100 100 R 50 50 1 1 W -X VOUT 2 500 -100 100 L 50 50 1 1 P -X GND 3 0 -300 100 U 50 50 1 1 W -X FB 4 500 100 100 L 50 50 1 1 P -X ~ON~/OFF 5 -500 -100 100 R 50 50 1 1 I -ENDDRAW -ENDDEF -# -# GL2576-3.3TA5R -# -DEF GL2576-3.3TA5R U 0 40 Y Y 1 F N -F0 "U" -400 350 50 H V L CNN -F1 "GL2576-3.3TA5R" -400 250 50 H V L CNN -F2 "TO-263-5" 300 -250 50 H V C CIN -F3 "" 0 0 50 H V C CNN -ALIAS GL2576-5.0TA5R GL2576-12TA5R GL2576-15TA5R GL2576-ATA5R -$FPLIST - TO-263-5* - D2-PAK-5* -$ENDFPLIST -DRAW -S -400 200 400 -200 0 1 10 f -X VIN 1 -500 100 100 R 50 50 1 1 W -X VOUT 2 500 -100 100 L 50 50 1 1 P -X GND 3 0 -300 100 U 50 50 1 1 W -X FB 4 500 100 100 L 50 50 1 1 P -X ~ON~/OFF 5 -500 -100 100 R 50 50 1 1 I -ENDDRAW -ENDDEF -# -# GL2576-3.3TB5T -# -DEF GL2576-3.3TB5T U 0 40 Y Y 1 F N -F0 "U" -400 350 50 H V L CNN -F1 "GL2576-3.3TB5T" -400 250 50 H V L CNN -F2 "TO-220-5" 300 -250 50 H V C CIN -F3 "" 0 0 50 H V C CNN -ALIAS GL2576-5.0TB5T GL2576-12TB5T GL2576-15TB5T GL2576-ATB5T -$FPLIST - TO-220-5* -$ENDFPLIST -DRAW -S -400 200 400 -200 0 1 10 f -X VIN 1 -500 100 100 R 50 50 1 1 W -X VOUT 2 500 -100 100 L 50 50 1 1 P -X GND 3 0 -300 100 U 50 50 1 1 W -X FB 4 500 100 100 L 50 50 1 1 P -X ~ON~/OFF 5 -500 -100 100 R 50 50 1 1 I -ENDDRAW -ENDDEF -# -# ISL8117 -# -DEF ISL8117 U 0 40 Y Y 1 F N -F0 "U" -500 550 50 H V L CNN -F1 "ISL8117" 500 550 50 H V R CNN -F2 "" -600 450 50 H V C CNN -F3 "" -500 550 50 H V C CNN -DRAW -S -500 500 500 -500 0 1 10 f -X EXTBIAS 1 -200 -600 100 U 50 50 1 1 I -X EN 2 -600 300 100 R 50 50 1 1 I -X CLKOUT 3 -600 0 100 R 50 50 1 1 I -X MOD/SYNC 4 -600 200 100 R 50 50 1 1 I -X PGOOD 5 -600 100 100 R 50 50 1 1 I -X RT 6 -600 -200 100 R 50 50 1 1 I -X SS/TRK 7 -600 -100 100 R 50 50 1 1 I -X FB 8 600 -300 100 L 50 50 1 1 I -X PGND 9 100 -600 100 U 50 50 1 1 W -X LGATE/OCS 10 600 -100 100 L 50 50 1 1 I -X VCC5V 11 0 600 100 D 50 50 1 1 W -X ISEN 12 600 0 100 L 50 50 1 1 I -X PHASE 13 600 100 100 L 50 50 1 1 I -X UGATE 14 600 200 100 L 50 50 1 1 O -X BOOT 15 600 300 100 L 50 50 1 1 I -X VIN 16 100 600 100 D 50 50 1 1 W -X SGND 17 0 -600 100 U 50 50 1 1 W -ENDDRAW -ENDDEF -# -# LM2574HVH-12 -# -DEF LM2574HVH-12 U 0 40 Y Y 1 F N -F0 "U" -400 350 50 H V L CNN -F1 "LM2574HVH-12" -400 250 50 H V L CNN -F2 "DIP-8" 300 -250 50 H V C CIN -F3 "" 0 0 50 H V C CNN -ALIAS LM2574HVH-3.3 LM2574HVH-5 LM2574HVH-15 LM2574HVH-ADJ -$FPLIST - DIP* -$ENDFPLIST -DRAW -S -400 200 400 -200 0 1 10 f -X FB 1 500 100 100 L 50 50 1 1 I -X ON/~OFF 3 -500 -100 100 R 50 50 1 1 I -X SGND 3 0 -300 100 U 50 50 1 1 W -X PGND 4 100 -300 100 U 50 50 1 1 W -X VIN 5 -500 100 100 R 50 50 1 1 W -X OUT 7 500 -100 100 L 50 50 1 1 O -ENDDRAW -ENDDEF -# -# LM2574N-12 -# -DEF LM2574N-12 U 0 40 Y Y 1 F N -F0 "U" -400 350 50 H V L CNN -F1 "LM2574N-12" -400 250 50 H V L CNN -F2 "DIP-8" 350 -250 50 H V C CIN -F3 "" 0 0 50 H V C CNN -ALIAS LM2574N-3.3 LM2574N-5 LM2574N-15 LM2574N-ADJ -$FPLIST - DIP* -$ENDFPLIST -DRAW -S -400 200 400 -200 0 1 10 f -X FB 1 500 100 100 L 50 50 1 1 I -X ON/~OFF 3 -500 -100 100 R 50 50 1 1 I -X SGND 3 0 -300 100 U 50 50 1 1 W -X PGND 4 100 -300 100 U 50 50 1 1 W -X VIN 5 -500 100 100 R 50 50 1 1 W -X OUT 7 500 -100 100 L 50 50 1 1 O -ENDDRAW -ENDDEF -# -# LM2576HVS-12 -# -DEF LM2576HVS-12 U 0 40 Y Y 1 F N -F0 "U" -400 350 50 H V L CNN -F1 "LM2576HVS-12" -400 250 50 H V L CNN -F2 "TO-263-5" 300 -250 50 H V C CIN -F3 "" 0 0 50 H V C CNN -ALIAS LM2576HVS-3.3 LM2576HVS-5 LM2576HVS-15 LM2576HVS-ADJ -$FPLIST - TO-263-5* -$ENDFPLIST -DRAW -S -400 200 400 -200 0 1 10 f -X VIN 1 -500 100 100 R 50 50 1 1 W -X OUT 2 500 -100 100 L 50 50 1 1 O -X GND 3 0 -300 100 U 50 50 1 1 W -X FB 4 500 100 100 L 50 50 1 1 I -X ~ON~/OFF 5 -500 -100 100 R 50 50 1 1 I -ENDDRAW -ENDDEF -# -# LM2576HVT-12 -# -DEF LM2576HVT-12 U 0 40 Y Y 1 F N -F0 "U" -400 350 50 H V L CNN -F1 "LM2576HVT-12" -400 250 50 H V L CNN -F2 "TO-220-5" 300 -250 50 H V C CIN -F3 "" 0 0 50 H V C CNN -ALIAS LM2576HVT-3.3 LM2576HVT-5 LM2576HVT-15 LM2576HVT-ADJ -$FPLIST - TO-220-5* -$ENDFPLIST -DRAW -S -400 200 400 -200 0 1 10 f -X VIN 1 -500 100 100 R 50 50 1 1 W -X OUT 2 500 -100 100 L 50 50 1 1 O -X GND 3 0 -300 100 U 50 50 1 1 W -X FB 4 500 100 100 L 50 50 1 1 I -X ~ON~/OFF 5 -500 -100 100 R 50 50 1 1 I -ENDDRAW -ENDDEF -# -# LM2576S-12 -# -DEF LM2576S-12 U 0 40 Y Y 1 F N -F0 "U" -400 350 50 H V L CNN -F1 "LM2576S-12" -400 250 50 H V L CNN -F2 "TO-263-5" 300 -250 50 H V C CIN -F3 "" 0 0 50 H V C CNN -ALIAS LM2576S-3.3 LM2576S-5 LM2576S-15 LM2576S-ADJ -$FPLIST - TO-263-5* -$ENDFPLIST -DRAW -S -400 200 400 -200 0 1 10 f -X VIN 1 -500 100 100 R 50 50 1 1 W -X OUT 2 500 -100 100 L 50 50 1 1 O -X GND 3 0 -300 100 U 50 50 1 1 W -X FB 4 500 100 100 L 50 50 1 1 I -X ~ON~/OFF 5 -500 -100 100 R 50 50 1 1 I -ENDDRAW -ENDDEF -# -# LM2576T-12 -# -DEF LM2576T-12 U 0 40 Y Y 1 F N -F0 "U" -400 350 50 H V L CNN -F1 "LM2576T-12" -400 250 50 H V L CNN -F2 "TO-220-5" 300 -250 50 H V C CIN -F3 "" 0 0 50 H V C CNN -ALIAS LM2576T-3.3 LM2576T-5 LM2576T-15 LM2576T-ADJ -$FPLIST - TO-220-5* -$ENDFPLIST -DRAW -S -400 200 400 -200 0 1 10 f -X VIN 1 -500 100 100 R 50 50 1 1 W -X OUT 2 500 -100 100 L 50 50 1 1 O -X GND 3 0 -300 100 U 50 50 1 1 W -X FB 4 500 100 100 L 50 50 1 1 I -X ~ON~/OFF 5 -500 -100 100 R 50 50 1 1 I -ENDDRAW -ENDDEF -# -# LM2595S-12 -# -DEF LM2595S-12 U 0 40 Y Y 1 F N -F0 "U" -400 350 50 H V L CNN -F1 "LM2595S-12" -400 250 50 H V L CNN -F2 "TO-263-5" 300 -250 50 H V C CIN -F3 "" 0 0 50 H V C CNN -ALIAS LM2595S-3.3 LM2595S-5 LM2595S-ADJ -$FPLIST - TO-263-5* -$ENDFPLIST -DRAW -S -400 200 400 -200 0 1 10 f -X OUT 1 500 -100 100 L 50 50 1 1 O -X VIN 2 -500 100 100 R 50 50 1 1 W -X GND 3 0 -300 100 U 50 50 1 1 W -X FB 4 500 100 100 L 50 50 1 1 I -X ON/~OFF 5 -500 -100 100 R 50 50 1 1 I -ENDDRAW -ENDDEF -# -# LM2595T-12 -# -DEF LM2595T-12 U 0 40 Y Y 1 F N -F0 "U" -400 350 50 H V L CNN -F1 "LM2595T-12" -400 250 50 H V L CNN -F2 "TO-220-5" 300 -250 50 H V C CIN -F3 "" 0 0 50 H V C CNN -ALIAS LM2595T-3.3 LM2595T-5 LM2595T-ADJ -$FPLIST - TO-220-5* -$ENDFPLIST -DRAW -S -400 200 400 -200 0 1 10 f -X OUT 1 500 -100 100 L 50 50 1 1 O -X VIN 2 -500 100 100 R 50 50 1 1 W -X GND 3 0 -300 100 U 50 50 1 1 W -X FB 4 500 100 100 L 50 50 1 1 I -X ~ON~/OFF 5 -500 -100 100 R 50 50 1 1 I -ENDDRAW -ENDDEF -# -# LM2596S-12 -# -DEF LM2596S-12 U 0 40 Y Y 1 F N -F0 "U" -400 350 50 H V L CNN -F1 "LM2596S-12" -400 250 50 H V L CNN -F2 "TO-263-5" 300 -250 50 H V C CIN -F3 "" 0 0 50 H V C CNN -ALIAS LM2596S-5 LM2596S-3.3 LM2596S-ADJ -$FPLIST - TO-263-5* -$ENDFPLIST -DRAW -S -400 200 400 -200 0 1 10 f -X VIN 1 -500 100 100 R 50 50 1 1 W -X OUT 2 500 -100 100 L 50 50 1 1 O -X GND 3 0 -300 100 U 50 50 1 1 W -X FB 4 500 100 100 L 50 50 1 1 I -X ~ON~/OFF 5 -500 -100 100 R 50 50 1 1 I -ENDDRAW -ENDDEF -# -# LM2596T-12 -# -DEF LM2596T-12 U 0 40 Y Y 1 F N -F0 "U" -400 350 50 H V L CNN -F1 "LM2596T-12" -400 250 50 H V L CNN -F2 "TO-220-5" 300 -250 50 H V C CIN -F3 "" 0 0 50 H V C CNN -ALIAS LM2596T-5 LM2596T-3.3 LM2596T-ADJ -$FPLIST - TO-220-5* -$ENDFPLIST -DRAW -S -400 200 400 -200 0 1 10 f -X VIN 1 -500 100 100 R 50 50 1 1 W -X OUT 2 500 -100 100 L 50 50 1 1 O -X GND 3 0 -300 100 U 50 50 1 1 W -X FB 4 500 100 100 L 50 50 1 1 I -X ~ON~/OFF 5 -500 -100 100 R 50 50 1 1 I -ENDDRAW -ENDDEF -# -# LM2672M-12 -# -DEF LM2672M-12 U 0 40 Y Y 1 F N -F0 "U" -400 450 50 H V L CNN -F1 "LM2672M-12" -400 350 50 H V L CNN -F2 "SOIC-8" 350 -350 50 H V C CIN -F3 "" 0 0 50 H V C CNN -ALIAS LM2672M-3.3 LM2672M-5.0 LM2672M-ADJ -$FPLIST - SO* -$ENDFPLIST -DRAW -S -400 300 400 -300 0 1 10 f -X CB 1 500 0 100 L 50 50 1 1 I -X SS 2 -500 0 100 R 50 50 1 1 I -X SYNC 3 -500 -100 100 R 50 50 1 1 I -X FB 4 500 200 100 L 50 50 1 1 I -X ON/~OFF 5 -500 -200 100 R 50 50 1 1 I -X GND 6 0 -400 100 U 50 50 1 1 W -X VIN 7 -500 200 100 R 50 50 1 1 W -X VSW 8 500 -200 100 L 50 50 1 1 O -ENDDRAW -ENDDEF -# -# LM2672N-12 -# -DEF LM2672N-12 U 0 40 Y Y 1 F N -F0 "U" -400 450 50 H V L CNN -F1 "LM2672N-12" -400 350 50 H V L CNN -F2 "DIP-8" 350 -350 50 H V C CIN -F3 "" 0 0 50 H V C CNN -ALIAS LM2672N-3.3 LM2672N-5.0 LM2672N-ADJ -$FPLIST - DIP* -$ENDFPLIST -DRAW -S -400 300 400 -300 0 1 10 f -X CB 1 500 0 100 L 50 50 1 1 I -X SS 2 -500 0 100 R 50 50 1 1 I -X SYNC 3 -500 -100 100 R 50 50 1 1 I -X FB 4 500 200 100 L 50 50 1 1 I -X ON/~OFF 5 -500 -200 100 R 50 50 1 1 I -X GND 6 0 -400 100 U 50 50 1 1 W -X VIN 7 -500 200 100 R 50 50 1 1 W -X VSW 8 500 -200 100 L 50 50 1 1 O -ENDDRAW -ENDDEF -# -# LM2674M-12 -# -DEF LM2674M-12 U 0 40 Y Y 1 F N -F0 "U" -400 450 50 H V L CNN -F1 "LM2674M-12" -400 350 50 H V L CNN -F2 "SOIC-8" 300 -350 50 H V C CIN -F3 "" 0 0 50 H V C CNN -ALIAS LM2674M-3.3 LM2674M-5.0 LM2674M-ADJ -$FPLIST - SO* -$ENDFPLIST -DRAW -S -400 300 400 -300 0 1 10 f -X CB 1 500 0 100 L 50 50 1 1 I -X FB 4 500 200 100 L 50 50 1 1 I -X ON/~OFF 5 -500 0 100 R 50 50 1 1 I -X GND 6 0 -400 100 U 50 50 1 1 W -X VIN 7 -500 200 100 R 50 50 1 1 W -X VSW 8 500 -200 100 L 50 50 1 1 O -ENDDRAW -ENDDEF -# -# LM2674N-12 -# -DEF LM2674N-12 U 0 40 Y Y 1 F N -F0 "U" -400 450 50 H V L CNN -F1 "LM2674N-12" -400 350 50 H V L CNN -F2 "DIP-8" 350 -350 50 H V C CIN -F3 "" 0 0 50 H V C CNN -ALIAS LM2674N-3.3 LM2674N-5.0 LM2674N-ADJ -$FPLIST - DIP* -$ENDFPLIST -DRAW -S -400 300 400 -300 0 1 10 f -X CB 1 500 0 100 L 50 50 1 1 I -X FB 4 500 200 100 L 50 50 1 1 I -X ON/~OFF 5 -500 0 100 R 50 50 1 1 I -X GND 6 0 -400 100 U 50 50 1 1 W -X VIN 7 -500 200 100 R 50 50 1 1 W -X VSW 8 500 -200 100 L 50 50 1 1 O -ENDDRAW -ENDDEF -# -# LM2675M-12 -# -DEF LM2675M-12 U 0 40 Y Y 1 F N -F0 "U" -400 450 50 H V L CNN -F1 "LM2675M-12" -400 350 50 H V L CNN -F2 "SOIC-8" 300 -350 50 H V C CIN -F3 "" 0 0 50 H V C CNN -ALIAS LM2675M-3.3 LM2675M-5 LM2675M-ADJ -$FPLIST - SO* -$ENDFPLIST -DRAW -S -400 300 400 -300 0 1 10 f -X CB 1 500 0 100 L 50 50 1 1 I -X FB 4 500 200 100 L 50 50 1 1 I -X ON/~OFF 5 -500 0 100 R 50 50 1 1 I -X GND 6 0 -400 100 U 50 50 1 1 W -X VIN 7 -500 200 100 R 50 50 1 1 W -X VSW 8 500 -200 100 L 50 50 1 1 O -ENDDRAW -ENDDEF -# -# LM2675N-12 -# -DEF LM2675N-12 U 0 40 Y Y 1 F N -F0 "U" -400 450 50 H V L CNN -F1 "LM2675N-12" -400 350 50 H V L CNN -F2 "DIP-8" 350 -350 50 H V C CIN -F3 "" 0 0 50 H V C CNN -ALIAS LM2675N-3.3 LM2675N-5 LM2675N-ADJ -$FPLIST - DIP* -$ENDFPLIST -DRAW -S -400 300 400 -300 0 1 10 f -X CB 1 500 0 100 L 50 50 1 1 I -X FB 4 500 200 100 L 50 50 1 1 I -X ON/~OFF 5 -500 0 100 R 50 50 1 1 I -X GND 6 0 -400 100 U 50 50 1 1 W -X VIN 7 -500 200 100 R 50 50 1 1 W -X VSW 8 500 -200 100 L 50 50 1 1 O -ENDDRAW -ENDDEF -# -# LM3407MY -# -DEF LM3407MY U 0 40 Y Y 1 F N -F0 "U" -300 450 50 H V L CNN -F1 "LM3407MY" -300 350 50 H V L CNN -F2 "eMSOP-8" 250 -350 50 H V C CIN -F3 "" 0 0 50 H V C CNN -$FPLIST - eMSOP-8* -$ENDFPLIST -DRAW -S -300 300 300 -300 0 1 10 f -X ISNS 1 400 0 100 L 50 50 1 1 O -X DIM 2 -400 0 100 R 50 50 1 1 I -X EN 3 -400 -100 100 R 50 50 1 1 I -X FS 4 -400 -200 100 R 50 50 1 1 O -X VIN 5 -400 200 100 R 50 50 1 1 I -X VCC 6 400 -200 100 L 50 50 1 1 O -X GND 7 0 -400 100 U 50 50 1 1 W -X LX 8 400 200 100 L 50 50 1 1 O -ENDDRAW -ENDDEF -# -# LM3670MF -# -DEF LM3670MF U 0 40 Y Y 1 F N -F0 "U" -200 275 50 H V L CNN -F1 "LM3670MF" -200 200 50 H V L CNN -F2 "SOT-23-5" 50 -200 50 H V L CNN -F3 "" 0 -300 50 H V C CIN -DRAW -S -200 150 200 -150 0 1 10 f -X Vin 1 -300 100 100 R 50 50 1 1 W -X GND 2 0 -250 100 U 50 50 1 1 W -X EN 3 -300 0 100 R 50 50 1 1 I -X FB 4 300 0 100 L 50 50 1 1 I -X SW 5 300 100 100 L 50 50 1 1 O -ENDDRAW -ENDDEF -# -# LM5006MM -# -DEF LM5006MM U 0 40 Y Y 1 F N -F0 "U" -300 650 50 H V L CNN -F1 "LM5006MM" -300 550 50 H V L CNN -F2 "MSOP-10" 0 -450 50 H V C CIN -F3 "" 0 0 50 H V C CNN -$FPLIST - MSOP-10* -$ENDFPLIST -DRAW -S -300 500 300 -400 0 1 10 f -X SW 1 400 0 100 L 50 50 1 1 O -X BST 2 400 200 100 L 50 50 1 1 I -X LG 3 400 -200 100 L 50 50 1 1 O -X RTN 4 -400 -300 100 R 50 50 1 1 W -X UV 5 -400 0 100 R 50 50 1 1 I -X UVO 6 -400 -100 100 R 50 50 1 1 O -X FB 7 400 -300 100 L 50 50 1 1 I -X RT/SD 8 -400 200 100 R 50 50 1 1 I -X VCC 9 400 400 100 L 50 50 1 1 O -X VIN 10 -400 400 100 R 50 50 1 1 W -ENDDRAW -ENDDEF -# -# LM5007MM -# -DEF LM5007MM U 0 40 Y Y 1 F N -F0 "U" -300 550 50 H V L CNN -F1 "LM5007MM" -300 450 50 H V L CNN -F2 "MSOP-8" 0 -450 50 H V C CIN -F3 "" 0 0 50 H V C CNN -$FPLIST - MSOP-8* -$ENDFPLIST -DRAW -S -300 400 300 -400 0 1 10 f -X SW 1 400 -100 100 L 50 50 1 1 O -X BST 2 400 100 100 L 50 50 1 1 I -X RCL 3 -400 0 100 R 50 50 1 1 I -X RTN 4 -400 -300 100 R 50 50 1 1 W -X FB 5 400 -300 100 L 50 50 1 1 I -X RON/SD 6 -400 100 100 R 50 50 1 1 I -X VCC 7 400 300 100 L 50 50 1 1 O -X VIN 8 -400 300 100 R 50 50 1 1 I -ENDDRAW -ENDDEF -# -# LM5007SD -# -DEF LM5007SD U 0 40 Y Y 1 F N -F0 "U" -300 550 50 H V L CNN -F1 "LM5007SD" -300 450 50 H V L CNN -F2 "LLP8" 0 -450 50 H V C CIN -F3 "" 0 0 50 H V C CNN -DRAW -S -300 400 300 -400 0 1 10 f -X SW 1 400 -100 100 L 50 50 1 1 O -X BST 2 400 100 100 L 50 50 1 1 I -X RCL 3 -400 0 100 R 50 50 1 1 I -X RTN 4 -400 -300 100 R 50 50 1 1 W -X FB 5 400 -300 100 L 50 50 1 1 I -X RON/SD 6 -400 100 100 R 50 50 1 1 I -X VCC 7 400 300 100 L 50 50 1 1 O -X VIN 8 -400 300 100 R 50 50 1 1 I -ENDDRAW -ENDDEF -# -# LM5008MM -# -DEF LM5008MM U 0 40 Y Y 1 F N -F0 "U" -300 550 50 H V L CNN -F1 "LM5008MM" -300 450 50 H V L CNN -F2 "MSOP-8" 0 -450 50 H V C CIN -F3 "" 0 0 50 H V C CNN -$FPLIST - MSOP-8* -$ENDFPLIST -DRAW -S -300 400 300 -400 0 1 10 f -X SW 1 400 -100 100 L 50 50 1 1 O -X BST 2 400 100 100 L 50 50 1 1 I -X RCL 3 -400 0 100 R 50 50 1 1 I -X RTN 4 -400 -300 100 R 50 50 1 1 W -X FB 5 400 -300 100 L 50 50 1 1 I -X RON/SD 6 -400 100 100 R 50 50 1 1 I -X VCC 7 400 300 100 L 50 50 1 1 O -X VIN 8 -400 300 100 R 50 50 1 1 I -ENDDRAW -ENDDEF -# -# LM5008SD -# -DEF LM5008SD U 0 40 Y Y 1 F N -F0 "U" -300 550 50 H V L CNN -F1 "LM5008SD" -300 450 50 H V L CNN -F2 "LLP8" 0 -450 50 H V C CIN -F3 "" 0 0 50 H V C CNN -DRAW -S -300 400 300 -400 0 1 10 f -X SW 1 400 -100 100 L 50 50 1 1 O -X BST 2 400 100 100 L 50 50 1 1 I -X RCL 3 -400 0 100 R 50 50 1 1 I -X RTN 4 -400 -300 100 R 50 50 1 1 W -X FB 5 400 -300 100 L 50 50 1 1 I -X RON/SD 6 -400 100 100 R 50 50 1 1 I -X VCC 7 400 300 100 L 50 50 1 1 O -X VIN 8 -400 300 100 R 50 50 1 1 I -ENDDRAW -ENDDEF -# -# LM5008SDC -# -DEF LM5008SDC U 0 40 Y Y 1 F N -F0 "U" -300 550 50 H V L CNN -F1 "LM5008SDC" -300 450 50 H V L CNN -F2 "LLP8" 0 -450 50 H V C CIN -F3 "" 0 0 50 H V C CNN -DRAW -S -300 400 300 -400 0 1 10 f -X SW 1 400 -100 100 L 50 50 1 1 O -X BST 2 400 100 100 L 50 50 1 1 I -X RCL 3 -400 0 100 R 50 50 1 1 I -X RTN 4 -400 -300 100 R 50 50 1 1 W -X FB 5 400 -300 100 L 50 50 1 1 I -X RON/SD 6 -400 100 100 R 50 50 1 1 I -X VCC 7 400 300 100 L 50 50 1 1 O -X VIN 8 -400 300 100 R 50 50 1 1 I -ENDDRAW -ENDDEF -# -# LM5009MM -# -DEF LM5009MM U 0 40 Y Y 1 F N -F0 "U" -300 550 50 H V L CNN -F1 "LM5009MM" -300 450 50 H V L CNN -F2 "MSOP-8" 0 -450 50 H V C CIN -F3 "" 0 0 50 H V C CNN -$FPLIST - MSOP-8* -$ENDFPLIST -DRAW -S -300 400 300 -400 0 1 10 f -X SW 1 400 -100 100 L 50 50 1 1 O -X BST 2 400 100 100 L 50 50 1 1 I -X RCL 3 -400 0 100 R 50 50 1 1 I -X RTN 4 -400 -300 100 R 50 50 1 1 W -X FB 5 400 -300 100 L 50 50 1 1 I -X RON/SD 6 -400 100 100 R 50 50 1 1 I -X VCC 7 400 300 100 L 50 50 1 1 O -X VIN 8 -400 300 100 R 50 50 1 1 I -ENDDRAW -ENDDEF -# -# LM5017MR -# -DEF LM5017MR U 0 40 Y Y 1 F N -F0 "U" -300 550 50 H V L CNN -F1 "LM5017MR" -300 450 50 H V L CNN -F2 "PSOP-8" 0 -450 50 H V C CIN -F3 "" 0 0 50 H V C CNN -DRAW -S -300 400 300 -400 0 1 10 f -X RTN 1 -400 -300 100 R 50 50 1 1 W -X VIN 2 -400 300 100 R 50 50 1 1 I -X ULVO 3 -400 -100 100 R 50 50 1 1 I -X RON 4 -400 100 100 R 50 50 1 1 I -X FB 5 400 -300 100 L 50 50 1 1 I -X VCC 6 400 -100 100 L 50 50 1 1 O -X BST 7 400 300 100 L 50 50 1 1 I -X SW 8 400 100 100 L 50 50 1 1 O -ENDDRAW -ENDDEF -# -# LM5017SD -# -DEF LM5017SD U 0 40 Y Y 1 F N -F0 "U" -300 550 50 H V L CNN -F1 "LM5017SD" -300 450 50 H V L CNN -F2 "LLP8" 0 -450 50 H V C CIN -F3 "" 0 0 50 H V C CNN -DRAW -S -300 400 300 -400 0 1 10 f -X RTN 1 -400 -300 100 R 50 50 1 1 W -X VIN 2 -400 300 100 R 50 50 1 1 I -X ULVO 3 -400 -100 100 R 50 50 1 1 I -X RON 4 -400 100 100 R 50 50 1 1 I -X FB 5 400 -300 100 L 50 50 1 1 I -X VCC 6 400 -100 100 L 50 50 1 1 O -X BST 7 400 300 100 L 50 50 1 1 I -X SW 8 400 100 100 L 50 50 1 1 O -ENDDRAW -ENDDEF -# -# LMR10510XMF -# -DEF LMR10510XMF U 0 40 Y Y 1 F N -F0 "U" -200 350 50 H V L CNN -F1 "LMR10510XMF" -200 250 50 H V L CNN -F2 "SOT-23-5" 250 -250 50 H V C CIN -F3 "" 0 100 50 H V C CNN -ALIAS LM2731XMF LM2731YMF LM27313XMF LM2733XMF LM2733YMF LM2735XMF LMR10510YMF LMR62014XMF LMR62421XMF LMR64010XMF -$FPLIST - SOT-23-5* -$ENDFPLIST -DRAW -S -200 200 200 -200 0 1 10 f -X SW 1 300 100 100 L 50 50 1 1 O -X GND 2 0 -300 100 U 50 50 1 1 W -X FB 3 300 -100 100 L 50 50 1 1 I -X EN 4 -300 -100 100 R 50 50 1 1 I -X VIN 5 -300 100 100 R 50 50 1 1 I -ENDDRAW -ENDDEF -# -# LMR10510YSD -# -DEF LMR10510YSD U 0 40 Y Y 1 F N -F0 "U" -250 450 50 H V L CNN -F1 "LMR10510YSD" -250 350 50 H V L CNN -F2 "LLP6" 0 -350 50 H V C CIN -F3 "" 0 0 50 H V C CNN -ALIAS LMR62421XSD -DRAW -S -250 300 250 -300 0 1 10 f -X FB 1 400 -200 150 L 50 50 1 1 I -X GND 2 -400 -200 150 R 50 50 1 1 W -X SW 3 400 100 150 L 50 50 1 1 O -X VIND 4 -400 100 150 R 50 50 1 1 W -X VINA 5 -400 200 150 R 50 50 1 1 I -X EN 6 -400 -100 150 R 50 50 1 1 I -ENDDRAW -ENDDEF -# -# LT1054 -# -DEF LT1054 U 0 40 Y Y 1 F N -F0 "U" -200 500 50 H V C CNN -F1 "LT1054" 400 -500 50 H V C CNN -F2 "" 100 -100 50 H V C CNN -F3 "" 100 -100 50 H V C CNN -$FPLIST - DIP-8* -$ENDFPLIST -DRAW -S -300 400 300 -400 0 1 10 f -X FB/SHDN 1 -400 200 100 R 50 50 1 1 I -X CAP+ 2 400 100 100 L 50 50 1 1 I -X GND 3 0 -500 100 U 50 50 1 1 W -X CAP- 4 400 -300 100 L 50 50 1 1 I -X VOUT 5 400 300 100 L 50 50 1 1 w -X VREF 6 -400 -200 100 R 50 50 1 1 O -X OSC 7 -400 0 100 R 50 50 1 1 I -X V+ 8 -400 300 100 R 50 50 1 1 W -ENDDRAW -ENDDEF -# -# LT3439 -# -DEF LT3439 U 0 40 Y Y 1 F N -F0 "U" -450 700 50 H V L CNN -F1 "LT3439" -450 600 50 H V L CNN -F2 "" 0 0 50 H V C CNN -F3 "" 0 0 50 H V C CNN -DRAW -S -450 550 450 -550 0 1 10 f -X PGND 1 0 -700 150 U 50 50 1 1 W -X COLA 3 600 300 150 L 50 50 1 1 O -X Rsl 4 600 -300 150 L 50 50 1 1 P -X SYNC 5 -600 100 150 R 50 50 1 1 P -X Ct 6 -600 0 150 R 50 50 1 1 P -X Rt 7 -600 -100 150 R 50 50 1 1 P -X GND 10 -100 -700 150 U 50 50 1 1 W -X ~SHDN~ 11 -600 300 150 R 50 50 1 1 I I -X VIN 13 0 700 150 D 50 50 1 1 W -X COLB 14 600 0 150 L 50 50 1 1 O -X PGND 16 100 -700 150 U 50 50 1 1 W -ENDDRAW -ENDDEF -# -# LTC1044 -# -DEF LTC1044 U 0 40 Y Y 1 F N -F0 "U" -200 500 50 H V C CNN -F1 "LTC1044" 400 -500 50 H V C CNN -F2 "" 100 -100 50 H V C CNN -F3 "" 100 -100 50 H V C CNN -ALIAS MAX1044 ICL7660 -$FPLIST - DIP-8* -$ENDFPLIST -DRAW -S -300 400 300 -400 0 1 10 f -X BOOST 1 -400 200 100 R 50 50 1 1 I -X CAP+ 2 400 100 100 L 50 50 1 1 I -X GND 3 0 -500 100 U 50 50 1 1 W -X CAP- 4 400 -300 100 L 50 50 1 1 I -X VOUT 5 400 300 100 L 50 50 1 1 w -X LV 6 -400 -200 100 R 50 50 1 1 I -X OSC 7 -400 0 100 R 50 50 1 1 I -X V+ 8 -400 300 100 R 50 50 1 1 W -ENDDRAW -ENDDEF -# -# LTC3630 -# -DEF LTC3630 U 0 40 Y Y 1 F N -F0 "U" -300 450 50 H V L CNN -F1 "LTC3630" 300 450 50 H V R CNN -F2 "" 0 -100 50 H V C CNN -F3 "" 0 -100 50 H V C CNN -ALIAS LTC3630A -$FPLIST - DFN* - MSOP* -$ENDFPLIST -DRAW -S -300 400 300 -500 0 1 10 f -X SW 1 400 300 100 L 50 50 1 1 w -X NC 2 -400 -300 100 R 50 50 1 1 N N -X Vin 3 -400 300 100 R 50 50 1 1 W -X NC 4 -400 200 100 R 50 50 1 1 N N -X RUN 5 -400 100 100 R 50 50 1 1 I -X Vprg2 6 400 -100 100 L 50 50 1 1 B -X Vprg1 7 400 -200 100 L 50 50 1 1 B -X GND 8 -100 -600 100 U 50 50 1 1 W -X Vfb 9 400 100 100 L 50 50 1 1 I -X SS 10 400 0 100 L 50 50 1 1 I -X Iset 11 -400 -100 100 R 50 50 1 1 I -X FBO 12 -400 -200 100 R 50 50 1 1 I -X NC 13 -400 -400 100 R 50 50 1 1 N N -X GND 14 0 -600 100 U 50 50 1 1 W -X NC 15 -400 0 100 R 50 50 1 1 N N -X GND 16 100 -600 100 U 50 50 1 1 W -X GND 17 200 -600 100 U 50 50 1 1 W -ENDDRAW -ENDDEF -# -# LTC3886 -# -DEF LTC3886 U 0 40 Y Y 1 F N -F0 "U" -550 150 50 H V C CNN -F1 "LTC3886" 500 150 50 H V C CNN -F2 "" -250 400 50 H V C CNN -F3 "http://cds.linear.com/docs/en/datasheet/3886fa.pdf" 0 350 50 H I C CNN -F4 "Linear Technology" 0 450 50 H I C CNN "Manufacturer" -$FPLIST - QFN* -$ENDFPLIST -DRAW -S -600 100 600 -3100 0 1 15 f -X SW0 1 -700 -300 100 R 50 50 1 1 O -X TG0 2 -700 0 100 R 50 50 1 1 O -X Isense0+ 4 -700 -700 100 R 50 50 1 1 I -X Isense0- 5 -700 -800 100 R 50 50 1 1 I -X TSNS0 6 -700 -1400 100 R 50 50 1 1 I -X Vsense0+ 7 -700 -1200 100 R 50 50 1 1 I -X Vsense0- 8 -700 -1300 100 R 50 50 1 1 I -X Isense1+ 9 700 -700 100 L 50 50 1 1 I -X Isense1- 10 700 -800 100 L 50 50 1 1 I -X RUN1 20 -700 -2600 100 R 50 50 1 1 I -X Vdd33 30 -200 -3200 100 U 50 50 1 1 w -X BOOST1 40 700 -200 100 L 50 50 1 1 O -X BG0 50 -700 -400 100 R 50 50 1 1 O -X Ithr0 11 -700 -2800 100 R 50 50 1 1 I -X ASEL0 21 -700 -1600 100 R 50 50 1 1 I -X Ith1 31 700 -2900 100 L 50 50 1 1 I -X Ith0 12 -700 -2900 100 R 50 50 1 1 I -X ASEL1 22 -700 -1700 100 R 50 50 1 1 I -X Ithr1 32 700 -2800 100 L 50 50 1 1 I -X BG1 42 700 -400 100 L 50 50 1 1 O -X BOOST0 52 -700 -200 100 R 50 50 1 1 O -X SYNC 13 -700 -1900 100 R 50 50 1 1 I -X Vout_cfg0 23 700 -1600 100 L 50 50 1 1 I -X PGOOD1 33 700 -2500 100 L 50 50 1 1 O -X EXTVcc 43 -700 -1100 100 R 50 50 1 1 W -X GND 53 0 -3200 100 U 50 50 1 1 W -X SCL 14 -700 -2200 100 R 50 50 1 1 I -X Vout_cfg1 24 700 -1700 100 L 50 50 1 1 I -X PGOOD0 34 700 -2400 100 L 50 50 1 1 O -X INTVcc 44 0 200 100 D 50 50 1 1 w -X SDA 15 -700 -2300 100 R 50 50 1 1 B -X FREQ_CFG 25 700 -1900 100 L 50 50 1 1 I -X Vsense1+ 35 700 -1200 100 L 50 50 1 1 I -X ~ALERT 16 -700 -2400 100 R 50 50 1 1 O -X PHAS_CFG 26 700 -2000 100 L 50 50 1 1 I -X TSNS1 36 700 -1400 100 L 50 50 1 1 I -X Iin- 46 300 200 100 D 50 50 1 1 I -X ~FAULT0 17 700 -2200 100 L 50 50 1 1 O -X Vdd25 27 200 -3200 100 U 50 50 1 1 w -X Iin+ 47 200 200 100 D 50 50 1 1 I -X ~FAULT1 18 700 -2300 100 L 50 50 1 1 O -X WP 28 -700 -2100 100 R 50 50 1 1 I -X TG1 38 700 0 100 L 50 50 1 1 O -X Vin 48 -200 200 100 D 50 50 1 1 W -X RUN0 19 -700 -2500 100 R 50 50 1 1 I -X SHARE_CLK 29 700 -2600 100 L 50 50 1 1 I -X SW1 39 700 -300 100 L 50 50 1 1 O -ENDDRAW -ENDDEF -# -# LTC3890 -# -DEF LTC3890 U 0 40 Y Y 1 F N -F0 "U" -600 250 50 H V L CNN -F1 "LTC3890" 600 250 50 H V R CNN -F2 "" 3150 -600 50 H V C CNN -F3 "http://cds.linear.com/docs/en/datasheet/3890fc.pdf" 0 550 50 H I C CNN -F4 "Linear Technology" 0 650 50 H I C CNN "Manufacturer" -$FPLIST - QFN* -$ENDFPLIST -DRAW -S -600 200 600 -1500 0 1 15 f -X SENSE1- 1 -700 -500 100 R 50 50 1 1 I -X FREQ 2 -700 -1000 100 R 50 50 1 1 I -X PHASMD 3 700 -1000 100 L 50 50 1 1 I -X CLKOUT 4 -700 -1100 100 R 50 50 1 1 O -X PLL/MODE 5 700 -1100 100 L 50 50 1 1 I -X SGND 6 -100 -1600 100 U 50 50 1 1 W -X RUN1 7 -700 -700 100 R 50 50 1 1 I -X RUN2 8 700 -700 100 L 50 50 1 1 I -X SENSE2- 9 700 -500 100 L 50 50 1 1 I -X SENSE2+ 10 700 -400 100 L 50 50 1 1 I -X EXTVcc 20 200 300 100 D 50 50 1 1 W -X ITH1 30 -700 -1300 100 R 50 50 1 1 O -X VFB2 11 700 -600 100 L 50 50 1 1 I -X PGND 21 100 -1600 100 U 50 50 1 1 W -X VFB1 31 -700 -600 100 R 50 50 1 1 I -X ITH2 12 700 -1300 100 L 50 50 1 1 O -X Vin 22 -100 300 100 D 50 50 1 1 W -X SENSE1+ 32 -700 -400 100 R 50 50 1 1 I -X SS2 13 300 -1600 100 U 50 50 1 1 I -X BG1 23 -700 -200 100 R 50 50 1 1 O -X SGND 33 0 -1600 100 U 50 50 1 1 W -X PGOOD2 14 700 -800 100 L 50 50 1 1 O -X BOOST1 24 -700 0 100 R 50 50 1 1 O -X TG2 15 700 100 100 L 50 50 1 1 O -X SW1 25 -700 -100 100 R 50 50 1 1 O -X SW2 16 700 -100 100 L 50 50 1 1 O -X TG1 26 -700 100 100 R 50 50 1 1 O -X BOOST2 17 700 0 100 L 50 50 1 1 O -X PGOOD1 27 -700 -800 100 R 50 50 1 1 O -X BG2 18 700 -200 100 L 50 50 1 1 O -X I_Lim 28 700 -1200 100 L 50 50 1 1 I -X INTVcc 19 100 300 100 D 50 50 1 1 w -X SS1 29 -300 -1600 100 U 50 50 1 1 I -ENDDRAW -ENDDEF -# -# LTC3890-1 -# -DEF LTC3890-1 U 0 40 Y Y 1 F N -F0 "U" -600 250 50 H V L CNN -F1 "LTC3890-1" 700 250 50 H V R CNN -F2 "" 3150 -600 50 H V C CNN -F3 "http://cds.linear.com/docs/en/datasheet/38901fb.pdf" 0 550 50 H I C CNN -F4 "Linear Technology" 0 650 50 H I C CNN "Manufacturer" -$FPLIST - SSOP* -$ENDFPLIST -DRAW -S -600 200 600 -1500 0 1 15 f -X ITH1 1 -700 -1300 100 R 50 50 1 1 O -X VFB1 2 -700 -600 100 R 50 50 1 1 I -X SENSE1+ 3 -700 -400 100 R 50 50 1 1 I -X SENSE1- 4 -700 -500 100 R 50 50 1 1 I -X FREQ 5 -700 -1000 100 R 50 50 1 1 I -X PLL/MODE 6 700 -1100 100 L 50 50 1 1 I -X SGND 7 -100 -1600 100 U 50 50 1 1 W -X RUN1 8 -700 -700 100 R 50 50 1 1 I -X RUN2 9 700 -700 100 L 50 50 1 1 I -X SENSE2- 10 700 -500 100 L 50 50 1 1 I -X EXTVcc 20 200 300 100 D 50 50 1 1 W -X SENSE2+ 11 700 -400 100 L 50 50 1 1 I -X PGND 21 100 -1600 100 U 50 50 1 1 W -X VFB2 12 700 -600 100 L 50 50 1 1 I -X Vin 22 -100 300 100 D 50 50 1 1 W -X ITH2 13 700 -1300 100 L 50 50 1 1 O -X BG1 23 -700 -200 100 R 50 50 1 1 O -X SS2 14 300 -1600 100 U 50 50 1 1 I -X BOOST1 24 -700 0 100 R 50 50 1 1 O -X TG2 15 700 100 100 L 50 50 1 1 O -X SW1 25 -700 -100 100 R 50 50 1 1 O -X SW2 16 700 -100 100 L 50 50 1 1 O -X TG1 26 -700 100 100 R 50 50 1 1 O -X BOOST2 17 700 0 100 L 50 50 1 1 O -X PGOOD1 27 -700 -800 100 R 50 50 1 1 O -X BG2 18 700 -200 100 L 50 50 1 1 O -X SS1 28 -300 -1600 100 U 50 50 1 1 I -X INTVcc 19 100 300 100 D 50 50 1 1 w -ENDDRAW -ENDDEF -# -# MAX5035AUPA -# -DEF MAX5035AUPA U 0 40 Y Y 1 F N -F0 "U" -300 450 50 H V L CNN -F1 "MAX5035AUPA" -300 350 50 H V L CNN -F2 "DIP-8" 300 -350 50 H V C CIN -F3 "" 0 -50 50 H V C CNN -ALIAS MAX5035BUPA MAX5035CUPA MAX5035DUPA -$FPLIST - PDIP* - DIP* -$ENDFPLIST -DRAW -S -300 300 300 -300 0 1 10 f -X BST 1 400 200 100 L 50 50 1 1 P -X VD 2 -400 -200 100 R 50 50 1 1 P -X SGND 3 -100 -400 100 U 50 50 1 1 W -X FB 4 400 -200 100 L 50 50 1 1 I -X ON/~OFF~ 5 -400 100 100 R 50 50 1 1 I -X GND 6 100 -400 100 U 50 50 1 1 W -X VIN 7 -400 200 100 R 50 50 1 1 W -X LX 8 400 0 100 L 50 50 1 1 W -ENDDRAW -ENDDEF -# -# MAX5035AUSA -# -DEF MAX5035AUSA U 0 40 Y Y 1 F N -F0 "U" -300 450 50 H V L CNN -F1 "MAX5035AUSA" -300 350 50 H V L CNN -F2 "SOIC-8" 300 -350 50 H V C CIN -F3 "" 0 -50 50 H V C CNN -ALIAS MAX5035AASA MAX5035BUSA MAX5035BASA MAX5035CUSA MAX5035CASA MAX5035DUSA MAX5035DASA MAX5035EUSA MAX5035EASA -$FPLIST - SO* -$ENDFPLIST -DRAW -S -300 300 300 -300 0 1 10 f -X BST 1 400 200 100 L 50 50 1 1 P -X VD 2 -400 -200 100 R 50 50 1 1 P -X SGND 3 -100 -400 100 U 50 50 1 1 W -X FB 4 400 -200 100 L 50 50 1 1 I -X ON/~OFF~ 5 -400 100 100 R 50 50 1 1 I -X GND 6 100 -400 100 U 50 50 1 1 W -X VIN 7 -400 200 100 R 50 50 1 1 W -X LX 8 400 0 100 L 50 50 1 1 W -ENDDRAW -ENDDEF -# -# MAX777 -# -DEF MAX777 U 0 30 Y Y 1 F N -F0 "U" -300 350 50 H V L CNN -F1 "MAX777" 300 350 50 H V R CNN -F2 "" 0 -100 50 H V C CNN -F3 "" 0 -100 50 H V C CNN -DRAW -S -300 300 300 -300 0 1 10 f -X ILIM 1 -400 100 100 R 50 50 1 1 I -X IN 2 -400 200 100 R 50 50 1 1 W -X AGND 3 0 -400 100 U 50 50 1 1 W -X PGND 4 100 -400 100 U 50 50 1 1 W -X LX 5 400 200 100 L 50 50 1 1 P -X OUT 6 400 100 100 L 50 50 1 1 w -X ~SHDN 7 -400 -100 100 R 50 50 1 1 I -ENDDRAW -ENDDEF -# -# MCP16311-MNY -# -DEF MCP16311-MNY U 0 40 Y Y 1 F N -F0 "U" -200 550 50 H V L CNN -F1 "MCP16311-MNY" -200 450 50 H V L CNN -F2 "TDFN-8" 50 100 50 H V C CNN -F3 "" -200 550 50 H V C CNN -ALIAS MCP16312-MNY -DRAW -S -200 400 300 -300 0 1 10 f -X Vfb 1 400 0 100 L 50 50 1 1 I -X Vcc 2 -300 0 100 R 50 50 1 1 W -X EN 3 -300 200 100 R 50 50 1 1 I -X Vin 4 -300 300 100 R 50 50 1 1 W -X Pgnd 5 0 -400 100 U 50 50 1 1 W -X SW 6 400 200 100 L 50 50 1 1 w -X BOOST 7 400 300 100 L 50 50 1 1 O -X Agnd 8 100 -400 100 U 50 50 1 1 W -X PAD 9 200 -400 100 U 50 50 1 1 O -ENDDRAW -ENDDEF -# -# MCP16311-MS -# -DEF MCP16311-MS U 0 40 Y Y 1 F N -F0 "U" -200 550 50 H V L CNN -F1 "MCP16311-MS" -200 450 50 H V L CNN -F2 "MSOP-8" 50 100 50 H V C CNN -F3 "" -200 550 50 H V C CNN -ALIAS MCP16312-MS -DRAW -S -200 400 300 -200 0 1 10 f -X Vfb 1 400 0 100 L 50 50 1 1 I -X Vcc 2 -300 0 100 R 50 50 1 1 W -X EN 3 -300 200 100 R 50 50 1 1 I -X Vin 4 -300 300 100 R 50 50 1 1 W -X Pgnd 5 0 -300 100 U 50 50 1 1 W -X SW 6 400 200 100 L 50 50 1 1 w -X BOOST 7 400 300 100 L 50 50 1 1 O -X Agnd 8 100 -300 100 U 50 50 1 1 W -ENDDRAW -ENDDEF -# -# NID60 -# -DEF NID60 U 0 40 Y Y 1 F N -F0 "U" -400 450 50 H V L CNN -F1 "NID60" -400 350 50 H V L CNN -F2 "" 0 0 50 H V C CIN -F3 "" 0 0 50 H V C CNN -ALIAS NID60S24-5 NID60S24-15 NID60S48-24 NID60S24-12 -DRAW -S -400 300 400 -200 0 1 10 f -X Vout 1 500 200 100 L 50 50 1 1 w -X Vout 2 500 100 100 L 50 50 1 1 P -X Vout 3 500 0 100 L 50 50 1 1 P -X Vout 4 500 -100 100 L 50 50 1 1 P -X COM 5 -100 -300 100 U 50 50 1 1 W -X COM 6 100 -300 100 U 50 50 1 1 W -X Vin 7 -500 200 100 R 50 50 1 1 W -X Vin 8 -500 100 100 R 50 50 1 1 W -X RC 11 -500 -100 100 R 50 50 1 1 I -ENDDRAW -ENDDEF -# -# ST1CC40PHR -# -DEF ST1CC40PHR U 0 40 Y Y 1 F N -F0 "U" -400 450 50 H V L CNN -F1 "ST1CC40PHR" -400 350 50 H V L CNN -F2 "HSOP-8" 350 -350 50 H V C CIN -F3 "" 0 0 50 H V C CNN -DRAW -S 400 300 -400 -300 0 1 10 f -X VIN_A 1 -500 100 100 R 50 50 1 1 I -X INH 2 -500 -100 100 R 50 50 1 1 I -X PGND 2 100 -400 100 U 50 50 1 1 w -X FB 3 500 -100 100 L 50 50 1 1 I -X AGND 4 -100 -400 100 U 50 50 1 1 W -X VIN_SW 6 -500 200 100 R 50 50 1 1 I -X SW 7 500 200 100 L 50 50 1 1 O -ENDDRAW -ENDDEF -# -# ST1S10PHR -# -DEF ST1S10PHR U 0 40 Y Y 1 F N -F0 "U" -400 450 50 H V L CNN -F1 "ST1S10PHR" -400 350 50 H V L CNN -F2 "HSOP-8" 350 -350 50 H V C CIN -F3 "" 0 0 50 H V C CNN -DRAW -S 400 300 -400 -300 0 1 10 f -X VIN_A 1 -500 100 100 R 50 50 1 1 I -X INH 2 -500 -100 100 R 50 50 1 1 I -X PGND 2 100 -400 100 U 50 50 1 1 w -X FB 3 500 -100 100 L 50 50 1 1 I -X AGND 4 -100 -400 100 U 50 50 1 1 W -X SYNC 5 -500 -200 100 R 50 50 1 1 B -X VIN_SW 6 -500 200 100 R 50 50 1 1 I -X SW 7 500 200 100 L 50 50 1 1 O -ENDDRAW -ENDDEF -# -# ST1S10PUR -# -DEF ST1S10PUR U 0 40 Y Y 1 F N -F0 "U" -400 450 50 H V L CNN -F1 "ST1S10PUR" -400 350 50 H V L CNN -F2 "DFN-8" 350 -350 50 H V C CIN -F3 "" 0 0 50 H V C CNN -DRAW -S 400 300 -400 -300 0 1 10 f -X VIN_A 1 -500 100 100 R 50 50 1 1 I -X INH 2 -500 -100 100 R 50 50 1 1 I -X PGND 2 100 -400 100 U 50 50 1 1 w -X FB 3 500 -100 100 L 50 50 1 1 I -X AGND 4 -100 -400 100 U 50 50 1 1 W -X SYNC 5 -500 -200 100 R 50 50 1 1 B -X VIN_SW 6 -500 200 100 R 50 50 1 1 I -X SW 7 500 200 100 L 50 50 1 1 O -ENDDRAW -ENDDEF -# -# ST1S14PHR -# -DEF ST1S14PHR U 0 40 Y Y 1 F N -F0 "U" -300 450 50 H V L CNN -F1 "ST1S14PHR" -300 350 50 H V L CNN -F2 "HSOP-8" 250 -350 50 H V C CIN -F3 "" 0 0 50 H V C CNN -DRAW -S 300 300 -300 -300 0 1 10 f -X BST 1 400 200 100 L 50 50 1 1 I -X PG 2 -400 -200 100 R 50 50 1 1 O -X ~EN1~ 3 -400 0 100 R 50 50 1 1 I -X FB 4 400 -200 100 L 50 50 1 1 I -X EN2 5 -400 -100 100 R 50 50 1 1 I -X GND 6 0 -400 100 U 50 50 1 1 W -X VIN 7 -400 200 100 R 50 50 1 1 I -X SW 8 400 0 100 L 50 50 1 1 O -ENDDRAW -ENDDEF -# -# TPS5430DDA -# -DEF TPS5430DDA U 0 40 Y Y 1 F N -F0 "U" -400 450 50 H V L CNN -F1 "TPS5430DDA" -400 350 50 H V L CNN -F2 "HSOIC8" 350 -350 50 H V C CIN -F3 "" 0 0 50 H V C CNN -ALIAS TPS5431DDA -$FPLIST - *SO* -$ENDFPLIST -DRAW -S -400 300 400 -300 0 1 10 f -X BOOT 1 500 200 100 L 50 50 1 1 I -X VSENSE 4 500 -200 100 L 50 50 1 1 I -X EN 5 -500 -200 100 R 50 50 1 1 I -X GND 6 -100 -400 100 U 50 50 1 1 W -X VIN 7 -500 200 100 R 50 50 1 1 I -X PH 8 500 0 100 L 50 50 1 1 O -X PAD 9 0 -400 100 U 50 50 1 1 P -ENDDRAW -ENDDEF -# -# TPS54360DDA -# -DEF TPS54360DDA U 0 40 Y Y 1 F N -F0 "U" -300 450 50 H V L CNN -F1 "TPS54360DDA" -300 350 50 H V L CNN -F2 "HSOIC8" 300 -450 50 H V C CIN -F3 "" 0 0 50 H V C CNN -ALIAS TPS54340DDA -$FPLIST - *SO* -$ENDFPLIST -DRAW -S -300 300 300 -400 0 1 10 f -X BOOT 1 400 200 100 L 50 50 1 1 I -X VIN 2 -400 200 100 R 50 50 1 1 I -X EN 3 -400 -300 100 R 50 50 1 1 I -X RT/CLK 4 -400 0 100 R 50 50 1 1 I -X FB 5 400 -300 100 L 50 50 1 1 I -X COMP 6 400 -100 100 L 50 50 1 1 P -X GND 7 -100 -500 100 U 50 50 1 1 W -X SW 8 400 0 100 L 50 50 1 1 O -X PAD 9 100 -500 100 U 50 50 1 1 P -ENDDRAW -ENDDEF -# -# TPS560200 -# -DEF TPS560200 U 0 40 Y Y 1 F N -F0 "U" -200 200 50 H V L CNN -F1 "TPS560200" 0 200 50 H V L CNN -F2 "TSOT23-5" 50 -250 50 H V L CNN -F3 "" -250 -350 50 H V C CNN -DRAW -S -200 150 200 -200 0 1 10 f -X EN 1 -300 0 100 R 50 50 1 1 I -X GND 2 0 -300 100 U 50 50 1 1 W -X PH 3 300 100 100 L 50 50 1 1 O -X VIN 4 -300 100 100 R 50 50 1 1 W -X FB 5 300 -100 100 L 50 50 1 1 I -ENDDRAW -ENDDEF -# -# TPS60500DGS -# -DEF TPS60500DGS U 0 40 Y Y 1 F N -F0 "U" -500 -350 50 H V L CNN -F1 "TPS60500DGS" 100 -350 50 H V L CNN -F2 "MSOP-10" 100 -450 50 H V L CIN -F3 "" 0 0 50 H V C CNN -ALIAS TPS60501DGS TPS60502DGS TPS60503DGS -$FPLIST - MSOP-10* -$ENDFPLIST -DRAW -S -500 400 500 -300 0 1 10 f -X ~EN 1 -600 -200 100 R 50 50 1 1 I -X PG 2 600 -200 100 L 50 50 1 1 C -X C2- 3 100 500 100 D 50 50 1 1 P -X C2+ 4 400 500 100 D 50 50 1 1 P -X VIN 5 -600 100 100 R 50 50 1 1 I -X C1+ 6 -100 500 100 D 50 50 1 1 P -X VOUT 7 600 100 100 L 50 50 1 1 w -X C1- 8 -400 500 100 D 50 50 1 1 P -X GND 9 0 -400 100 U 50 50 1 1 W -X FB 10 600 -100 100 L 50 50 1 1 I -ENDDRAW -ENDDEF -# -# TPS62200DBV -# -DEF TPS62200DBV U 0 40 Y Y 1 F N -F0 "U" -200 450 50 H V L CNN -F1 "TPS62200DBV" -200 350 50 H V L CNN -F2 "SOT-23-5" 0 -250 50 H V C CIN -F3 "" 0 100 50 H V C CNN -ALIAS TPS62201DBV TPS62202DBV TPS62203DBV TPS62204DBV TPS62205DBV TPS62207DBV TPS62208DBV -$FPLIST - SOT-23-5* -$ENDFPLIST -DRAW -S -200 300 200 -200 0 1 10 f -X VI 1 -300 200 100 R 50 50 1 1 W -X GND 2 -300 -100 100 R 50 50 1 1 W -X EN 3 -300 0 100 R 50 50 1 1 I -X FB 4 300 0 100 L 50 50 1 1 I -X SW 5 300 200 100 L 50 50 1 1 O -ENDDRAW -ENDDEF -# -#End Library diff --git a/KiCAD/EBiCS_BLE_Module/EBiCS_BLE_Module-cache.lib b/KiCAD/EBiCS_BLE_Module/EBiCS_BLE_Module-cache.lib deleted file mode 100644 index eda647e4..00000000 --- a/KiCAD/EBiCS_BLE_Module/EBiCS_BLE_Module-cache.lib +++ /dev/null @@ -1,187 +0,0 @@ -EESchema-LIBRARY Version 2.4 -#encoding utf-8 -# -# DC-DC_LM2574N-3.3 -# -DEF DC-DC_LM2574N-3.3 U 0 40 Y Y 1 F N -F0 "U" -400 350 50 H V L CNN -F1 "DC-DC_LM2574N-3.3" -400 250 50 H V L CNN -F2 "DIP-8" 350 -250 50 H V C CIN -F3 "" 0 0 50 H V C CNN -ALIAS LM2574N-3.3 LM2574N-5 LM2574N-15 LM2574N-ADJ -$FPLIST - DIP* -$ENDFPLIST -DRAW -S -400 200 400 -200 0 1 10 f -X FB 1 500 100 100 L 50 50 1 1 I -X ON/~OFF 3 -500 -100 100 R 50 50 1 1 I -X SGND 3 0 -300 100 U 50 50 1 1 W -X PGND 4 100 -300 100 U 50 50 1 1 W -X VIN 5 -500 100 100 R 50 50 1 1 W -X OUT 7 500 -100 100 L 50 50 1 1 O -ENDDRAW -ENDDEF -# -# Device_LED -# -DEF Device_LED D 0 40 N N 1 F N -F0 "D" 0 100 50 H V C CNN -F1 "Device_LED" 0 -100 50 H V C CNN -F2 "" 0 0 50 H I C CNN -F3 "" 0 0 50 H I C CNN -$FPLIST - LED* - LED_SMD:* - LED_THT:* -$ENDFPLIST -DRAW -P 2 0 1 8 -50 -50 -50 50 N -P 2 0 1 0 -50 0 50 0 N -P 4 0 1 8 50 -50 50 50 -50 0 50 -50 N -P 5 0 1 0 -120 -30 -180 -90 -150 -90 -180 -90 -180 -60 N -P 5 0 1 0 -70 -30 -130 -90 -100 -90 -130 -90 -130 -60 N -X K 1 -150 0 100 R 50 50 1 1 P -X A 2 150 0 100 L 50 50 1 1 P -ENDDRAW -ENDDEF -# -# Device_Q_NPN_BCE -# -DEF Device_Q_NPN_BCE Q 0 0 Y N 1 F N -F0 "Q" 200 50 50 H V L CNN -F1 "Device_Q_NPN_BCE" 200 -50 50 H V L CNN -F2 "" 200 100 50 H I C CNN -F3 "" 0 0 50 H I C CNN -DRAW -C 50 0 111 0 1 10 N -P 2 0 1 0 25 25 100 100 N -P 3 0 1 0 25 -25 100 -100 100 -100 N -P 3 0 1 20 25 75 25 -75 25 -75 N -P 5 0 1 0 50 -70 70 -50 90 -90 50 -70 50 -70 F -X B 1 -200 0 225 R 50 50 1 1 I -X C 2 100 200 100 D 50 50 1 1 P -X E 3 100 -200 100 U 50 50 1 1 P -ENDDRAW -ENDDEF -# -# Device_Q_PMOS_GSD -# -DEF Device_Q_PMOS_GSD Q 0 0 Y N 1 F N -F0 "Q" 200 50 50 H V L CNN -F1 "Device_Q_PMOS_GSD" 200 -50 50 H V L CNN -F2 "" 200 100 50 H I C CNN -F3 "" 0 0 50 H I C CNN -DRAW -C 65 0 111 0 1 10 N -C 100 -70 11 0 1 0 F -C 100 70 11 0 1 0 F -P 2 0 1 0 2 0 10 0 N -P 2 0 1 0 30 -70 100 -70 N -P 2 0 1 10 30 -50 30 -90 N -P 2 0 1 0 30 0 100 0 N -P 2 0 1 10 30 20 30 -20 N -P 2 0 1 0 30 70 100 70 N -P 2 0 1 10 30 90 30 50 N -P 2 0 1 0 100 -70 100 -100 N -P 2 0 1 0 100 -70 100 0 N -P 2 0 1 0 100 100 100 70 N -P 3 0 1 10 10 75 10 -75 10 -75 N -P 4 0 1 0 90 0 50 -15 50 15 90 0 F -P 4 0 1 0 100 -70 130 -70 130 70 100 70 N -P 4 0 1 0 110 -20 115 -15 145 -15 150 -10 N -P 4 0 1 0 130 -15 115 10 145 10 130 -15 N -X G 1 -200 0 200 R 50 50 1 1 I -X S 2 100 -200 100 U 50 50 1 1 P -X D 3 100 200 100 D 50 50 1 1 P -ENDDRAW -ENDDEF -# -# Device_R -# -DEF Device_R R 0 0 N Y 1 F N -F0 "R" 80 0 50 V V C CNN -F1 "Device_R" 0 0 50 V V C CNN -F2 "" -70 0 50 V I C CNN -F3 "" 0 0 50 H I C CNN -$FPLIST - R_* -$ENDFPLIST -DRAW -S -40 -100 40 100 0 1 10 N -X ~ 1 0 150 50 D 50 50 1 1 P -X ~ 2 0 -150 50 U 50 50 1 1 P -ENDDRAW -ENDDEF -# -# HM-10_HM-10 -# -DEF HM-10_HM-10 U 0 40 Y Y 1 F N -F0 "U" -50 250 60 H V C CNN -F1 "HM-10_HM-10" -50 100 60 H V C CNN -F2 "" -250 750 60 H I C CNN -F3 "" -250 750 60 H I C CNN -F4 "Bluetooth 4.0 BLE module" 250 550 61 H I C CNN "DESC" -F5 "JNHuaMao Technology" 50 350 61 H I C CNN "MFG_NAME" -F6 "HM-10" 150 450 61 H I C CNN "MPN" -$FPLIST - custom - footprint -$ENDFPLIST -DRAW -S -550 850 450 -750 0 1 0 N -X UART_TX 1 -750 750 200 R 50 50 1 1 O -X NC 10 -750 -150 200 R 50 50 1 1 N -X nRESET 11 -750 -250 200 R 50 50 1 1 I -X VCC 12 -750 -350 200 R 50 50 1 1 W -X GND 13 -750 -450 200 R 50 50 1 1 P -X GND 14 -400 -950 200 U 50 50 1 1 P -X USB_D- 15 -300 -950 200 U 50 50 1 1 N -X NC 16 -200 -950 200 U 50 50 1 1 N -X NC 17 -100 -950 200 U 50 50 1 1 N -X NC 18 0 -950 200 U 50 50 1 1 N -X NC 19 100 -950 200 U 50 50 1 1 N -X UART_RX 2 -750 650 200 R 50 50 1 1 I -X USB_D+ 20 200 -950 200 U 50 50 1 1 N -X GND 21 300 -950 200 U 50 50 1 1 P -X GND 22 650 -450 200 L 50 50 1 1 P -X PIO0 23 650 -350 200 L 50 50 1 1 I -X PIO1 24 650 -250 200 L 50 50 1 1 B -X PIO2 25 650 -150 200 L 50 50 1 1 B -X PIO3 26 650 -50 200 L 50 50 1 1 B -X PIO4 27 650 50 200 L 50 50 1 1 B -X PIO5 28 650 150 200 L 50 50 1 1 B -X PIO6 29 650 250 200 L 50 50 1 1 B -X UART_CTS 3 -750 550 200 R 50 50 1 1 I -X PIO7 30 650 350 200 L 50 50 1 1 B -X PIO8 31 650 450 200 L 50 50 1 1 B -X PIO9 32 650 550 200 L 50 50 1 1 B -X PIO10 33 650 650 200 L 50 50 1 1 B -X PIO11 34 650 750 200 L 50 50 1 1 B -X UART_RTS 4 -750 450 200 R 50 50 1 1 I -X NC 5 -750 350 200 R 50 50 1 1 N -X NC 6 -750 250 200 R 50 50 1 1 N -X NC 7 -750 150 200 R 50 50 1 1 N -X NC 8 -750 50 200 R 50 50 1 1 N -X NC 9 -750 -50 200 R 50 50 1 1 N -ENDDRAW -ENDDEF -# -# JST_HEADER_5 -# -DEF JST_HEADER_5 J 0 0 Y Y 1 F N -F0 "J" 0 300 60 H V C CNN -F1 "JST_HEADER_5" 0 -300 60 H V C CNN -F2 "" 0 0 60 H V C CNN -F3 "" 0 0 60 H V C CNN -DRAW -S 100 250 0 -250 0 1 0 N -X ~ 1 -100 200 100 R 35 50 1 1 P -X ~ 2 -100 100 100 R 35 50 1 1 P -X ~ 3 -100 0 100 R 35 50 1 1 P -X ~ 4 -100 -100 100 R 35 50 1 1 P -X ~ 5 -100 -200 100 R 35 50 1 1 P -ENDDRAW -ENDDEF -# -#End Library diff --git a/KiCAD/EBiCS_BLE_Module/EBiCS_BLE_Module.kicad_pcb b/KiCAD/EBiCS_BLE_Module/EBiCS_BLE_Module.kicad_pcb deleted file mode 100644 index 02c8ecb0..00000000 --- a/KiCAD/EBiCS_BLE_Module/EBiCS_BLE_Module.kicad_pcb +++ /dev/null @@ -1 +0,0 @@ -(kicad_pcb (version 4) (host kicad "dummy file") ) diff --git a/KiCAD/EBiCS_BLE_Module/EBiCS_BLE_Module.pro b/KiCAD/EBiCS_BLE_Module/EBiCS_BLE_Module.pro deleted file mode 100644 index 43385831..00000000 --- a/KiCAD/EBiCS_BLE_Module/EBiCS_BLE_Module.pro +++ /dev/null @@ -1,43 +0,0 @@ -update=08.11.2020 18:17:37 -version=1 -last_client=kicad -[general] -version=1 -RootSch= -BoardNm= -[pcbnew] -version=1 -LastNetListRead= -UseCmpFile=1 -PadDrill=0.600000000000 -PadDrillOvalY=0.600000000000 -PadSizeH=1.500000000000 -PadSizeV=1.500000000000 -PcbTextSizeV=1.500000000000 -PcbTextSizeH=1.500000000000 -PcbTextThickness=0.300000000000 -ModuleTextSizeV=1.000000000000 -ModuleTextSizeH=1.000000000000 -ModuleTextSizeThickness=0.150000000000 -SolderMaskClearance=0.000000000000 -SolderMaskMinWidth=0.000000000000 -DrawSegmentWidth=0.200000000000 -BoardOutlineThickness=0.100000000000 -ModuleOutlineThickness=0.150000000000 -[cvpcb] -version=1 -NetIExt=net -[eeschema] -version=1 -LibDir= -[eeschema/libraries] -[schematic_editor] -version=1 -PageLayoutDescrFile= -PlotDirectoryName= -SubpartIdSeparator=0 -SubpartFirstId=65 -NetFmtName= -SpiceAjustPassiveValues=0 -LabSize=50 -ERC_TestSimilarLabels=1 diff --git a/KiCAD/EBiCS_BLE_Module/EBiCS_BLE_Module.sch b/KiCAD/EBiCS_BLE_Module/EBiCS_BLE_Module.sch deleted file mode 100644 index 837ccaca..00000000 --- a/KiCAD/EBiCS_BLE_Module/EBiCS_BLE_Module.sch +++ /dev/null @@ -1,248 +0,0 @@ -EESchema Schematic File Version 4 -LIBS:EBiCS_BLE_Module-cache -EELAYER 30 0 -EELAYER END -$Descr A4 11693 8268 -encoding utf-8 -Sheet 1 1 -Title "" -Date "" -Rev "" -Comp "" -Comment1 "" -Comment2 "" -Comment3 "" -Comment4 "" -$EndDescr -$Comp -L HM-10:HM-10 U2 -U 1 1 5FA814D7 -P 6100 3800 -F 0 "U2" H 6050 4837 60 0000 C CNN -F 1 "HM-10" H 6050 4731 60 0000 C CNN -F 2 "" H 5850 4550 60 0001 C CNN -F 3 "" H 5850 4550 60 0001 C CNN -F 4 "Bluetooth 4.0 BLE module" H 6350 4350 61 0001 C CNN "DESC" -F 5 "JNHuaMao Technology" H 6150 4150 61 0001 C CNN "MFG_NAME" -F 6 "HM-10" H 6250 4250 61 0001 C CNN "MPN" - 1 6100 3800 - 1 0 0 -1 -$EndComp -$Comp -L DC-DC:LM2574N-3.3 U1 -U 1 1 5FA8238A -P 3300 2550 -F 0 "U1" H 3300 3099 50 0000 C CNN -F 1 "LM2574N-3.3" H 3300 3008 50 0000 C CNN -F 2 "DIP-8" H 3300 2917 50 0000 C CIN -F 3 "www.national.com/ds/LM/LM2574.pdf" H 3300 2826 50 0000 C CNN - 1 3300 2550 - 1 0 0 -1 -$EndComp -$Comp -L JST:HEADER_5 J1 -U 1 1 5FA837D2 -P 1550 3850 -F 0 "J1" H 1542 3413 60 0000 C CNN -F 1 "HEADER_5" H 1542 3519 60 0000 C CNN -F 2 "" H 1550 3850 60 0000 C CNN -F 3 "" H 1550 3850 60 0000 C CNN - 1 1550 3850 - -1 0 0 1 -$EndComp -Wire Wire Line - 1650 4050 4300 4050 -Wire Wire Line - 4300 4050 4300 3050 -Wire Wire Line - 4300 3050 5350 3050 -Wire Wire Line - 1650 3950 4250 3950 -Wire Wire Line - 4250 3950 4250 3150 -Wire Wire Line - 4250 3150 5350 3150 -Wire Wire Line - 1650 3850 3400 3850 -Wire Wire Line - 3400 3850 3400 2850 -Wire Wire Line - 3400 3850 3400 4250 -Wire Wire Line - 3400 4250 5350 4250 -Connection ~ 3400 3850 -Wire Wire Line - 1650 3650 2550 3650 -Wire Wire Line - 2550 3650 2550 2650 -Wire Wire Line - 2550 2450 2800 2450 -Wire Wire Line - 2550 2650 2800 2650 -Connection ~ 2550 2650 -Wire Wire Line - 2550 2650 2550 2450 -Wire Wire Line - 3800 2650 3800 4150 -Wire Wire Line - 3800 4150 5350 4150 -$Comp -L Device:Q_PMOS_GSD Q2 -U 1 1 5FA88256 -P 9100 3400 -F 0 "Q2" H 9306 3354 50 0000 L CNN -F 1 "IRLF9014" H 9306 3445 50 0000 L CNN -F 2 "" H 9300 3500 50 0001 C CNN -F 3 "~" H 9100 3400 50 0001 C CNN - 1 9100 3400 - 1 0 0 1 -$EndComp -$Comp -L Device:Q_NPN_BCE Q1 -U 1 1 5FA88D7B -P 8000 3600 -F 0 "Q1" H 8191 3646 50 0000 L CNN -F 1 "Q_NPN_BCE" H 8191 3555 50 0000 L CNN -F 2 "" H 8200 3700 50 0001 C CNN -F 3 "~" H 8000 3600 50 0001 C CNN - 1 8000 3600 - 1 0 0 -1 -$EndComp -$Comp -L Device:R R5 -U 1 1 5FA8B0CA -P 8450 3250 -F 0 "R5" H 8520 3296 50 0000 L CNN -F 1 "20k" H 8520 3205 50 0000 L CNN -F 2 "" V 8380 3250 50 0001 C CNN -F 3 "~" H 8450 3250 50 0001 C CNN - 1 8450 3250 - 1 0 0 -1 -$EndComp -Wire Wire Line - 2550 2450 2550 1800 -Wire Wire Line - 2550 1800 7250 1800 -Connection ~ 2550 2450 -Wire Wire Line - 9200 1800 9200 3200 -Wire Wire Line - 8100 3400 8450 3400 -$Comp -L Device:R R3 -U 1 1 5FA8D17F -P 7650 3600 -F 0 "R3" V 7443 3600 50 0000 C CNN -F 1 "4k7" V 7534 3600 50 0000 C CNN -F 2 "" V 7580 3600 50 0001 C CNN -F 3 "~" H 7650 3600 50 0001 C CNN - 1 7650 3600 - 0 1 1 0 -$EndComp -Wire Wire Line - 3400 4250 3400 5500 -Wire Wire Line - 3400 5500 7250 5500 -Wire Wire Line - 8100 5500 8100 3800 -Connection ~ 3400 4250 -Wire Wire Line - 6750 3950 7500 3950 -Wire Wire Line - 7500 3950 7500 3600 -Wire Wire Line - 9200 3600 9200 5350 -Wire Wire Line - 9200 5350 1950 5350 -Wire Wire Line - 1950 5350 1950 3750 -Wire Wire Line - 1950 3750 1650 3750 -$Comp -L Device:R R1 -U 1 1 5FA8FDE2 -P 7250 3200 -F 0 "R1" H 7320 3246 50 0000 L CNN -F 1 "10k" H 7320 3155 50 0000 L CNN -F 2 "" V 7180 3200 50 0001 C CNN -F 3 "~" H 7250 3200 50 0001 C CNN - 1 7250 3200 - 1 0 0 -1 -$EndComp -$Comp -L Device:R R2 -U 1 1 5FA9045D -P 7250 3500 -F 0 "R2" H 7320 3546 50 0000 L CNN -F 1 "420" H 7320 3455 50 0000 L CNN -F 2 "" V 7180 3500 50 0001 C CNN -F 3 "~" H 7250 3500 50 0001 C CNN - 1 7250 3500 - 1 0 0 -1 -$EndComp -Wire Wire Line - 7250 1800 7250 3050 -Connection ~ 7250 1800 -Wire Wire Line - 7250 3650 7250 5500 -Connection ~ 7250 5500 -Wire Wire Line - 7250 5500 8100 5500 -Wire Wire Line - 7250 3350 7000 3350 -Wire Wire Line - 7000 3350 7000 3750 -Wire Wire Line - 7000 3750 6750 3750 -Connection ~ 7250 3350 -$Comp -L Device:LED D1 -U 1 1 5FAC254D -P 8450 2050 -F 0 "D1" V 8489 1933 50 0000 R CNN -F 1 "LED" V 8398 1933 50 0000 R CNN -F 2 "" H 8450 2050 50 0001 C CNN -F 3 "~" H 8450 2050 50 0001 C CNN - 1 8450 2050 - 0 -1 -1 0 -$EndComp -$Comp -L Device:R R4 -U 1 1 5FAC4085 -P 8450 2550 -F 0 "R4" H 8520 2596 50 0000 L CNN -F 1 "10k" H 8520 2505 50 0000 L CNN -F 2 "" V 8380 2550 50 0001 C CNN -F 3 "~" H 8450 2550 50 0001 C CNN - 1 8450 2550 - 1 0 0 -1 -$EndComp -Wire Wire Line - 7250 1800 8450 1800 -Wire Wire Line - 8450 1800 8450 1900 -Connection ~ 8450 1800 -Wire Wire Line - 8450 1800 9200 1800 -Wire Wire Line - 8450 2200 8450 2400 -Wire Wire Line - 8450 2700 8450 2900 -Wire Wire Line - 8450 2900 8900 2900 -Wire Wire Line - 8900 2900 8900 3400 -Connection ~ 8450 2900 -Wire Wire Line - 8450 2900 8450 3100 -Text Notes 1150 3700 0 50 ~ 0 -Batt+ -Text Notes 950 3800 0 50 ~ 0 -Power Lock -Text Notes 1200 3900 0 50 ~ 0 -GND -Text Notes 1050 4000 0 50 ~ 0 -UART Rx -Text Notes 1050 4100 0 50 ~ 0 -UART Tx -$EndSCHEMATC diff --git a/KiCAD/EBiCS_BLE_Module/EBiCS_BLE_Module.sch-bak b/KiCAD/EBiCS_BLE_Module/EBiCS_BLE_Module.sch-bak deleted file mode 100644 index ad24f8e9..00000000 --- a/KiCAD/EBiCS_BLE_Module/EBiCS_BLE_Module.sch-bak +++ /dev/null @@ -1,207 +0,0 @@ -EESchema Schematic File Version 4 -EELAYER 30 0 -EELAYER END -$Descr A4 11693 8268 -encoding utf-8 -Sheet 1 1 -Title "" -Date "" -Rev "" -Comp "" -Comment1 "" -Comment2 "" -Comment3 "" -Comment4 "" -$EndDescr -$Comp -L HM-10:HM-10 U? -U 1 1 5FA814D7 -P 6100 3800 -F 0 "U?" H 6050 4837 60 0000 C CNN -F 1 "HM-10" H 6050 4731 60 0000 C CNN -F 2 "" H 5850 4550 60 0001 C CNN -F 3 "" H 5850 4550 60 0001 C CNN -F 4 "Bluetooth 4.0 BLE module" H 6350 4350 61 0001 C CNN "DESC" -F 5 "JNHuaMao Technology" H 6150 4150 61 0001 C CNN "MFG_NAME" -F 6 "HM-10" H 6250 4250 61 0001 C CNN "MPN" - 1 6100 3800 - 1 0 0 -1 -$EndComp -$Comp -L DC-DC:LM2574N-3.3 U? -U 1 1 5FA8238A -P 3300 2550 -F 0 "U?" H 3300 3099 50 0000 C CNN -F 1 "LM2574N-3.3" H 3300 3008 50 0000 C CNN -F 2 "DIP-8" H 3300 2917 50 0000 C CIN -F 3 "www.national.com/ds/LM/LM2574.pdf" H 3300 2826 50 0000 C CNN - 1 3300 2550 - 1 0 0 -1 -$EndComp -$Comp -L JST:HEADER_5 J? -U 1 1 5FA837D2 -P 1550 3850 -F 0 "J?" H 1542 3413 60 0000 C CNN -F 1 "HEADER_5" H 1542 3519 60 0000 C CNN -F 2 "" H 1550 3850 60 0000 C CNN -F 3 "" H 1550 3850 60 0000 C CNN - 1 1550 3850 - -1 0 0 1 -$EndComp -Wire Wire Line - 1650 4050 4300 4050 -Wire Wire Line - 4300 4050 4300 3050 -Wire Wire Line - 4300 3050 5350 3050 -Wire Wire Line - 1650 3950 4250 3950 -Wire Wire Line - 4250 3950 4250 3150 -Wire Wire Line - 4250 3150 5350 3150 -Wire Wire Line - 1650 3850 3400 3850 -Wire Wire Line - 3400 3850 3400 2850 -Wire Wire Line - 3400 3850 3400 4250 -Wire Wire Line - 3400 4250 5350 4250 -Connection ~ 3400 3850 -Wire Wire Line - 1650 3650 2550 3650 -Wire Wire Line - 2550 3650 2550 2650 -Wire Wire Line - 2550 2450 2800 2450 -Wire Wire Line - 2550 2650 2800 2650 -Connection ~ 2550 2650 -Wire Wire Line - 2550 2650 2550 2450 -Wire Wire Line - 3800 2650 3800 4150 -Wire Wire Line - 3800 4150 5350 4150 -$Comp -L Device:Q_PMOS_GSD Q? -U 1 1 5FA88256 -P 9100 3400 -F 0 "Q?" H 9306 3354 50 0000 L CNN -F 1 "Q_PMOS_GSD" H 9306 3445 50 0000 L CNN -F 2 "" H 9300 3500 50 0001 C CNN -F 3 "~" H 9100 3400 50 0001 C CNN - 1 9100 3400 - 1 0 0 1 -$EndComp -$Comp -L Device:Q_NPN_BCE Q? -U 1 1 5FA88D7B -P 8000 3600 -F 0 "Q?" H 8191 3646 50 0000 L CNN -F 1 "Q_NPN_BCE" H 8191 3555 50 0000 L CNN -F 2 "" H 8200 3700 50 0001 C CNN -F 3 "~" H 8000 3600 50 0001 C CNN - 1 8000 3600 - 1 0 0 -1 -$EndComp -$Comp -L Device:R R? -U 1 1 5FA8B0CA -P 8450 3250 -F 0 "R?" H 8520 3296 50 0000 L CNN -F 1 "20k" H 8520 3205 50 0000 L CNN -F 2 "" V 8380 3250 50 0001 C CNN -F 3 "~" H 8450 3250 50 0001 C CNN - 1 8450 3250 - 1 0 0 -1 -$EndComp -Wire Wire Line - 2550 2450 2550 1800 -Wire Wire Line - 2550 1800 7250 1800 -Connection ~ 2550 2450 -Wire Wire Line - 9200 1800 9200 3200 -Wire Wire Line - 8100 3400 8450 3400 -$Comp -L Device:R R? -U 1 1 5FA8D17F -P 7650 3600 -F 0 "R?" V 7443 3600 50 0000 C CNN -F 1 "4k7" V 7534 3600 50 0000 C CNN -F 2 "" V 7580 3600 50 0001 C CNN -F 3 "~" H 7650 3600 50 0001 C CNN - 1 7650 3600 - 0 1 1 0 -$EndComp -Wire Wire Line - 3400 4250 3400 5500 -Wire Wire Line - 3400 5500 7250 5500 -Wire Wire Line - 8100 5500 8100 3800 -Connection ~ 3400 4250 -Wire Wire Line - 6750 3950 7500 3950 -Wire Wire Line - 7500 3950 7500 3600 -Wire Wire Line - 9200 3600 9200 5350 -Wire Wire Line - 9200 5350 1950 5350 -Wire Wire Line - 1950 5350 1950 3750 -Wire Wire Line - 1950 3750 1650 3750 -$Comp -L Device:R R? -U 1 1 5FA8FDE2 -P 7250 3200 -F 0 "R?" H 7320 3246 50 0000 L CNN -F 1 "10k" H 7320 3155 50 0000 L CNN -F 2 "" V 7180 3200 50 0001 C CNN -F 3 "~" H 7250 3200 50 0001 C CNN - 1 7250 3200 - 1 0 0 -1 -$EndComp -$Comp -L Device:R R? -U 1 1 5FA9045D -P 7250 3500 -F 0 "R?" H 7320 3546 50 0000 L CNN -F 1 "420" H 7320 3455 50 0000 L CNN -F 2 "" V 7180 3500 50 0001 C CNN -F 3 "~" H 7250 3500 50 0001 C CNN - 1 7250 3500 - 1 0 0 -1 -$EndComp -Wire Wire Line - 7250 1800 7250 3050 -Connection ~ 7250 1800 -Wire Wire Line - 7250 3650 7250 5500 -Connection ~ 7250 5500 -Wire Wire Line - 7250 5500 8100 5500 -Wire Wire Line - 7250 3350 7000 3350 -Wire Wire Line - 7000 3350 7000 3750 -Wire Wire Line - 7000 3750 6750 3750 -Connection ~ 7250 3350 -Connection ~ 8450 3400 -Wire Wire Line - 8450 3400 8900 3400 -Wire Wire Line - 7250 1800 8450 1800 -Wire Wire Line - 8450 3100 8450 1800 -Connection ~ 8450 1800 -Wire Wire Line - 8450 1800 9200 1800 -$EndSCHEMATC diff --git a/KiCAD/EBiCS_BLE_Module/sym-lib-table b/KiCAD/EBiCS_BLE_Module/sym-lib-table deleted file mode 100644 index 98197f09..00000000 --- a/KiCAD/EBiCS_BLE_Module/sym-lib-table +++ /dev/null @@ -1,5 +0,0 @@ -(sym_lib_table - (lib (name HM-10)(type Legacy)(uri C:/Users/Gaswerke/git/EBiCS_Firmware/KiCAD/HM-10.pretty/HM-10.lib)(options "")(descr "")) - (lib (name DC-DC)(type Legacy)(uri C:/Users/Gaswerke/git/EBiCS_Firmware/KiCAD/Converters_DCDC_ACDC.pretty/dc-dc.lib)(options "")(descr "")) - (lib (name JST)(type Legacy)(uri C:/Users/Gaswerke/git/EBiCS_Firmware/KiCAD/Connectors_JST.pretty/w_connectors.lib)(options "")(descr "")) -) diff --git a/KiCAD/HM-10.pretty/HM-10.dcm b/KiCAD/HM-10.pretty/HM-10.dcm deleted file mode 100644 index 48a00bb3..00000000 --- a/KiCAD/HM-10.pretty/HM-10.dcm +++ /dev/null @@ -1,7 +0,0 @@ -EESchema-DOCLIB Version 2.0 -# -$CMP HM-10 -D HM-10 BLE Module -$ENDCMP -# -#End Doc Library diff --git a/KiCAD/HM-10.pretty/HM-10.lib b/KiCAD/HM-10.pretty/HM-10.lib deleted file mode 100644 index 68281cf3..00000000 --- a/KiCAD/HM-10.pretty/HM-10.lib +++ /dev/null @@ -1,57 +0,0 @@ -EESchema-LIBRARY Version 2.3 -#encoding utf-8 -# -# HM-10 -# -DEF HM-10 U 0 40 Y Y 1 F N -$FPLIST -custom -footprint -$ENDFPLIST -F0 "U" -50 250 60 H V C CNN -F1 "HM-10" -50 100 60 H V C CNN -F2 "" -250 750 60 H I C CNN -F3 "" -250 750 60 H I C CNN -F4 "Bluetooth 4.0 BLE module" 250 550 61 H I C CNN "DESC" -F5 "JNHuaMao Technology" 50 350 61 H I C CNN "MFG_NAME" -F6 "HM-10" 150 450 61 H I C CNN "MPN" -DRAW -S -550 850 450 -750 0 1 0 N -X UART_TX 1 -750 750 200 R 50 50 1 1 O -X UART_RX 2 -750 650 200 R 50 50 1 1 I -X UART_CTS 3 -750 550 200 R 50 50 1 1 I -X UART_RTS 4 -750 450 200 R 50 50 1 1 I -X NC 5 -750 350 200 R 50 50 1 1 N -X NC 6 -750 250 200 R 50 50 1 1 N -X NC 7 -750 150 200 R 50 50 1 1 N -X NC 8 -750 50 200 R 50 50 1 1 N -X NC 9 -750 -50 200 R 50 50 1 1 N -X NC 10 -750 -150 200 R 50 50 1 1 N -X USB_D+ 20 200 -950 200 U 50 50 1 1 N -X PIO7 30 650 350 200 L 50 50 1 1 B -X nRESET 11 -750 -250 200 R 50 50 1 1 I -X GND 21 300 -950 200 U 50 50 1 1 P -X PIO8 31 650 450 200 L 50 50 1 1 B -X VCC 12 -750 -350 200 R 50 50 1 1 W -X GND 22 650 -450 200 L 50 50 1 1 P -X PIO9 32 650 550 200 L 50 50 1 1 B -X GND 13 -750 -450 200 R 50 50 1 1 P -X PIO0 23 650 -350 200 L 50 50 1 1 I -X PIO10 33 650 650 200 L 50 50 1 1 B -X GND 14 -400 -950 200 U 50 50 1 1 P -X PIO1 24 650 -250 200 L 50 50 1 1 B -X PIO11 34 650 750 200 L 50 50 1 1 B -X USB_D- 15 -300 -950 200 U 50 50 1 1 N -X PIO2 25 650 -150 200 L 50 50 1 1 B -X NC 16 -200 -950 200 U 50 50 1 1 N -X PIO3 26 650 -50 200 L 50 50 1 1 B -X NC 17 -100 -950 200 U 50 50 1 1 N -X PIO4 27 650 50 200 L 50 50 1 1 B -X NC 18 0 -950 200 U 50 50 1 1 N -X PIO5 28 650 150 200 L 50 50 1 1 B -X NC 19 100 -950 200 U 50 50 1 1 N -X PIO6 29 650 250 200 L 50 50 1 1 B -ENDDRAW -ENDDEF -# -#End Library diff --git a/KiCAD/HM-10.pretty/HM10_footprint.kicad_mod b/KiCAD/HM-10.pretty/HM10_footprint.kicad_mod deleted file mode 100644 index 414f85c0..00000000 --- a/KiCAD/HM-10.pretty/HM10_footprint.kicad_mod +++ /dev/null @@ -1,46 +0,0 @@ -(module HM10_footprint (layer F.Cu) (tedit 584A8173) - (fp_text reference REF** (at 6.9 -16.5) (layer F.SilkS) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_text value HM10 (at 6.95 -19.1) (layer F.Fab) - (effects (font (size 1 1) (thickness 0.15))) - ) - (fp_line (start 0 0) (end 0 -26.9) (layer F.SilkS) (width 0.15)) - (fp_line (start 0 -26.9) (end 13 -26.9) (layer F.SilkS) (width 0.15)) - (fp_line (start 13 -26.9) (end 13 0) (layer F.SilkS) (width 0.15)) - (fp_line (start 13 0) (end 0 0) (layer F.SilkS) (width 0.15)) - (pad 14 smd oval (at 1.25 0) (size 1 2) (layers F.Cu F.Paste F.Mask)) - (pad 15 smd oval (at 2.75 0) (size 1 2) (layers F.Cu F.Paste F.Mask)) - (pad 16 smd oval (at 4.25 0) (size 1 2) (layers F.Cu F.Paste F.Mask)) - (pad 17 smd oval (at 5.75 0) (size 1 2) (layers F.Cu F.Paste F.Mask)) - (pad 18 smd oval (at 7.25 0) (size 1 2) (layers F.Cu F.Paste F.Mask)) - (pad 19 smd oval (at 8.75 0) (size 1 2) (layers F.Cu F.Paste F.Mask)) - (pad 20 smd oval (at 10.25 0) (size 1 2) (layers F.Cu F.Paste F.Mask)) - (pad 21 smd oval (at 11.75 0) (size 1 2) (layers F.Cu F.Paste F.Mask)) - (pad 13 smd oval (at 0 -1.79) (size 2 1) (layers F.Cu F.Paste F.Mask)) - (pad 12 smd oval (at 0 -3.29) (size 2 1) (layers F.Cu F.Paste F.Mask)) - (pad 11 smd oval (at 0 -4.79) (size 2 1) (layers F.Cu F.Paste F.Mask)) - (pad 10 smd oval (at 0 -6.29) (size 2 1) (layers F.Cu F.Paste F.Mask)) - (pad 9 smd oval (at 0 -7.79) (size 2 1) (layers F.Cu F.Paste F.Mask)) - (pad 8 smd oval (at 0 -9.29) (size 2 1) (layers F.Cu F.Paste F.Mask)) - (pad 7 smd oval (at 0 -10.79) (size 2 1) (layers F.Cu F.Paste F.Mask)) - (pad 6 smd oval (at 0 -12.29) (size 2 1) (layers F.Cu F.Paste F.Mask)) - (pad 5 smd oval (at 0 -13.79) (size 2 1) (layers F.Cu F.Paste F.Mask)) - (pad 4 smd oval (at 0 -15.29) (size 2 1) (layers F.Cu F.Paste F.Mask)) - (pad 3 smd oval (at 0 -16.79) (size 2 1) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd oval (at 0 -18.29) (size 2 1) (layers F.Cu F.Paste F.Mask)) - (pad 1 smd oval (at 0 -19.79) (size 2 1) (layers F.Cu F.Paste F.Mask)) - (pad 22 smd oval (at 13 -1.79) (size 2 1) (layers F.Cu F.Paste F.Mask)) - (pad 23 smd oval (at 13 -3.29) (size 2 1) (layers F.Cu F.Paste F.Mask)) - (pad 24 smd oval (at 13 -4.79) (size 2 1) (layers F.Cu F.Paste F.Mask)) - (pad 25 smd oval (at 13 -6.29) (size 2 1) (layers F.Cu F.Paste F.Mask)) - (pad 26 smd oval (at 13 -7.79) (size 2 1) (layers F.Cu F.Paste F.Mask)) - (pad 27 smd oval (at 13 -9.29) (size 2 1) (layers F.Cu F.Paste F.Mask)) - (pad 28 smd oval (at 13 -10.79) (size 2 1) (layers F.Cu F.Paste F.Mask)) - (pad 29 smd oval (at 13 -12.29) (size 2 1) (layers F.Cu F.Paste F.Mask)) - (pad 30 smd oval (at 13 -13.79) (size 2 1) (layers F.Cu F.Paste F.Mask)) - (pad 31 smd oval (at 13 -15.29) (size 2 1) (layers F.Cu F.Paste F.Mask)) - (pad 32 smd oval (at 13 -16.79) (size 2 1) (layers F.Cu F.Paste F.Mask)) - (pad 33 smd oval (at 13 -18.29) (size 2 1) (layers F.Cu F.Paste F.Mask)) - (pad 34 smd oval (at 13 -19.79) (size 2 1) (layers F.Cu F.Paste F.Mask)) -) diff --git a/Lib/libarm_cortexM3l_math.a b/Lib/libarm_cortexM3l_math.a new file mode 100644 index 00000000..755d769e Binary files /dev/null and b/Lib/libarm_cortexM3l_math.a differ diff --git a/LishuiFOC_01.ioc b/LishuiFOC_01.ioc deleted file mode 100644 index e2a31411..00000000 --- a/LishuiFOC_01.ioc +++ /dev/null @@ -1,298 +0,0 @@ -#MicroXplorer Configuration settings - do not modify -ADC1.Channel-3\#ChannelInjectedConversion=ADC_CHANNEL_3 -ADC1.Channel-4\#ChannelRegularConversion=ADC_CHANNEL_3 -ADC1.ContinuousConvMode=DISABLE -ADC1.DataAlign=ADC_DATAALIGN_RIGHT -ADC1.DiscontinuousConvMode=DISABLE -ADC1.EnableAnalogWatchDog=false -ADC1.EnableRegularConversion=ENABLE -ADC1.ExternalTrigConv=ADC_SOFTWARE_START -ADC1.ExternalTrigInjecConv=ADC_INJECTED_SOFTWARE_START -ADC1.IPParameters=Mode,EnableRegularConversion,Rank-3\#ChannelInjectedConversion,Channel-3\#ChannelInjectedConversion,SamplingTime-3\#ChannelInjectedConversion,InjectedOffset-3\#ChannelInjectedConversion,InjNumberOfConversion,ExternalTrigInjecConv,Rank-4\#ChannelRegularConversion,Channel-4\#ChannelRegularConversion,SamplingTime-4\#ChannelRegularConversion,NbrOfConversionFlag,NbrOfConversion,DataAlign,ScanConvMode,ContinuousConvMode,DiscontinuousConvMode,ExternalTrigConv,InjectedConvMode,EnableAnalogWatchDog,master -ADC1.InjNumberOfConversion=1 -ADC1.InjectedConvMode=None -ADC1.InjectedOffset-3\#ChannelInjectedConversion=0 -ADC1.Mode=ADC_DUALMODE_REGSIMULT_INJECSIMULT -ADC1.NbrOfConversion=1 -ADC1.NbrOfConversionFlag=1 -ADC1.Rank-3\#ChannelInjectedConversion=1 -ADC1.Rank-4\#ChannelRegularConversion=1 -ADC1.SamplingTime-3\#ChannelInjectedConversion=ADC_SAMPLETIME_1CYCLE_5 -ADC1.SamplingTime-4\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 -ADC1.ScanConvMode=ADC_SCAN_DISABLE -ADC1.master=1 -ADC2.Channel-1\#ChannelInjectedConversion=ADC_CHANNEL_4 -ADC2.EnableRegularConversion=DISABLE -ADC2.IPParameters=Mode,EnableRegularConversion,Rank-1\#ChannelInjectedConversion,Channel-1\#ChannelInjectedConversion,SamplingTime-1\#ChannelInjectedConversion,InjectedOffset-1\#ChannelInjectedConversion,InjNumberOfConversion -ADC2.InjNumberOfConversion=1 -ADC2.InjectedOffset-1\#ChannelInjectedConversion=0 -ADC2.Mode=ADC_DUALMODE_REGSIMULT_INJECSIMULT -ADC2.Rank-1\#ChannelInjectedConversion=1 -ADC2.SamplingTime-1\#ChannelInjectedConversion=ADC_SAMPLETIME_1CYCLE_5 -Dma.ADC1.0.Direction=DMA_PERIPH_TO_MEMORY -Dma.ADC1.0.Instance=DMA1_Channel1 -Dma.ADC1.0.MemDataAlignment=DMA_MDATAALIGN_HALFWORD -Dma.ADC1.0.MemInc=DMA_MINC_ENABLE -Dma.ADC1.0.Mode=DMA_NORMAL -Dma.ADC1.0.PeriphDataAlignment=DMA_PDATAALIGN_HALFWORD -Dma.ADC1.0.PeriphInc=DMA_PINC_DISABLE -Dma.ADC1.0.Priority=DMA_PRIORITY_MEDIUM -Dma.ADC1.0.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority -Dma.Request0=ADC1 -Dma.Request1=USART1_TX -Dma.Request2=USART1_RX -Dma.RequestsNb=3 -Dma.USART1_RX.2.Direction=DMA_PERIPH_TO_MEMORY -Dma.USART1_RX.2.Instance=DMA1_Channel5 -Dma.USART1_RX.2.MemDataAlignment=DMA_MDATAALIGN_BYTE -Dma.USART1_RX.2.MemInc=DMA_MINC_ENABLE -Dma.USART1_RX.2.Mode=DMA_NORMAL -Dma.USART1_RX.2.PeriphDataAlignment=DMA_PDATAALIGN_BYTE -Dma.USART1_RX.2.PeriphInc=DMA_PINC_DISABLE -Dma.USART1_RX.2.Priority=DMA_PRIORITY_LOW -Dma.USART1_RX.2.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority -Dma.USART1_TX.1.Direction=DMA_MEMORY_TO_PERIPH -Dma.USART1_TX.1.Instance=DMA1_Channel4 -Dma.USART1_TX.1.MemDataAlignment=DMA_MDATAALIGN_BYTE -Dma.USART1_TX.1.MemInc=DMA_MINC_ENABLE -Dma.USART1_TX.1.Mode=DMA_NORMAL -Dma.USART1_TX.1.PeriphDataAlignment=DMA_PDATAALIGN_BYTE -Dma.USART1_TX.1.PeriphInc=DMA_PINC_DISABLE -Dma.USART1_TX.1.Priority=DMA_PRIORITY_LOW -Dma.USART1_TX.1.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority -File.Version=6 -KeepUserPlacement=false -Mcu.Family=STM32F1 -Mcu.IP0=ADC1 -Mcu.IP1=ADC2 -Mcu.IP2=DMA -Mcu.IP3=NVIC -Mcu.IP4=RCC -Mcu.IP5=SYS -Mcu.IP6=TIM1 -Mcu.IP7=TIM2 -Mcu.IP8=USART1 -Mcu.IPNb=9 -Mcu.Name=STM32F103C(4-6)Tx -Mcu.Package=LQFP48 -Mcu.Pin0=PA0-WKUP -Mcu.Pin1=PA1 -Mcu.Pin10=PB15 -Mcu.Pin11=PA8 -Mcu.Pin12=PA9 -Mcu.Pin13=PA10 -Mcu.Pin14=PA13 -Mcu.Pin15=PA14 -Mcu.Pin16=PB6 -Mcu.Pin17=PB7 -Mcu.Pin18=PB8 -Mcu.Pin19=VP_SYS_VS_Systick -Mcu.Pin2=PA2 -Mcu.Pin20=VP_TIM1_VS_ClockSourceINT -Mcu.Pin21=VP_TIM1_VS_no_output4 -Mcu.Pin22=VP_TIM2_VS_ClockSourceINT -Mcu.Pin3=PA3 -Mcu.Pin4=PA4 -Mcu.Pin5=PA5 -Mcu.Pin6=PA6 -Mcu.Pin7=PB2 -Mcu.Pin8=PB13 -Mcu.Pin9=PB14 -Mcu.PinsNb=23 -Mcu.ThirdPartyNb=0 -Mcu.UserConstants= -Mcu.UserName=STM32F103C6Tx -MxCube.Version=4.27.0 -MxDb.Version=DB.4.0.270 -NVIC.ADC1_2_IRQn=true\:0\:0\:false\:false\:true\:true -NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false -NVIC.DMA1_Channel1_IRQn=true\:0\:0\:false\:false\:true\:false -NVIC.DMA1_Channel4_IRQn=true\:0\:0\:false\:false\:true\:false -NVIC.DMA1_Channel5_IRQn=true\:0\:0\:false\:false\:true\:false -NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false -NVIC.EXTI0_IRQn=true\:0\:0\:false\:false\:true\:true -NVIC.EXTI1_IRQn=true\:0\:0\:false\:false\:true\:true -NVIC.EXTI2_IRQn=true\:0\:0\:false\:false\:true\:true -NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false -NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false -NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false -NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false -NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 -NVIC.RCC_IRQn=true\:0\:0\:false\:false\:true\:true -NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false -NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false -NVIC.TIM1_CC_IRQn=true\:0\:0\:false\:false\:true\:true -NVIC.TIM1_TRG_COM_IRQn=true\:0\:0\:false\:false\:true\:true -NVIC.TIM1_UP_IRQn=true\:0\:0\:false\:false\:true\:true -NVIC.TIM2_IRQn=true\:0\:0\:false\:false\:true\:true -NVIC.USART1_IRQn=true\:0\:0\:false\:false\:true\:true -NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false -PA0-WKUP.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI -PA0-WKUP.GPIO_Label=Hall 1 -PA0-WKUP.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING -PA0-WKUP.GPIO_PuPd=GPIO_PULLUP -PA0-WKUP.Locked=true -PA0-WKUP.Signal=GPXTI0 -PA1.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI -PA1.GPIO_Label=Hall 2 -PA1.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING -PA1.GPIO_PuPd=GPIO_PULLUP -PA1.Locked=true -PA1.Signal=GPXTI1 -PA10.Locked=true -PA10.Signal=S_TIM1_CH3 -PA13.Mode=Serial_Wire -PA13.Signal=SYS_JTMS-SWDIO -PA14.Mode=Serial_Wire -PA14.Signal=SYS_JTCK-SWCLK -PA2.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI -PA2.GPIO_Label=Hall 3 -PA2.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING -PA2.GPIO_PuPd=GPIO_PULLUP -PA2.Locked=true -PA2.Signal=GPXTI2 -PA3.GPIOParameters=GPIO_Label -PA3.GPIO_Label=Throttle -PA3.Signal=ADCx_IN3 -PA4.GPIOParameters=GPIO_Label -PA4.GPIO_Label=Phase Current1 -PA4.Signal=ADCx_IN4 -PA5.GPIOParameters=GPIO_Label -PA5.GPIO_Label=Phase Current 2 -PA5.Signal=ADCx_IN5 -PA6.GPIOParameters=GPIO_Label -PA6.GPIO_Label=Phase Current 3 -PA6.Signal=ADCx_IN6 -PA8.Locked=true -PA8.Signal=S_TIM1_CH1 -PA9.Locked=true -PA9.Signal=S_TIM1_CH2 -PB13.Locked=true -PB13.Mode=PWM Generation1 CH1 CH1N -PB13.Signal=TIM1_CH1N -PB14.Locked=true -PB14.Mode=PWM Generation2 CH2 CH2N -PB14.Signal=TIM1_CH2N -PB15.Locked=true -PB15.Mode=PWM Generation3 CH3 CH3N -PB15.Signal=TIM1_CH3N -PB2.GPIOParameters=GPIO_Label -PB2.GPIO_Label=LED -PB2.Locked=true -PB2.Signal=GPIO_Output -PB6.Mode=Asynchronous -PB6.Signal=USART1_TX -PB7.Mode=Asynchronous -PB7.Signal=USART1_RX -PB8.GPIOParameters=GPIO_PuPd,GPIO_Label -PB8.GPIO_Label=PAS -PB8.GPIO_PuPd=GPIO_PULLUP -PB8.Locked=true -PB8.Signal=GPIO_Input -PCC.Checker=false -PCC.Line=STM32F103 -PCC.MCU=STM32F103C(4-6)Tx -PCC.PartNumber=STM32F103C6Tx -PCC.Seq0=0 -PCC.Series=STM32F1 -PCC.Temperature=25 -PCC.Vdd=3.3 -PinOutPanel.RotationAngle=0 -ProjectManager.AskForMigrate=true -ProjectManager.BackupPrevious=false -ProjectManager.CompilerOptimize=6 -ProjectManager.ComputerToolchain=false -ProjectManager.CoupleFile=false -ProjectManager.CustomerFirmwarePackage= -ProjectManager.DefaultFWLocation=true -ProjectManager.DeletePrevious=true -ProjectManager.DeviceId=STM32F103C6Tx -ProjectManager.FirmwarePackage=STM32Cube FW_F1 V1.6.0 -ProjectManager.FreePins=false -ProjectManager.HalAssertFull=false -ProjectManager.HeapSize=0x200 -ProjectManager.KeepUserCode=true -ProjectManager.LastFirmware=false -ProjectManager.LibraryCopy=1 -ProjectManager.MainLocation=Src -ProjectManager.NoMain=false -ProjectManager.PreviousToolchain=SW4STM32 -ProjectManager.ProjectBuild=false -ProjectManager.ProjectFileName=LishuiFOC_01.ioc -ProjectManager.ProjectName=LishuiFOC_01 -ProjectManager.StackSize=0x400 -ProjectManager.TargetToolchain=SW4STM32 -ProjectManager.ToolChainLocation= -ProjectManager.UnderRoot=true -ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-MX_DMA_Init-DMA-false-HAL-true,3-SystemClock_Config-RCC-false-HAL-false,4-MX_USART1_UART_Init-USART1-false-HAL-true,5-MX_TIM1_Init-TIM1-false-HAL-true,6-MX_ADC1_Init-ADC1-false-HAL-true,7-MX_ADC2_Init-ADC2-false-HAL-true,8-MX_TIM2_Init-TIM2-false-HAL-true -RCC.ADCFreqValue=10666666.666666666 -RCC.ADCPresc=RCC_ADCPCLK2_DIV6 -RCC.AHBFreq_Value=64000000 -RCC.APB1CLKDivider=RCC_HCLK_DIV2 -RCC.APB1Freq_Value=32000000 -RCC.APB1TimFreq_Value=64000000 -RCC.APB2Freq_Value=64000000 -RCC.APB2TimFreq_Value=64000000 -RCC.FCLKCortexFreq_Value=64000000 -RCC.FamilyName=M -RCC.HCLKFreq_Value=64000000 -RCC.IPParameters=ADCFreqValue,ADCPresc,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,MCOFreq_Value,PLLCLKFreq_Value,PLLMCOFreq_Value,PLLMUL,SYSCLKFreq_VALUE,SYSCLKSource,TimSysFreq_Value,USBFreq_Value -RCC.MCOFreq_Value=64000000 -RCC.PLLCLKFreq_Value=64000000 -RCC.PLLMCOFreq_Value=32000000 -RCC.PLLMUL=RCC_PLL_MUL16 -RCC.SYSCLKFreq_VALUE=64000000 -RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK -RCC.TimSysFreq_Value=64000000 -RCC.USBFreq_Value=64000000 -SH.ADCx_IN3.0=ADC1_IN3,IN3 -SH.ADCx_IN3.ConfNb=1 -SH.ADCx_IN4.0=ADC1_IN4,IN4 -SH.ADCx_IN4.1=ADC2_IN4,IN4 -SH.ADCx_IN4.ConfNb=2 -SH.ADCx_IN5.0=ADC1_IN5,IN5 -SH.ADCx_IN5.1=ADC2_IN5,IN5 -SH.ADCx_IN5.ConfNb=2 -SH.ADCx_IN6.0=ADC1_IN6,IN6 -SH.ADCx_IN6.1=ADC2_IN6,IN6 -SH.ADCx_IN6.ConfNb=2 -SH.GPXTI0.0=GPIO_EXTI0 -SH.GPXTI0.ConfNb=1 -SH.GPXTI1.0=GPIO_EXTI1 -SH.GPXTI1.ConfNb=1 -SH.GPXTI2.0=GPIO_EXTI2 -SH.GPXTI2.ConfNb=1 -SH.S_TIM1_CH1.0=TIM1_CH1,PWM Generation1 CH1 CH1N -SH.S_TIM1_CH1.ConfNb=1 -SH.S_TIM1_CH2.0=TIM1_CH2,PWM Generation2 CH2 CH2N -SH.S_TIM1_CH2.ConfNb=1 -SH.S_TIM1_CH3.0=TIM1_CH3,PWM Generation3 CH3 CH3N -SH.S_TIM1_CH3.ConfNb=1 -TIM1.Channel-Output\ Compare4\ No\ Output=TIM_CHANNEL_4 -TIM1.Channel-PWM\ Generation1\ CH1\ CH1N=TIM_CHANNEL_1 -TIM1.Channel-PWM\ Generation2\ CH2\ CH2N=TIM_CHANNEL_2 -TIM1.Channel-PWM\ Generation3\ CH3\ CH3N=TIM_CHANNEL_3 -TIM1.CounterMode=TIM_COUNTERMODE_CENTERALIGNED1 -TIM1.DeadTime=5 -TIM1.IPParameters=Channel-Output Compare4 No Output,CounterMode,DeadTime,Period,TIM_MasterSlaveMode,TIM_MasterOutputTrigger,Channel-PWM Generation1 CH1 CH1N,Channel-PWM Generation2 CH2 CH2N,Channel-PWM Generation3 CH3 CH3N,OCMode_4,Pulse-Output Compare4 No Output,Pulse-PWM Generation3 CH3 CH3N,Pulse-PWM Generation2 CH2 CH2N,Pulse-PWM Generation1 CH1 CH1N -TIM1.OCMode_4=TIM_OCMODE_ACTIVE -TIM1.Period=2000 -TIM1.Pulse-Output\ Compare4\ No\ Output=1000 -TIM1.Pulse-PWM\ Generation1\ CH1\ CH1N=1000 -TIM1.Pulse-PWM\ Generation2\ CH2\ CH2N=1000 -TIM1.Pulse-PWM\ Generation3\ CH3\ CH3N=1000 -TIM1.TIM_MasterOutputTrigger=TIM_TRGO_OC4REF -TIM1.TIM_MasterSlaveMode=TIM_MASTERSLAVEMODE_DISABLE -TIM2.IPParameters=Period -TIM2.Period=4000 -USART1.IPParameters=VirtualMode -USART1.VirtualMode=VM_ASYNC -VP_SYS_VS_Systick.Mode=SysTick -VP_SYS_VS_Systick.Signal=SYS_VS_Systick -VP_TIM1_VS_ClockSourceINT.Mode=Internal -VP_TIM1_VS_ClockSourceINT.Signal=TIM1_VS_ClockSourceINT -VP_TIM1_VS_no_output4.Mode=Output Compare4 No Output -VP_TIM1_VS_no_output4.Signal=TIM1_VS_no_output4 -VP_TIM2_VS_ClockSourceINT.Mode=Internal -VP_TIM2_VS_ClockSourceINT.Signal=TIM2_VS_ClockSourceINT -board=custom diff --git a/LishuiFOC_01.xml b/LishuiFOC_01.xml deleted file mode 100644 index a28c2b37..00000000 --- a/LishuiFOC_01.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - -]> - - - - LishuiFOC_01 - SWD - ST-Link - stm32f103c6tx - - diff --git a/Makefile b/Makefile index 92f3e156..04083a8e 100644 --- a/Makefile +++ b/Makefile @@ -10,12 +10,14 @@ # 2015-07-22 - first version # ------------------------------------------------ +# uncomment next line to build the code for development and not using the M365 bootloader +DO_NOT_USE_M365_BOOTLOADER = 0 + ###################################### # target ###################################### TARGET = EBiCS_Firmware2 - ###################################### # building variables ###################################### @@ -36,12 +38,16 @@ BUILD_DIR = build ###################################### # C sources C_SOURCES = \ -Src/main.c \ -Src/FOC.c \ -Src/display_ebics.c \ -Src/stm32f1xx_it.c \ -Stc/print.c \ -Src/stm32f1xx_hal_msp.c \ +Core/Src/main.c \ +Core/Src/motor.c \ +Core/Src/FOC.c \ +Core/Src/eeprom.c \ +Core/Src/decr_and_flash.c \ +Core/Src/button_processing.c \ +Core/Src/M365_Dashboard.c \ +Core/Src/stm32f1xx_it.c \ +Core/Src/print.c \ +Core/Src/stm32f1xx_hal_msp.c \ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c \ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.c \ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.c \ @@ -58,11 +64,11 @@ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_exti.c \ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c \ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c \ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c \ -Src/system_stm32f1xx.c +Src/system_stm32f1xx.c # ASM sources ASM_SOURCES = \ -startup_stm32f103xb.s +Core/Startup/startup_stm32f103c8tx.s ####################################### @@ -116,7 +122,7 @@ AS_INCLUDES = # C includes C_INCLUDES = \ --IInc \ +-ICore/Inc \ -IDrivers/STM32F1xx_HAL_Driver/Inc \ -IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy \ -IDrivers/CMSIS/Device/ST/STM32F1xx/Include \ @@ -133,6 +139,9 @@ ifeq ($(DEBUG), 1) CFLAGS += -g -gdwarf-2 endif +ifeq ($(DO_NOT_USE_M365_BOOTLOADER), 1) +CFLAGS += -DO_NOT_USE_M365_BOOTLOADER +endif # Generate dependency information CFLAGS += -MMD -MP -MF"$(@:%.o=%.d)" @@ -142,7 +151,7 @@ CFLAGS += -MMD -MP -MF"$(@:%.o=%.d)" # LDFLAGS ####################################### # link script -LDSCRIPT = STM32F103C8Tx_FLASH.ld +LDSCRIPT = STM32F103C8Tx_FLASH-development.ld # libraries LIBS = -lc -lm -lnosys -larm_cortexM3l_math diff --git a/New_configuration.cfg b/New_configuration.cfg deleted file mode 100644 index 583e6ce6..00000000 --- a/New_configuration.cfg +++ /dev/null @@ -1,35 +0,0 @@ -# This is an LishuiFOC_01 board with a single STM32F103C6Tx chip -# -# Generated by System Workbench for STM32 -# Take care that such file, as generated, may be overridden without any early notice. Please have a look to debug launch configuration setup(s) - -source [find interface/stlink.cfg] - -set WORKAREASIZE 0x2800 - -transport select "hla_swd" - -set CHIPNAME STM32F103C6Tx -set BOARDNAME LishuiFOC_01 - -# CHIPNAMES state -set CHIPNAME_CPU0_ACTIVATED 1 - -# Enable debug when in low power modes -set ENABLE_LOW_POWER 1 - -# Stop Watchdog counters when halt -set STOP_WATCHDOG 1 - -# STlink Debug clock frequency -set CLOCK_FREQ 480 - -# use software system reset -reset_config none -set CONNECT_UNDER_RESET 0 - -# BCTM CPU variables - - - -source [find target/stm32f1x.cfg] diff --git a/README.md b/README.md index 80f979ed..ca96467e 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,27 @@ Fork of EBiCS firmware for Lishui devices. Ported to Xaiomi M365 controller. +Use JST PA series 2mm pitch for the connectors. (need to be confirmed) +This branch works with the original M365 dashboard -Note: This is WiP, use at your own risk. -Note: Makes no attempt to implement M365 protocols between BMS/BLE controllers, currently targets analog throttle soldered to CPU pin 11(PA1) -Note: On my controller I had to short the Hall A input resistor, some pullup current is very high. Unsure of cause. +How to use: +Install the [STM Cube IDE](https://www.st.com/en/development-tools/stm32cubeide.html#overview&secondary=st-get-software) +Start the IDE and install egit from the eclipse marketplace (Help --> Eclipse Marketplace...) +Import this repo from github (File --> Import --> git --> Projects from git) -Currently can do hall autodetection, and then run in sinusoidal mode with throttle controlled voltage. -FoC and current limiting in general is not working right yet. +Edit the file config.h (in the folder Core/Inc) according to your wishes. Working settings for the original M365 are in the comments, so use them to have a proven start setting. -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. +Click on "Build" (The icon with the hammer) + +in the folder /tools/zip-output the zip-file ready for use with your scooter is generated. +Copy it to your mobile phone and flash it to the scooter by the app downG. + +After flashing, lift the motor, so it can spin in the air without load. Press the dashboard button for 5s, the autodetect routine starts. The motor turns slowly. After stopping, the scooter is ready to run. + +Dashboard button use: +short press: switch lights +double click: switch ride modes +long press: switch off +very long press: run autodetect + + +![PCB Layout M365](https://github.com/Koxx3/SmartESC_STM32_v3/blob/master/Documentation/PCB%20Layout%20M365.PNG) diff --git a/Run LishuiFOC_01.cfg b/Run LishuiFOC_01.cfg deleted file mode 100644 index 5a6f0dc4..00000000 --- a/Run LishuiFOC_01.cfg +++ /dev/null @@ -1,30 +0,0 @@ -# This is an LishuiFOC_01 board with a single STM32F103C6Tx chip -# -# Generated by System Workbench for STM32 -# Take care that such file, as generated, may be overridden without any early notice. Please have a look to debug launch configuration setup(s) - -source [find interface/stlink.cfg] - -set WORKAREASIZE 0x2800 - -transport select "hla_swd" - -set CHIPNAME STM32F103C8Tx -set BOARDNAME LishuiFOC_01 - -# Enable debug when in low power modes -set ENABLE_LOW_POWER 1 - -# Stop Watchdog counters when halt -set STOP_WATCHDOG 1 - -# STlink Debug clock frequency -set CLOCK_FREQ 4000 - -# use software system reset -reset_config none -set CONNECT_UNDER_RESET 0 - -source [find target/stm32f1x.cfg] - -reset halt diff --git a/STM32F103C6Tx_FLASH.ld b/STM32F103C6Tx_FLASH.ld deleted file mode 100644 index ed98c8cb..00000000 --- a/STM32F103C6Tx_FLASH.ld +++ /dev/null @@ -1,169 +0,0 @@ -/* -***************************************************************************** -** - -** File : LinkerScript.ld -** -** Abstract : Linker script for STM32F103C6Tx Device with -** 32KByte FLASH, 10KByte RAM -** -** Set heap size, stack size and stack location according -** to application requirements. -** -** Set memory bank area and size if external memory is used. -** -** Target : STMicroelectronics STM32 -** -** -** Distribution: The file is distributed as is, without any warranty -** of any kind. -** -** (c)Copyright Ac6. -** You may use this file as-is or modify it according to the needs of your -** project. Distribution of this file (unmodified or modified) is not -** permitted. Ac6 permit registered System Workbench for MCU users the -** rights to distribute the assembled, compiled & linked contents of this -** file as part of an application binary file, provided that it is built -** using the System Workbench for MCU toolchain. -** -***************************************************************************** -*/ - -/* Entry Point */ -ENTRY(Reset_Handler) - -/* Highest address of the user mode stack */ -_estack = 0x20002800; /* end of RAM */ -/* Generate a link error if heap and stack don't fit into RAM */ -_Min_Heap_Size = 0x200; /* required amount of heap */ -_Min_Stack_Size = 0x400; /* required amount of stack */ - -/* Specify the memory areas */ -MEMORY -{ -RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 10K -FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 32K -} - -/* Define output sections */ -SECTIONS -{ - /* The startup code goes first into FLASH */ - .isr_vector : - { - . = ALIGN(4); - KEEP(*(.isr_vector)) /* Startup code */ - . = ALIGN(4); - } >FLASH - - /* The program code and other data goes into FLASH */ - .text : - { - . = ALIGN(4); - *(.text) /* .text sections (code) */ - *(.text*) /* .text* sections (code) */ - *(.glue_7) /* glue arm to thumb code */ - *(.glue_7t) /* glue thumb to arm code */ - *(.eh_frame) - - KEEP (*(.init)) - KEEP (*(.fini)) - - . = ALIGN(4); - _etext = .; /* define a global symbols at end of code */ - } >FLASH - - /* Constant data goes into FLASH */ - .rodata : - { - . = ALIGN(4); - *(.rodata) /* .rodata sections (constants, strings, etc.) */ - *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ - . = ALIGN(4); - } >FLASH - - .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH - .ARM : { - __exidx_start = .; - *(.ARM.exidx*) - __exidx_end = .; - } >FLASH - - .preinit_array : - { - PROVIDE_HIDDEN (__preinit_array_start = .); - KEEP (*(.preinit_array*)) - PROVIDE_HIDDEN (__preinit_array_end = .); - } >FLASH - .init_array : - { - PROVIDE_HIDDEN (__init_array_start = .); - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array*)) - PROVIDE_HIDDEN (__init_array_end = .); - } >FLASH - .fini_array : - { - PROVIDE_HIDDEN (__fini_array_start = .); - KEEP (*(SORT(.fini_array.*))) - KEEP (*(.fini_array*)) - PROVIDE_HIDDEN (__fini_array_end = .); - } >FLASH - - /* used by the startup to initialize data */ - _sidata = LOADADDR(.data); - - /* Initialized data sections goes into RAM, load LMA copy after code */ - .data : - { - . = ALIGN(4); - _sdata = .; /* create a global symbol at data start */ - *(.data) /* .data sections */ - *(.data*) /* .data* sections */ - - . = ALIGN(4); - _edata = .; /* define a global symbol at data end */ - } >RAM AT> FLASH - - - /* Uninitialized data section */ - . = ALIGN(4); - .bss : - { - /* This is used by the startup in order to initialize the .bss secion */ - _sbss = .; /* define a global symbol at bss start */ - __bss_start__ = _sbss; - *(.bss) - *(.bss*) - *(COMMON) - - . = ALIGN(4); - _ebss = .; /* define a global symbol at bss end */ - __bss_end__ = _ebss; - } >RAM - - /* User_heap_stack section, used to check that there is enough RAM left */ - ._user_heap_stack : - { - . = ALIGN(8); - PROVIDE ( end = . ); - PROVIDE ( _end = . ); - . = . + _Min_Heap_Size; - . = . + _Min_Stack_Size; - . = ALIGN(8); - } >RAM - - - - /* Remove information from the standard libraries */ - /DISCARD/ : - { - libc.a ( * ) - libm.a ( * ) - libgcc.a ( * ) - } - - .ARM.attributes 0 : { *(.ARM.attributes) } -} - - diff --git a/make/UART_FLASH.ld b/STM32F103C8Tx_FLASH-development.ld similarity index 53% rename from make/UART_FLASH.ld rename to STM32F103C8Tx_FLASH-development.ld index e1f02530..7142b976 100644 --- a/make/UART_FLASH.ld +++ b/STM32F103C8Tx_FLASH-development.ld @@ -1,169 +1,175 @@ -/* -***************************************************************************** -** - -** File : LinkerScript.ld -** -** Abstract : Linker script for STM32F103C6Tx Device with -** 32KByte FLASH, 10KByte RAM -** -** Set heap size, stack size and stack location according -** to application requirements. -** -** Set memory bank area and size if external memory is used. -** -** Target : STMicroelectronics STM32 -** -** -** Distribution: The file is distributed as is, without any warranty -** of any kind. -** -** (c)Copyright Ac6. -** You may use this file as-is or modify it according to the needs of your -** project. Distribution of this file (unmodified or modified) is not -** permitted. Ac6 permit registered System Workbench for MCU users the -** rights to distribute the assembled, compiled & linked contents of this -** file as part of an application binary file, provided that it is built -** using the System Workbench for MCU toolchain. -** -***************************************************************************** -*/ - -/* Entry Point */ -ENTRY(Reset_Handler) - -/* Highest address of the user mode stack */ -_estack = 0x20002800; /* end of RAM */ -/* Generate a link error if heap and stack don't fit into RAM */ -_Min_Heap_Size = 0x200; /* required amount of heap */ -_Min_Stack_Size = 0x400; /* required amount of stack */ - -/* Specify the memory areas */ -MEMORY -{ -RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 10K -FLASH (rx) : ORIGIN = 0x8001000, LENGTH = 28K -} - -/* Define output sections */ -SECTIONS -{ - /* The startup code goes first into FLASH */ - .isr_vector : - { - . = ALIGN(4); - KEEP(*(.isr_vector)) /* Startup code */ - . = ALIGN(4); - } >FLASH - - /* The program code and other data goes into FLASH */ - .text : - { - . = ALIGN(4); - *(.text) /* .text sections (code) */ - *(.text*) /* .text* sections (code) */ - *(.glue_7) /* glue arm to thumb code */ - *(.glue_7t) /* glue thumb to arm code */ - *(.eh_frame) - - KEEP (*(.init)) - KEEP (*(.fini)) - - . = ALIGN(4); - _etext = .; /* define a global symbols at end of code */ - } >FLASH - - /* Constant data goes into FLASH */ - .rodata : - { - . = ALIGN(4); - *(.rodata) /* .rodata sections (constants, strings, etc.) */ - *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ - . = ALIGN(4); - } >FLASH - - .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH - .ARM : { - __exidx_start = .; - *(.ARM.exidx*) - __exidx_end = .; - } >FLASH - - .preinit_array : - { - PROVIDE_HIDDEN (__preinit_array_start = .); - KEEP (*(.preinit_array*)) - PROVIDE_HIDDEN (__preinit_array_end = .); - } >FLASH - .init_array : - { - PROVIDE_HIDDEN (__init_array_start = .); - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array*)) - PROVIDE_HIDDEN (__init_array_end = .); - } >FLASH - .fini_array : - { - PROVIDE_HIDDEN (__fini_array_start = .); - KEEP (*(SORT(.fini_array.*))) - KEEP (*(.fini_array*)) - PROVIDE_HIDDEN (__fini_array_end = .); - } >FLASH - - /* used by the startup to initialize data */ - _sidata = LOADADDR(.data); - - /* Initialized data sections goes into RAM, load LMA copy after code */ - .data : - { - . = ALIGN(4); - _sdata = .; /* create a global symbol at data start */ - *(.data) /* .data sections */ - *(.data*) /* .data* sections */ - - . = ALIGN(4); - _edata = .; /* define a global symbol at data end */ - } >RAM AT> FLASH - - - /* Uninitialized data section */ - . = ALIGN(4); - .bss : - { - /* This is used by the startup in order to initialize the .bss secion */ - _sbss = .; /* define a global symbol at bss start */ - __bss_start__ = _sbss; - *(.bss) - *(.bss*) - *(COMMON) - - . = ALIGN(4); - _ebss = .; /* define a global symbol at bss end */ - __bss_end__ = _ebss; - } >RAM - - /* User_heap_stack section, used to check that there is enough RAM left */ - ._user_heap_stack : - { - . = ALIGN(8); - PROVIDE ( end = . ); - PROVIDE ( _end = . ); - . = . + _Min_Heap_Size; - . = . + _Min_Stack_Size; - . = ALIGN(8); - } >RAM - - - - /* Remove information from the standard libraries */ - /DISCARD/ : - { - libc.a ( * ) - libm.a ( * ) - libgcc.a ( * ) - } - - .ARM.attributes 0 : { *(.ARM.attributes) } -} - - +/** + ****************************************************************************** + * @file LinkerScript.ld + * @author Auto-generated by STM32CubeIDE + * @brief Linker script for STM32F103C8Tx Device from STM32F1 series + * 64Kbytes FLASH + * 20Kbytes RAM + * + * Set heap size, stack size and stack location according + * to application requirements. + * + * Set memory bank area and size if external memory is used + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = ORIGIN(RAM) + LENGTH(RAM); /* end of "RAM" Ram type memory */ + +_Min_Heap_Size = 0x200; /* required amount of heap */ +_Min_Stack_Size = 0x400; /* required amount of stack */ + +/* Memories definition */ +MEMORY +{ + RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 20K + FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 128K +} + +/* Sections */ +SECTIONS +{ + /* The startup code into "FLASH" Rom type memory */ + .isr_vector : + { + . = ALIGN(4); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(4); + } >FLASH + + /* The program code and other data into "FLASH" Rom type memory */ + .text : + { + . = ALIGN(4); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(4); + _etext = .; /* define a global symbols at end of code */ + } >FLASH + + /* Constant data into "FLASH" Rom type memory */ + .rodata : + { + . = ALIGN(4); + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + . = ALIGN(4); + } >FLASH + + .ARM.extab : { + . = ALIGN(4); + *(.ARM.extab* .gnu.linkonce.armextab.*) + . = ALIGN(4); + } >FLASH + + .ARM : { + . = ALIGN(4); + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + . = ALIGN(4); + } >FLASH + + .preinit_array : + { + . = ALIGN(4); + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + . = ALIGN(4); + } >FLASH + + .init_array : + { + . = ALIGN(4); + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + . = ALIGN(4); + } >FLASH + + .fini_array : + { + . = ALIGN(4); + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(SORT(.fini_array.*))) + KEEP (*(.fini_array*)) + PROVIDE_HIDDEN (__fini_array_end = .); + . = ALIGN(4); + } >FLASH + + /* Used by the startup to initialize data */ + _sidata = LOADADDR(.data); + + /* Initialized data sections into "RAM" Ram type memory */ + .data : + { + . = ALIGN(4); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + + . = ALIGN(4); + _edata = .; /* define a global symbol at data end */ + + } >RAM AT> FLASH + + /* Uninitialized data section into "RAM" Ram type memory */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss section */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM + + /* User_heap_stack section, used to check that there is enough "RAM" Ram type memory left */ + ._user_heap_stack : + { + . = ALIGN(8); + PROVIDE ( end = . ); + PROVIDE ( _end = . ); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(8); + } >RAM + + /* Remove information from the compiler libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + + .ARM.attributes 0 : { *(.ARM.attributes) } +} diff --git a/STM32F103C8Tx_FLASH.ld b/STM32F103C8Tx_FLASH.ld index 89c27c0c..8180db77 100644 --- a/STM32F103C8Tx_FLASH.ld +++ b/STM32F103C8Tx_FLASH.ld @@ -1,189 +1,175 @@ -/* -****************************************************************************** -** - -** File : LinkerScript.ld -** -** Author : Auto-generated by System Workbench for STM32 -** -** Abstract : Linker script for STM32F103C8Tx series -** 64Kbytes FLASH and 20Kbytes RAM -** -** Set heap size, stack size and stack location according -** to application requirements. -** -** Set memory bank area and size if external memory is used. -** -** Target : STMicroelectronics STM32 -** -** Distribution: The file is distributed “as is,†without any warranty -** of any kind. -** -***************************************************************************** -** @attention -** -**

© COPYRIGHT(c) 2019 STMicroelectronics

-** -** Redistribution and use in source and binary forms, with or without modification, -** are permitted provided that the following conditions are met: -** 1. Redistributions of source code must retain the above copyright notice, -** this list of conditions and the following disclaimer. -** 2. Redistributions in binary form must reproduce the above copyright notice, -** this list of conditions and the following disclaimer in the documentation -** and/or other materials provided with the distribution. -** 3. Neither the name of STMicroelectronics nor the names of its contributors -** may be used to endorse or promote products derived from this software -** without specific prior written permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -** -***************************************************************************** -*/ - -/* Entry Point */ -ENTRY(Reset_Handler) - -/* Highest address of the user mode stack */ -_estack = 0x20005000; /* end of RAM */ -/* Generate a link error if heap and stack don't fit into RAM */ -_Min_Heap_Size = 0x200; /* required amount of heap */ -_Min_Stack_Size = 0x400; /* required amount of stack */ - -/* Specify the memory areas */ -MEMORY -{ -RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 20K -FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 64K -} - -/* Define output sections */ -SECTIONS -{ - /* The startup code goes first into FLASH */ - .isr_vector : - { - . = ALIGN(4); - KEEP(*(.isr_vector)) /* Startup code */ - . = ALIGN(4); - } >FLASH - - /* The program code and other data goes into FLASH */ - .text : - { - . = ALIGN(4); - *(.text) /* .text sections (code) */ - *(.text*) /* .text* sections (code) */ - *(.glue_7) /* glue arm to thumb code */ - *(.glue_7t) /* glue thumb to arm code */ - *(.eh_frame) - - KEEP (*(.init)) - KEEP (*(.fini)) - - . = ALIGN(4); - _etext = .; /* define a global symbols at end of code */ - } >FLASH - - /* Constant data goes into FLASH */ - .rodata : - { - . = ALIGN(4); - *(.rodata) /* .rodata sections (constants, strings, etc.) */ - *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ - . = ALIGN(4); - } >FLASH - - .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH - .ARM : { - __exidx_start = .; - *(.ARM.exidx*) - __exidx_end = .; - } >FLASH - - .preinit_array : - { - PROVIDE_HIDDEN (__preinit_array_start = .); - KEEP (*(.preinit_array*)) - PROVIDE_HIDDEN (__preinit_array_end = .); - } >FLASH - .init_array : - { - PROVIDE_HIDDEN (__init_array_start = .); - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array*)) - PROVIDE_HIDDEN (__init_array_end = .); - } >FLASH - .fini_array : - { - PROVIDE_HIDDEN (__fini_array_start = .); - KEEP (*(SORT(.fini_array.*))) - KEEP (*(.fini_array*)) - PROVIDE_HIDDEN (__fini_array_end = .); - } >FLASH - - /* used by the startup to initialize data */ - _sidata = LOADADDR(.data); - - /* Initialized data sections goes into RAM, load LMA copy after code */ - .data : - { - . = ALIGN(4); - _sdata = .; /* create a global symbol at data start */ - *(.data) /* .data sections */ - *(.data*) /* .data* sections */ - - . = ALIGN(4); - _edata = .; /* define a global symbol at data end */ - } >RAM AT> FLASH - - - /* Uninitialized data section */ - . = ALIGN(4); - .bss : - { - /* This is used by the startup in order to initialize the .bss secion */ - _sbss = .; /* define a global symbol at bss start */ - __bss_start__ = _sbss; - *(.bss) - *(.bss*) - *(COMMON) - - . = ALIGN(4); - _ebss = .; /* define a global symbol at bss end */ - __bss_end__ = _ebss; - } >RAM - - /* User_heap_stack section, used to check that there is enough RAM left */ - ._user_heap_stack : - { - . = ALIGN(8); - PROVIDE ( end = . ); - PROVIDE ( _end = . ); - . = . + _Min_Heap_Size; - . = . + _Min_Stack_Size; - . = ALIGN(8); - } >RAM - - - - /* Remove information from the standard libraries */ - /DISCARD/ : - { - libc.a ( * ) - libm.a ( * ) - libgcc.a ( * ) - } - - .ARM.attributes 0 : { *(.ARM.attributes) } -} - - +/** + ****************************************************************************** + * @file LinkerScript.ld + * @author Auto-generated by STM32CubeIDE + * @brief Linker script for STM32F103C8Tx Device from STM32F1 series + * 64Kbytes FLASH + * 20Kbytes RAM + * + * Set heap size, stack size and stack location according + * to application requirements. + * + * Set memory bank area and size if external memory is used + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = ORIGIN(RAM) + LENGTH(RAM); /* end of "RAM" Ram type memory */ + +_Min_Heap_Size = 0x200; /* required amount of heap */ +_Min_Stack_Size = 0x400; /* required amount of stack */ + +/* Memories definition */ +MEMORY +{ + RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 20K + FLASH (rx) : ORIGIN = 0x8001000, LENGTH = 120K +} + +/* Sections */ +SECTIONS +{ + /* The startup code into "FLASH" Rom type memory */ + .isr_vector : + { + . = ALIGN(4); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(4); + } >FLASH + + /* The program code and other data into "FLASH" Rom type memory */ + .text : + { + . = ALIGN(4); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(4); + _etext = .; /* define a global symbols at end of code */ + } >FLASH + + /* Constant data into "FLASH" Rom type memory */ + .rodata : + { + . = ALIGN(4); + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + . = ALIGN(4); + } >FLASH + + .ARM.extab : { + . = ALIGN(4); + *(.ARM.extab* .gnu.linkonce.armextab.*) + . = ALIGN(4); + } >FLASH + + .ARM : { + . = ALIGN(4); + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + . = ALIGN(4); + } >FLASH + + .preinit_array : + { + . = ALIGN(4); + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + . = ALIGN(4); + } >FLASH + + .init_array : + { + . = ALIGN(4); + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + . = ALIGN(4); + } >FLASH + + .fini_array : + { + . = ALIGN(4); + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(SORT(.fini_array.*))) + KEEP (*(.fini_array*)) + PROVIDE_HIDDEN (__fini_array_end = .); + . = ALIGN(4); + } >FLASH + + /* Used by the startup to initialize data */ + _sidata = LOADADDR(.data); + + /* Initialized data sections into "RAM" Ram type memory */ + .data : + { + . = ALIGN(4); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + + . = ALIGN(4); + _edata = .; /* define a global symbol at data end */ + + } >RAM AT> FLASH + + /* Uninitialized data section into "RAM" Ram type memory */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss section */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM + + /* User_heap_stack section, used to check that there is enough "RAM" Ram type memory left */ + ._user_heap_stack : + { + . = ALIGN(8); + PROVIDE ( end = . ); + PROVIDE ( _end = . ); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(8); + } >RAM + + /* Remove information from the compiler libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + + .ARM.attributes 0 : { *(.ARM.attributes) } +} diff --git a/SmartESC_v3 Debug.launch b/SmartESC_v3 Debug.launch new file mode 100644 index 00000000..ba897db6 --- /dev/null +++ b/SmartESC_v3 Debug.launch @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SmartESC_v3 Release.launch b/SmartESC_v3 Release.launch new file mode 100644 index 00000000..90ed04d0 --- /dev/null +++ b/SmartESC_v3 Release.launch @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SmartESC_v3.ioc b/SmartESC_v3.ioc new file mode 100644 index 00000000..c620a16f --- /dev/null +++ b/SmartESC_v3.ioc @@ -0,0 +1,412 @@ +#MicroXplorer Configuration settings - do not modify +ADC1.Channel-10\#ChannelRegularConversion=ADC_CHANNEL_3 +ADC1.Channel-11\#ChannelRegularConversion=ADC_CHANNEL_5 +ADC1.Channel-12\#ChannelRegularConversion=ADC_CHANNEL_7 +ADC1.Channel-13\#ChannelRegularConversion=ADC_CHANNEL_0 +ADC1.ContinuousConvMode=DISABLE +ADC1.DiscontinuousConvMode=DISABLE +ADC1.EnableAnalogWatchDog=false +ADC1.EnableInjectedConversion=DISABLE +ADC1.EnableRegularConversion=ENABLE +ADC1.ExternalTrigConv=ADC_EXTERNALTRIGCONV_T2_CC2 +ADC1.ExternalTrigInjecConv=ADC_INJECTED_SOFTWARE_START +ADC1.IPParameters=Mode,EnableInjectedConversion,InjNumberOfConversion,ContinuousConvMode,DiscontinuousConvMode,EnableRegularConversion,ExternalTrigInjecConv,EnableAnalogWatchDog,Rank-10\#ChannelRegularConversion,Channel-10\#ChannelRegularConversion,SamplingTime-10\#ChannelRegularConversion,NbrOfConversionFlag,NbrOfConversion,ExternalTrigConv,Rank-11\#ChannelRegularConversion,Channel-11\#ChannelRegularConversion,SamplingTime-11\#ChannelRegularConversion,Rank-12\#ChannelRegularConversion,Channel-12\#ChannelRegularConversion,SamplingTime-12\#ChannelRegularConversion,Rank-13\#ChannelRegularConversion,Channel-13\#ChannelRegularConversion,SamplingTime-13\#ChannelRegularConversion,master +ADC1.InjNumberOfConversion=4 +ADC1.Mode=ADC_DUALMODE_REGSIMULT +ADC1.NbrOfConversion=4 +ADC1.NbrOfConversionFlag=1 +ADC1.Rank-10\#ChannelRegularConversion=1 +ADC1.Rank-11\#ChannelRegularConversion=2 +ADC1.Rank-12\#ChannelRegularConversion=3 +ADC1.Rank-13\#ChannelRegularConversion=4 +ADC1.SamplingTime-10\#ChannelRegularConversion=ADC_SAMPLETIME_7CYCLES_5 +ADC1.SamplingTime-11\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 +ADC1.SamplingTime-12\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 +ADC1.SamplingTime-13\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 +ADC1.master=1 +ADC2.Channel-6\#ChannelRegularConversion=ADC_CHANNEL_4 +ADC2.Channel-7\#ChannelRegularConversion=ADC_CHANNEL_6 +ADC2.Channel-8\#ChannelRegularConversion=ADC_CHANNEL_9 +ADC2.Channel-9\#ChannelRegularConversion=ADC_CHANNEL_2 +ADC2.EnableAnalogWatchDog=false +ADC2.EnableInjectedConversion=DISABLE +ADC2.EnableRegularConversion=ENABLE +ADC2.IPParameters=EnableRegularConversion,EnableInjectedConversion,InjNumberOfConversion,Mode,Rank-6\#ChannelRegularConversion,Channel-6\#ChannelRegularConversion,SamplingTime-6\#ChannelRegularConversion,NbrOfConversionFlag,Rank-7\#ChannelRegularConversion,Channel-7\#ChannelRegularConversion,SamplingTime-7\#ChannelRegularConversion,Rank-8\#ChannelRegularConversion,Channel-8\#ChannelRegularConversion,SamplingTime-8\#ChannelRegularConversion,Rank-9\#ChannelRegularConversion,Channel-9\#ChannelRegularConversion,SamplingTime-9\#ChannelRegularConversion,NbrOfConversion,EnableAnalogWatchDog +ADC2.InjNumberOfConversion=4 +ADC2.Mode=ADC_DUALMODE_REGSIMULT +ADC2.NbrOfConversion=4 +ADC2.NbrOfConversionFlag=1 +ADC2.Rank-6\#ChannelRegularConversion=1 +ADC2.Rank-7\#ChannelRegularConversion=2 +ADC2.Rank-8\#ChannelRegularConversion=3 +ADC2.Rank-9\#ChannelRegularConversion=4 +ADC2.SamplingTime-6\#ChannelRegularConversion=ADC_SAMPLETIME_7CYCLES_5 +ADC2.SamplingTime-7\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 +ADC2.SamplingTime-8\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 +ADC2.SamplingTime-9\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 +Dma.ADC1.2.Direction=DMA_PERIPH_TO_MEMORY +Dma.ADC1.2.Instance=DMA1_Channel1 +Dma.ADC1.2.MemDataAlignment=DMA_MDATAALIGN_HALFWORD +Dma.ADC1.2.MemInc=DMA_MINC_ENABLE +Dma.ADC1.2.Mode=DMA_NORMAL +Dma.ADC1.2.PeriphDataAlignment=DMA_PDATAALIGN_HALFWORD +Dma.ADC1.2.PeriphInc=DMA_PINC_DISABLE +Dma.ADC1.2.Priority=DMA_PRIORITY_LOW +Dma.ADC1.2.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority +Dma.Request0=USART3_RX +Dma.Request1=USART3_TX +Dma.Request2=ADC1 +Dma.Request3=USART1_RX +Dma.Request4=USART1_TX +Dma.RequestsNb=5 +Dma.USART1_RX.3.Direction=DMA_PERIPH_TO_MEMORY +Dma.USART1_RX.3.Instance=DMA1_Channel5 +Dma.USART1_RX.3.MemDataAlignment=DMA_MDATAALIGN_BYTE +Dma.USART1_RX.3.MemInc=DMA_MINC_ENABLE +Dma.USART1_RX.3.Mode=DMA_NORMAL +Dma.USART1_RX.3.PeriphDataAlignment=DMA_PDATAALIGN_BYTE +Dma.USART1_RX.3.PeriphInc=DMA_PINC_DISABLE +Dma.USART1_RX.3.Priority=DMA_PRIORITY_LOW +Dma.USART1_RX.3.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority +Dma.USART1_TX.4.Direction=DMA_MEMORY_TO_PERIPH +Dma.USART1_TX.4.Instance=DMA1_Channel4 +Dma.USART1_TX.4.MemDataAlignment=DMA_MDATAALIGN_BYTE +Dma.USART1_TX.4.MemInc=DMA_MINC_ENABLE +Dma.USART1_TX.4.Mode=DMA_NORMAL +Dma.USART1_TX.4.PeriphDataAlignment=DMA_PDATAALIGN_BYTE +Dma.USART1_TX.4.PeriphInc=DMA_PINC_DISABLE +Dma.USART1_TX.4.Priority=DMA_PRIORITY_LOW +Dma.USART1_TX.4.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority +Dma.USART3_RX.0.Direction=DMA_PERIPH_TO_MEMORY +Dma.USART3_RX.0.Instance=DMA1_Channel3 +Dma.USART3_RX.0.MemDataAlignment=DMA_MDATAALIGN_BYTE +Dma.USART3_RX.0.MemInc=DMA_MINC_ENABLE +Dma.USART3_RX.0.Mode=DMA_CIRCULAR +Dma.USART3_RX.0.PeriphDataAlignment=DMA_PDATAALIGN_BYTE +Dma.USART3_RX.0.PeriphInc=DMA_PINC_DISABLE +Dma.USART3_RX.0.Priority=DMA_PRIORITY_LOW +Dma.USART3_RX.0.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority +Dma.USART3_TX.1.Direction=DMA_MEMORY_TO_PERIPH +Dma.USART3_TX.1.Instance=DMA1_Channel2 +Dma.USART3_TX.1.MemDataAlignment=DMA_MDATAALIGN_BYTE +Dma.USART3_TX.1.MemInc=DMA_MINC_ENABLE +Dma.USART3_TX.1.Mode=DMA_NORMAL +Dma.USART3_TX.1.PeriphDataAlignment=DMA_PDATAALIGN_BYTE +Dma.USART3_TX.1.PeriphInc=DMA_PINC_DISABLE +Dma.USART3_TX.1.Priority=DMA_PRIORITY_LOW +Dma.USART3_TX.1.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority +File.Version=6 +GPIO.groupedBy=Group By Peripherals +KeepUserPlacement=false +Mcu.Family=STM32F1 +Mcu.IP0=ADC1 +Mcu.IP1=ADC2 +Mcu.IP10=USART3 +Mcu.IP2=DMA +Mcu.IP3=NVIC +Mcu.IP4=RCC +Mcu.IP5=SYS +Mcu.IP6=TIM1 +Mcu.IP7=TIM2 +Mcu.IP8=TIM3 +Mcu.IP9=USART1 +Mcu.IPNb=11 +Mcu.Name=STM32F103C(8-B)Tx +Mcu.Package=LQFP48 +Mcu.Pin0=PC14-OSC32_IN +Mcu.Pin1=PC15-OSC32_OUT +Mcu.Pin10=PB0 +Mcu.Pin11=PB1 +Mcu.Pin12=PB10 +Mcu.Pin13=PB11 +Mcu.Pin14=PB13 +Mcu.Pin15=PB14 +Mcu.Pin16=PB15 +Mcu.Pin17=PA8 +Mcu.Pin18=PA9 +Mcu.Pin19=PA10 +Mcu.Pin2=PD1-OSC_OUT +Mcu.Pin20=PA13 +Mcu.Pin21=PA14 +Mcu.Pin22=PA15 +Mcu.Pin23=PB4 +Mcu.Pin24=PB5 +Mcu.Pin25=PB6 +Mcu.Pin26=VP_SYS_VS_tim4 +Mcu.Pin27=VP_TIM1_VS_ClockSourceINT +Mcu.Pin28=VP_TIM2_VS_ControllerModeGated +Mcu.Pin29=VP_TIM2_VS_ClockSourceINT +Mcu.Pin3=PA0-WKUP +Mcu.Pin30=VP_TIM2_VS_ClockSourceITR +Mcu.Pin31=VP_TIM2_VS_no_output2 +Mcu.Pin32=VP_TIM3_VS_ClockSourceINT +Mcu.Pin4=PA2 +Mcu.Pin5=PA3 +Mcu.Pin6=PA4 +Mcu.Pin7=PA5 +Mcu.Pin8=PA6 +Mcu.Pin9=PA7 +Mcu.PinsNb=33 +Mcu.ThirdPartyNb=0 +Mcu.UserConstants= +Mcu.UserName=STM32F103C8Tx +MxCube.Version=6.3.0 +MxDb.Version=DB.6.0.30 +NVIC.ADC1_2_IRQn=true\:0\:0\:false\:false\:true\:true\:true +NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.DMA1_Channel1_IRQn=true\:0\:0\:false\:false\:false\:false\:false +NVIC.DMA1_Channel2_IRQn=true\:0\:0\:false\:false\:true\:false\:true +NVIC.DMA1_Channel3_IRQn=true\:0\:0\:false\:false\:true\:false\:true +NVIC.DMA1_Channel4_IRQn=true\:0\:0\:false\:false\:true\:false\:true +NVIC.DMA1_Channel5_IRQn=true\:0\:0\:false\:false\:true\:false\:true +NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.ForceEnableDMAVector=true +NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 +NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true +NVIC.TIM4_IRQn=true\:0\:0\:false\:false\:true\:false\:true +NVIC.TimeBase=TIM4_IRQn +NVIC.TimeBaseIP=TIM4 +NVIC.USART3_IRQn=true\:0\:0\:false\:false\:true\:true\:true +NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false +PA0-WKUP.GPIOParameters=GPIO_Label +PA0-WKUP.GPIO_Label=NTC +PA0-WKUP.Locked=true +PA0-WKUP.Signal=ADCx_IN0 +PA10.GPIOParameters=GPIO_Label +PA10.GPIO_Label=PHA_C_H +PA10.Locked=true +PA10.Signal=S_TIM1_CH3 +PA13.Mode=Serial_Wire +PA13.Signal=SYS_JTMS-SWDIO +PA14.Mode=Serial_Wire +PA14.Signal=SYS_JTCK-SWCLK +PA15.GPIOParameters=GPIO_Label +PA15.GPIO_Label=LIGHT +PA15.Locked=true +PA15.Signal=GPIO_Output +PA2.GPIOParameters=GPIO_Label +PA2.GPIO_Label=VBAT +PA2.Locked=true +PA2.Signal=ADCx_IN2 +PA3.GPIOParameters=GPIO_Label +PA3.GPIO_Label=CURR_A +PA3.Locked=true +PA3.Signal=ADCx_IN3 +PA4.GPIOParameters=GPIO_Label +PA4.GPIO_Label=CURR_B +PA4.Locked=true +PA4.Signal=ADCx_IN4 +PA5.GPIOParameters=GPIO_Label +PA5.GPIO_Label=CURR_C +PA5.Locked=true +PA5.Signal=ADCx_IN5 +PA6.GPIOParameters=GPIO_Label +PA6.GPIO_Label=VOLT_A +PA6.Locked=true +PA6.Signal=ADCx_IN6 +PA7.GPIOParameters=GPIO_Label +PA7.GPIO_Label=VOLT_B / opt. Throttle Input +PA7.Locked=true +PA7.Signal=ADCx_IN7 +PA8.GPIOParameters=GPIO_Label +PA8.GPIO_Label=PHA_A_H +PA8.Locked=true +PA8.Signal=S_TIM1_CH1 +PA9.GPIOParameters=GPIO_Label +PA9.GPIO_Label=PHA_B_H +PA9.Locked=true +PA9.Signal=S_TIM1_CH2 +PB0.GPIOParameters=GPIO_Label +PB0.GPIO_Label=HALL_C +PB0.Locked=true +PB0.Signal=GPIO_Input +PB1.GPIOParameters=GPIO_Label +PB1.GPIO_Label=VOLT_C +PB1.Locked=true +PB1.Signal=ADCx_IN9 +PB10.Locked=true +PB10.Mode=Asynchronous +PB10.Signal=USART3_TX +PB11.Locked=true +PB11.Mode=Asynchronous +PB11.Signal=USART3_RX +PB13.GPIOParameters=GPIO_Label +PB13.GPIO_Label=PHA_A_L +PB13.Locked=true +PB13.Mode=PWM Generation1 CH1 CH1N +PB13.Signal=TIM1_CH1N +PB14.GPIOParameters=GPIO_Label +PB14.GPIO_Label=PHA_B_L +PB14.Locked=true +PB14.Mode=PWM Generation2 CH2 CH2N +PB14.Signal=TIM1_CH2N +PB15.GPIOParameters=GPIO_Label +PB15.GPIO_Label=PHA_C_L +PB15.Locked=true +PB15.Mode=PWM Generation3 CH3 CH3N +PB15.Signal=TIM1_CH3N +PB4.GPIOParameters=GPIO_Label +PB4.GPIO_Label=HALL_A +PB4.Locked=true +PB4.Signal=GPIO_Input +PB5.GPIOParameters=GPIO_Label +PB5.GPIO_Label=HALL_B +PB5.Locked=true +PB5.Signal=GPIO_Input +PB6.Locked=true +PB6.Mode=Half_duplex(single_wire_mode) +PB6.Signal=USART1_TX +PC14-OSC32_IN.GPIOParameters=GPIO_Label +PC14-OSC32_IN.GPIO_Label=PWR_BTN +PC14-OSC32_IN.Locked=true +PC14-OSC32_IN.Signal=GPIO_Input +PC15-OSC32_OUT.GPIOParameters=PinState,GPIO_Label +PC15-OSC32_OUT.GPIO_Label=TPS_ENA +PC15-OSC32_OUT.Locked=true +PC15-OSC32_OUT.PinState=GPIO_PIN_SET +PC15-OSC32_OUT.Signal=GPIO_Output +PD1-OSC_OUT.GPIOParameters=GPIO_Label +PD1-OSC_OUT.GPIO_Label=LED +PD1-OSC_OUT.Locked=true +PD1-OSC_OUT.Signal=GPIO_Output +PinOutPanel.RotationAngle=-90 +ProjectManager.AskForMigrate=true +ProjectManager.BackupPrevious=false +ProjectManager.CompilerOptimize=6 +ProjectManager.ComputerToolchain=false +ProjectManager.CoupleFile=false +ProjectManager.CustomerFirmwarePackage= +ProjectManager.DefaultFWLocation=true +ProjectManager.DeletePrevious=true +ProjectManager.DeviceId=STM32F103C8Tx +ProjectManager.FirmwarePackage=STM32Cube FW_F1 V1.8.4 +ProjectManager.FreePins=false +ProjectManager.HalAssertFull=false +ProjectManager.HeapSize=0x200 +ProjectManager.KeepUserCode=true +ProjectManager.LastFirmware=true +ProjectManager.LibraryCopy=1 +ProjectManager.MainLocation=Core/Src +ProjectManager.NoMain=false +ProjectManager.PreviousToolchain=STM32CubeIDE +ProjectManager.ProjectBuild=false +ProjectManager.ProjectFileName=SmartESC_v3.ioc +ProjectManager.ProjectName=SmartESC_v3 +ProjectManager.RegisterCallBack= +ProjectManager.StackSize=0x400 +ProjectManager.TargetToolchain=STM32CubeIDE +ProjectManager.ToolChainLocation= +ProjectManager.UnderRoot=true +ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-MX_DMA_Init-DMA-false-HAL-true,3-SystemClock_Config-RCC-false-HAL-false,4-MX_ADC1_Init-ADC1-false-HAL-true,5-MX_ADC2_Init-ADC2-false-HAL-true,6-MX_TIM1_Init-TIM1-false-HAL-true,7-MX_USART3_UART_Init-USART3-false-HAL-true,8-MX_TIM3_Init-TIM3-false-HAL-true,9-MX_USART1_UART_Init-USART1-false-HAL-true,10-MX_TIM2_Init-TIM2-false-HAL-true +RCC.ADCFreqValue=10666666.666666666 +RCC.ADCPresc=RCC_ADCPCLK2_DIV6 +RCC.AHBFreq_Value=64000000 +RCC.APB1CLKDivider=RCC_HCLK_DIV2 +RCC.APB1Freq_Value=32000000 +RCC.APB1TimFreq_Value=64000000 +RCC.APB2Freq_Value=64000000 +RCC.APB2TimFreq_Value=64000000 +RCC.FCLKCortexFreq_Value=64000000 +RCC.FamilyName=M +RCC.HCLKFreq_Value=64000000 +RCC.IPParameters=ADCFreqValue,ADCPresc,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,MCOFreq_Value,PLLCLKFreq_Value,PLLMCOFreq_Value,PLLMUL,SYSCLKFreq_VALUE,SYSCLKSource,TimSysFreq_Value,USBFreq_Value +RCC.MCOFreq_Value=64000000 +RCC.PLLCLKFreq_Value=64000000 +RCC.PLLMCOFreq_Value=32000000 +RCC.PLLMUL=RCC_PLL_MUL16 +RCC.SYSCLKFreq_VALUE=64000000 +RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK +RCC.TimSysFreq_Value=64000000 +RCC.USBFreq_Value=64000000 +SH.ADCx_IN0.0=ADC1_IN0,IN0 +SH.ADCx_IN0.ConfNb=1 +SH.ADCx_IN2.0=ADC1_IN2 +SH.ADCx_IN2.1=ADC2_IN2,IN2 +SH.ADCx_IN2.ConfNb=2 +SH.ADCx_IN3.0=ADC1_IN3,IN3 +SH.ADCx_IN3.1=ADC2_IN3 +SH.ADCx_IN3.ConfNb=2 +SH.ADCx_IN4.0=ADC1_IN4 +SH.ADCx_IN4.1=ADC2_IN4,IN4 +SH.ADCx_IN4.ConfNb=2 +SH.ADCx_IN5.0=ADC1_IN5,IN5 +SH.ADCx_IN5.ConfNb=1 +SH.ADCx_IN6.0=ADC1_IN6 +SH.ADCx_IN6.1=ADC2_IN6,IN6 +SH.ADCx_IN6.ConfNb=2 +SH.ADCx_IN7.0=ADC2_IN7 +SH.ADCx_IN7.1=ADC1_IN7,IN7 +SH.ADCx_IN7.ConfNb=2 +SH.ADCx_IN9.0=ADC2_IN9,IN9 +SH.ADCx_IN9.ConfNb=1 +SH.S_TIM1_CH1.0=TIM1_CH1,PWM Generation1 CH1 CH1N +SH.S_TIM1_CH1.ConfNb=1 +SH.S_TIM1_CH2.0=TIM1_CH2,PWM Generation2 CH2 CH2N +SH.S_TIM1_CH2.ConfNb=1 +SH.S_TIM1_CH3.0=TIM1_CH3,PWM Generation3 CH3 CH3N +SH.S_TIM1_CH3.ConfNb=1 +TIM1.Channel-PWM\ Generation1\ CH1\ CH1N=TIM_CHANNEL_1 +TIM1.Channel-PWM\ Generation2\ CH2\ CH2N=TIM_CHANNEL_2 +TIM1.Channel-PWM\ Generation3\ CH3\ CH3N=TIM_CHANNEL_3 +TIM1.ClockDivision=TIM_CLOCKDIVISION_DIV1 +TIM1.CounterMode=TIM_COUNTERMODE_CENTERALIGNED1 +TIM1.DeadTime=DEAD_TIME +TIM1.IPParameters=CounterMode,Period,TIM_MasterSlaveMode,TIM_MasterOutputTrigger,Channel-PWM Generation3 CH3 CH3N,DeadTime,OffStateRunMode,OffStateIDLEMode,OCNPolarity_1,OCNPolarity_2,OCNPolarity_3,OCNIdleState_3,OCNIdleState_2,OCNIdleState_1,Channel-PWM Generation2 CH2 CH2N,Channel-PWM Generation1 CH1 CH1N,OCIdleState_1,OCIdleState_2,OCIdleState_3,ClockDivision +TIM1.IPParametersWithoutCheck=DeadTime,Period +TIM1.OCIdleState_1=TIM_OCIDLESTATE_SET +TIM1.OCIdleState_2=TIM_OCIDLESTATE_SET +TIM1.OCIdleState_3=TIM_OCIDLESTATE_SET +TIM1.OCNIdleState_1=TIM_OCNIDLESTATE_SET +TIM1.OCNIdleState_2=TIM_OCNIDLESTATE_SET +TIM1.OCNIdleState_3=TIM_OCNIDLESTATE_SET +TIM1.OCNPolarity_1=TIM_OCNPOLARITY_HIGH +TIM1.OCNPolarity_2=TIM_OCNPOLARITY_HIGH +TIM1.OCNPolarity_3=TIM_OCNPOLARITY_HIGH +TIM1.OffStateIDLEMode=TIM_OSSI_ENABLE +TIM1.OffStateRunMode=TIM_OSSR_ENABLE +TIM1.Period=64000000 / 2 / PWM_FREQ +TIM1.TIM_MasterOutputTrigger=TIM_TRGO_ENABLE +TIM1.TIM_MasterSlaveMode=TIM_MASTERSLAVEMODE_DISABLE +TIM2.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE +TIM2.Channel-Output\ Compare2\ No\ Output=TIM_CHANNEL_2 +TIM2.ClockDivision=TIM_CLOCKDIVISION_DIV1 +TIM2.CounterMode=TIM_COUNTERMODE_CENTERALIGNED1 +TIM2.IPParameters=TIM_MasterOutputTrigger,AutoReloadPreload,TIM_MasterSlaveMode,Period,CounterMode,OCMode_2,OC2Preload,ClockDivision,Channel-Output Compare2 No Output,OCPolarity_2 +TIM2.OC2Preload=DISABLE +TIM2.OCMode_2=TIM_OCMODE_TOGGLE +TIM2.OCPolarity_2=TIM_OCPOLARITY_HIGH +TIM2.Period=2000 +TIM2.TIM_MasterOutputTrigger=TIM_TRGO_OC2REF +TIM2.TIM_MasterSlaveMode=TIM_MASTERSLAVEMODE_ENABLE +TIM3.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE +TIM3.ClockDivision=TIM_CLOCKDIVISION_DIV1 +TIM3.IPParameters=Period,TIM_MasterOutputTrigger,TIM_MasterSlaveMode,ClockDivision,AutoReloadPreload +TIM3.IPParametersWithoutCheck=Period +TIM3.Period=64000000 / 2 / PWM_FREQ +TIM3.TIM_MasterOutputTrigger=TIM_TRGO_OC2REF +TIM3.TIM_MasterSlaveMode=TIM_MASTERSLAVEMODE_ENABLE +USART1.IPParameters=VirtualMode +USART1.VirtualMode=VM_ASYNC +USART3.IPParameters=VirtualMode +USART3.VirtualMode=VM_ASYNC +VP_SYS_VS_tim4.Mode=TIM4 +VP_SYS_VS_tim4.Signal=SYS_VS_tim4 +VP_TIM1_VS_ClockSourceINT.Mode=Internal +VP_TIM1_VS_ClockSourceINT.Signal=TIM1_VS_ClockSourceINT +VP_TIM2_VS_ClockSourceINT.Mode=Internal +VP_TIM2_VS_ClockSourceINT.Signal=TIM2_VS_ClockSourceINT +VP_TIM2_VS_ClockSourceITR.Mode=TriggerSource_ITR0 +VP_TIM2_VS_ClockSourceITR.Signal=TIM2_VS_ClockSourceITR +VP_TIM2_VS_ControllerModeGated.Mode=Gated Mode +VP_TIM2_VS_ControllerModeGated.Signal=TIM2_VS_ControllerModeGated +VP_TIM2_VS_no_output2.Mode=Output Compare2 No Output +VP_TIM2_VS_no_output2.Signal=TIM2_VS_no_output2 +VP_TIM3_VS_ClockSourceINT.Mode=Internal +VP_TIM3_VS_ClockSourceINT.Signal=TIM3_VS_ClockSourceINT +board=custom +isbadioc=true diff --git a/Src/FOC.c b/Src/FOC.c deleted file mode 100644 index fde22918..00000000 --- a/Src/FOC.c +++ /dev/null @@ -1,342 +0,0 @@ -/* - * FOC.c - * - * Created on: 25.01.2019 - * Author: Stancecoke - */ -#include "main.h" -#include "config.h" -#include "FOC.h" -#include "stm32f1xx_hal.h" -#include - -//q31_t T_halfsample = 0.00003125; -//q31_t counterfrequency = 64000000; -//q31_t U_max = (1/_SQRT3)*_U_DC; -q31_t temp1; -q31_t temp2; -q31_t temp3; -q31_t temp4; -q31_t temp5; -q31_t temp6; - -q31_t q31_i_q_fil = 0; -q31_t q31_i_d_fil = 0; - -q31_t x1; -q31_t x2; -q31_t teta_obs; - -q31_t e_log[300][6]; -q31_t z; -char Obs_flag=1; -uint8_t ui8_debug_state=0; - -char PI_flag=0; - -//const q31_t _T = 2048; - -TIM_HandleTypeDef htim1; - - -void FOC_calculation(int16_t int16_i_as, int16_t int16_i_bs, q31_t q31_teta, int16_t int16_i_q_target, int16_t throttle, MotorState_t* MS_FOC); -void svpwm(q31_t q31_u_alpha, q31_t q31_u_beta); -void observer_update(q31_t v_alpha, q31_t v_beta, q31_t i_alpha, q31_t i_beta, volatile q31_t x1, volatile q31_t x2, volatile q31_t phase); - - -extern q31_t c_squared; - -q31_t last_theta=-1; -int int32_last_i_as,int32_last_i_bs; -int last_current_mag; - -void FOC_calculation(int16_t int16_i_as, int16_t int16_i_bs, q31_t q31_teta, int16_t int16_i_q_target, int16_t throttle, MotorState_t* MS_FOC) -{ - - q31_t q31_i_alpha = 0; - q31_t q31_i_beta = 0; - q31_t q31_u_alpha = 0; - q31_t q31_u_beta = 0; - q31_t q31_i_d = 0; - q31_t q31_i_q = 0; - - q31_t sinevalue=0, cosinevalue = 0; - - - // temp5=(q31_t)int16_i_as; - // temp6=(q31_t)int16_i_bs; - - //Clamp field rotation velocity - //throttle-=50; -//q31_teta += (715827883 / 300) * (throttle - 150) -#if 0 - -// if(last_theta!=-1 && q31_teta - last_theta > 7158278*3) -// q31_teta = last_theta + 7158278*3; - - if(last_theta!=-1 && q31_teta - last_theta < 100000) - q31_teta = last_theta + 100000; - - last_theta = q31_teta; -#endif - // Clark transformation - - /* filter currents */ -#if 0 - int32_last_i_as = (((int32_last_i_as*7)) + (int16_i_as))>>3; // 0.875*prev + 0.125*curr | 0.75 = 0xD999 - int32_last_i_bs = (((int32_last_i_bs*7)) + (int16_i_bs))>>3; // 0.875*prev + 0.125*curr | 0.75 = 0xD999 - - int16_i_as = int32_last_i_as; - int16_i_bs = int32_last_i_bs; -#endif - - arm_clarke_q31((q31_t)int16_i_as, (q31_t)int16_i_bs, &q31_i_alpha, &q31_i_beta); - - - - int current_mag = q31_i_alpha + q31_i_beta; - - - last_current_mag = (last_current_mag*31 + current_mag)>>5; - c_squared = current_mag; - - if(MS_FOC->hall_angle_detect_flag){ -// q31_teta+=throttle*7158278*2; - } - arm_sin_cos_q31(q31_teta, &sinevalue, &cosinevalue); - - - // Park transformation - arm_park_q31(q31_i_alpha, q31_i_beta, &q31_i_d, &q31_i_q, sinevalue, cosinevalue); - - - q31_i_q_fil -= q31_i_q_fil>>4; - q31_i_q_fil += q31_i_q; - MS_FOC->i_q=q31_i_q_fil>>4; - - q31_i_d_fil -= q31_i_d_fil>>4; - q31_i_d_fil += q31_i_d; - MS_FOC->i_d=q31_i_d_fil>>4; - - //Control iq - - PI_flag=1; - - //set static volatage for hall angle detection - if(!MS_FOC->hall_angle_detect_flag){ - q31_i_d=300; - q31_i_q=0; - }else{ -#if 1 - q31_i_d=MS_FOC->u_d; - q31_i_q=MS_FOC->u_q; -#endif - } - - - //inverse Park transformation - arm_inv_park_q31(q31_i_d, q31_i_q, &q31_u_alpha, &q31_u_beta, -sinevalue, cosinevalue); - - temp1=int16_i_as; - temp2=int16_i_bs; - temp3=MS_FOC->i_d; - temp4=MS_FOC->i_q; - temp5=MS_FOC->u_d; - temp6=MS_FOC->u_q; - //observer_update(q31_u_alpha, q31_u_beta, q31_i_alpha, q31_i_beta , x1, x2, teta_obs); - - - { - e_log[z][0]=temp1;//fl_e_alpha_obs; - e_log[z][1]=temp2;//fl_e_beta_obs; - e_log[z][2]=temp3;//(q31_t)q31_teta_obs>>24; - e_log[z][3]=temp4; - e_log[z][4]=temp5; - e_log[z][5]=temp6; - z++; - if(z>150) - Obs_flag=1; - if (z>299) { - z=0; - ui8_debug_state=2; - } - } - //call SVPWM calculation - svpwm(q31_u_alpha, q31_u_beta); - //temp6=__HAL_TIM_GET_COUNTER(&htim1); - -} - -extern MotorState_t MS; - -//PI Control for quadrature current iq (torque) float operation without division -q31_t PI_control_i_q (q31_t ist, q31_t soll) -{ - static tmp=0; -// if(tmp++%512==0) -// printf_("Q: %d, %d\n", ist, soll); - -// printf_("Q: %d, %d\n", MS.i_q, MS.i_d); - q31_t q31_p; //proportional part - static float flt_q_i = 0; //integral part - static q31_t q31_q_dc = 0; // sum of proportional and integral part - q31_p = (soll - ist)*P_FACTOR_I_Q; - flt_q_i += ((float)(soll - ist))*I_FACTOR_I_Q; - - if ((q31_t)flt_q_i>_U_MAX) flt_q_i=(float)_U_MAX; - if ((q31_t)flt_q_i<-_U_MAX) flt_q_i = -(float)_U_MAX ; - if(!READ_BIT(TIM1->BDTR, TIM_BDTR_MOE))flt_q_i = 0 ; //reset integral part if PWM is disabled - - //avoid too big steps in one loop run - if (q31_p+(q31_t)flt_q_i>q31_q_dc+5) q31_q_dc+=5; - else if (q31_p+(q31_t)flt_q_i_U_MAX) q31_q_dc = _U_MAX; - if (q31_q_dc<-_U_MAX) q31_q_dc = -_U_MAX; // allow no negative voltage. - - - return (q31_q_dc); -} - -//PI Control for direct current id (loss) -q31_t PI_control_i_d (q31_t ist, q31_t soll, int clamp) - { - static tmp=0; -// if(tmp++%512==0) -// printf_("D: %d, %d\n", ist, soll); - q31_t q31_p; //proportional part - static float flt_q_i = 0; //integral part - static q31_t q31_q_dc = 0; // sum of proportional and integral part - q31_p = (soll - ist)*P_FACTOR_I_D; - flt_q_i += ((float)(soll - ist))*I_FACTOR_I_D; - - if ((q31_t)flt_q_i>clamp) flt_q_i=(float)clamp; - if ((q31_t)flt_q_iBDTR, TIM_BDTR_MOE))flt_q_i = 0 ; //reset integral part if PWM is disabled - - //avoid too big steps in one loop run - if (q31_p+(q31_t)flt_q_i>q31_q_dc+5) q31_q_dc+=5; - else if (q31_p+(q31_t)flt_q_iclamp) q31_q_dc = clamp; - if (q31_q_dc<-clamp) q31_q_dc = -clamp; // allow no negative voltage. - - return (q31_q_dc); -} - -void svpwm(q31_t q31_u_alpha, q31_t q31_u_beta) { - -//SVPWM according to chapter 4.9 of UM1052 - - - q31_t q31_U_alpha = (q31_t)((float)_SQRT3 *(float)_T * (float) q31_u_alpha); //float operation to avoid q31 overflow - q31_t q31_U_beta = -_T * q31_u_beta; - q31_t X = q31_U_beta; - q31_t Y = (q31_U_alpha+q31_U_beta)>>1; - q31_t Z = (q31_U_beta-q31_U_alpha)>>1; - - //Sector 1 & 4 - if ((Y>=0 && Z<0 && X>0)||(Y < 0 && Z>=0 && X<=0)){ - switchtime[0] = ((_T+X-Z)>>12) + (_T>>1); //right shift 11 for dividing by peroid (=2^11), right shift 1 for dividing by 2 - switchtime[1] = switchtime[0] + (Z>>11); - switchtime[2] = switchtime[1] - (X>>11); - //temp4=1; - } - - //Sector 2 & 5 - if ((Y>=0 && Z>=0) || (Y<0 && Z<0) ){ - switchtime[0] = ((_T+Y-Z)>>12) + (_T>>1); - switchtime[1] = switchtime[0] + (Z>>11); - switchtime[2] = switchtime[0] - (Y>>11); - //temp4=2; - } - - //Sector 3 & 6 - if ((Y<0 && Z>=0 && X>0)||(Y >= 0 && Z<0 && X<=0)){ - switchtime[0] = ((_T+Y-X)>>12) + (_T>>1); - switchtime[2] = switchtime[0] - (Y>>11); - switchtime[1] = switchtime[2] + (X>>11); - //temp4=3; - } - - -} - -// See http://cas.ensmp.fr/~praly/Telechargement/Journaux/2010-IEEE_TPEL-Lee-Hong-Nam-Ortega-Praly-Astolfi.pdf -void observer_update(q31_t v_alpha, q31_t v_beta, q31_t i_alpha, q31_t i_beta, volatile q31_t x1, volatile q31_t x2, volatile q31_t phase) { - - const float L = (3.0 / 2.0) * INDUCTANCE; - const float lambda = FLUX_LINKAGE; - float R = (3.0 / 2.0) * RESISTANCE; -/* - // Saturation compensation - const float sign = (m_motor_state.iq * m_motor_state.vq) >= 0.0 ? 1.0 : -1.0; - R -= R * sign * m_conf->foc_sat_comp * (m_motor_state.i_abs_filter / m_conf->l_current_max); - - // Temperature compensation - const float t = mc_interface_temp_motor_filtered(); - if (m_conf->foc_temp_comp && t > -5.0) { - R += R * 0.00386 * (t - m_conf->foc_temp_comp_base_temp); - }*/ - - const float L_ia = L * i_alpha; - const float L_ib = L * i_beta; - const float R_ia = R * i_alpha; - const float R_ib = R * i_beta; - const float lambda_2 = lambda*lambda; - const float gamma_half = GAMMA * 0.5; - - // Original -// float err = lambda_2 - (SQ(*x1 - L_ia) + SQ(*x2 - L_ib)); -// float x1_dot = -R_ia + v_alpha + gamma_half * (*x1 - L_ia) * err; -// float x2_dot = -R_ib + v_beta + gamma_half * (*x2 - L_ib) * err; -// *x1 += x1_dot * dt; -// *x2 += x2_dot * dt; -/* - // Iterative with some trial and error - const int iterations = 6; - const float dt_iteration = dt / (float)iterations; - for (int i = 0;i < iterations;i++) { - float err = lambda_2 - (SQ(*x1 - L_ia) + SQ(*x2 - L_ib)); - float gamma_tmp = gamma_half; - if (utils_truncate_number_abs(&err, lambda_2 * 0.2)) { - gamma_tmp *= 10.0; - } - float x1_dot = -R_ia + v_alpha + gamma_tmp * (*x1 - L_ia) * err; - float x2_dot = -R_ib + v_beta + gamma_tmp * (*x2 - L_ib) * err; - - *x1 += x1_dot * dt_iteration; - *x2 += x2_dot * dt_iteration; - } - */ - - // Same as above, but without iterations. - float err = lambda_2 - ((x1 - L_ia)*(x1 - L_ia) + (x2 - L_ib)*(x2 - L_ib)); - float gamma_tmp = gamma_half; - /*if (utils_truncate_number_abs(&err, lambda_2 * 0.2)) { - gamma_tmp *= 10.0; - }*/ - float x1_dot = -R_ia + v_alpha + gamma_tmp * (x1 - L_ia) * err; - float x2_dot = -R_ib + v_beta + gamma_tmp * (x2 - L_ib) * err; - x1 += x1_dot * _T; - x2 += x2_dot * _T; - - //UTILS_NAN_ZERO(*x1); - //UTILS_NAN_ZERO(*x2); - - //*phase = utils_fast_atan2(*x2 - L_ib, *x1 - L_ia); -} -/* -static void pll_run(float phase, float dt, volatile float *phase_var,volatile float *speed_var) { - //UTILS_NAN_ZERO(*phase_var); - float delta_theta = phase - *phase_var; - //utils_norm_angle_rad(&delta_theta); - //UTILS_NAN_ZERO(*speed_var); - *phase_var += (*speed_var + SPEED_KP * delta_theta) * dt; - //utils_norm_angle_rad((float*)phase_var); - *speed_var += SPEED_KI * delta_theta * dt; -}*/ diff --git a/Src/ImageFiles/stancecoke.png b/Src/ImageFiles/stancecoke.png deleted file mode 100644 index 5e17e784..00000000 Binary files a/Src/ImageFiles/stancecoke.png and /dev/null differ diff --git a/Src/display_bafang.c b/Src/display_bafang.c deleted file mode 100644 index d4f59c48..00000000 --- a/Src/display_bafang.c +++ /dev/null @@ -1,279 +0,0 @@ -/* -Library for Bafang BBS01/BBS02 Displays (C965...) - -Copyright © 2016 Jens Kießling (jenskiessling@gmail.com) -inspired by Kingmeter Library (Michael Fabry) - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - - -// Includes -#include "config.h" -#include "display_bafang.h" -#include "main.h" -#include "stm32f1xx_hal.h" - -#if (DISPLAY_TYPE == DISPLAY_TYPE_BAFANG) - -// Definitions -#define RXSTATE_WAITGAP 0 //waiting for gap between messages to reset rx buffer -#define RXSTATE_STARTCODE 1 //waiting for startcode -#define RXSTATE_REQUEST 2 //request startcode received, waiting for request code -#define RXSTATE_INFO 3 //info startcode received, waiting for info code -#define RXSTATE_INFOMESSAGE 4 //info code received, waiting for info message -#define RXSTATE_DONE 5 //command received - -UART_HandleTypeDef huart1; - -// Local function prototypes -//static void BAFANG_Service(BAFANG_t* BF_ctx, uint8_t rx); - -uint8_t TxBuff[BF_MAX_TXBUFF]; -uint16_t spd_tmp; - - - -/* Public functions (Prototypes declared by display_bafang.h) */ - -/**************************************************************************************************** - * Bafang_Init() - Initializes the display object - * - ****************************************************************************************************/ - -void Bafang_Init (BAFANG_t* BF_ctx) - -{ - uint8_t i; - - - BF_ctx->RxState = RXSTATE_WAITGAP; - BF_ctx->LastRx = ui32_tim1_counter; - - for(i=0; iRxBuff[i] = 0x00; - } - - //Start UART with DMA - if (HAL_UART_Receive_DMA(&huart1, (uint8_t *)BF_ctx->ByteReceived, 1) != HAL_OK) - { - Error_Handler(); - } - -} - - - -/**************************************************************************************************** - * Bafang_Service() - Communicates data from and to the display - * - ***************************************************************************************************/ -void Bafang_Service(BAFANG_t* BF_ctx, uint8_t rx) -{ - - - //wait for gap - if(BF_ctx->RxState == RXSTATE_WAITGAP){ - - if(BF_ctx->ByteReceived[0]==BF_CMD_STARTREQUEST || BF_ctx->ByteReceived[0]==BF_CMD_STARTINFO) //waiting for start code - { - - - BF_ctx->RxState++; ///go to next state - BF_ctx->LastRx = ui32_tim1_counter; - BF_ctx->RxCnt=0; - } - } - - // Search for Start Code - if(BF_ctx->RxState == RXSTATE_STARTCODE) //waiting for start code - { - - BF_ctx->LastRx = ui32_tim1_counter; - BF_ctx->RxBuff[0]=BF_ctx->ByteReceived[0]; - if(BF_ctx->RxBuff[0]==BF_CMD_STARTREQUEST) //valid request startcode detected - { - BF_ctx->RxCnt = 1; - BF_ctx->RxState = RXSTATE_REQUEST; - } - else if(BF_ctx->RxBuff[0]==BF_CMD_STARTINFO) //valid info startcode detected - { - BF_ctx->RxCnt = 1; - BF_ctx->RxState = RXSTATE_INFO; - } - else - { - BF_ctx->RxState = RXSTATE_WAITGAP; - } - - } - - else if(BF_ctx->RxState == RXSTATE_REQUEST) //we are waiting for request code - { - - BF_ctx->RxBuff[BF_ctx->RxCnt] = BF_ctx->ByteReceived[0]; - BF_ctx->RxCnt++; - BF_ctx->LastRx = ui32_tim1_counter; - switch (BF_ctx->RxBuff[1]) // analyze and send correct answer - { - case BF_CMD_GETSPEED: - - spd_tmp=BF_ctx->Rx.Wheeldiameter; - - TxBuff[0]=(BF_ctx->Tx.Wheeltime_ms>>8); - TxBuff[1]=(BF_ctx->Tx.Wheeltime_ms&0xff); - TxBuff[2]=TxBuff[0]+TxBuff[1]+32; - HAL_UART_Transmit_DMA(&huart1, (uint8_t *)&TxBuff, 3); - break; - - case BF_CMD_GETERROR: - TxBuff[0]=0; - TxBuff[1]=0; - HAL_UART_Transmit_DMA(&huart1, (uint8_t *)&TxBuff, 2); - break; - - case BF_CMD_GETBAT: - TxBuff[0]=BF_ctx->Tx.Battery; - TxBuff[1]=BF_ctx->Tx.Battery; - HAL_UART_Transmit_DMA(&huart1, (uint8_t *)&TxBuff, 2); - break; - - case BF_CMD_GETPOWER: - TxBuff[0]=BF_ctx->Tx.Power; - TxBuff[1]=BF_ctx->Tx.Power; - HAL_UART_Transmit_DMA(&huart1, (uint8_t *)&TxBuff, 2); - break; - - case BF_CMD_GET2: - if (BF_ctx->Tx.Power>30000){ - TxBuff[0]=49; - TxBuff[1]=49;} - else{ - TxBuff[0]=48; - TxBuff[1]=48; - } - HAL_UART_Transmit_DMA(&huart1, (uint8_t *)&TxBuff, 2); - break; - } - BF_ctx->RxState = RXSTATE_WAITGAP; //reset state machine - - - } - - else if(BF_ctx->RxState == RXSTATE_INFO) //we are waiting for info code - { - - BF_ctx->RxBuff[BF_ctx->RxCnt] = BF_ctx->ByteReceived[0]; - BF_ctx->RxCnt++; - BF_ctx->LastRx = ui32_tim1_counter; - switch (BF_ctx->RxBuff[1]) //analyze info code and set correct bytes to receive - { - case BF_CMD_LEVEL: - BF_ctx->InfoLength=4; //level message has length of 4 bytes - BF_ctx->RxState++; - break; - - case BF_CMD_LIGHT: - BF_ctx->InfoLength=3; //light message has length of 3 bytes - BF_ctx->RxState++; - break; - - case BF_CMD_WHEELDIAM: //wheeldiameter message has length of 5 bytes - BF_ctx->InfoLength=5; - BF_ctx->RxState++; - break; - - default: - BF_ctx->RxState=RXSTATE_WAITGAP; //not a valid message -> reset state machine - break; - } - - } - - else if (BF_ctx->RxState == RXSTATE_INFOMESSAGE ) //we are waiting for info message - { - if(BF_ctx->RxCntInfoLength){ - BF_ctx->RxBuff[BF_ctx->RxCnt] = BF_ctx->ByteReceived[0]; - BF_ctx->RxCnt++; - BF_ctx->LastRx = ui32_tim1_counter; - } - - if (BF_ctx->RxCnt==BF_ctx->InfoLength) //info message complete --> analyze - { - switch (BF_ctx->RxBuff[1]) - { - case BF_CMD_LEVEL: - if (BF_ctx->RxBuff[3]==BF_ctx->RxBuff[0]+BF_ctx->RxBuff[1]+BF_ctx->RxBuff[2]) //checksum is correct, set poti_stat - { - BF_ctx->Rx.PushAssist=0; - switch(BF_ctx->RxBuff[2]) - { - case BF_LEVEL0: - BF_ctx->Rx.AssistLevel=0; - break; - case BF_LEVEL1: - BF_ctx->Rx.AssistLevel=1; - break; - case BF_LEVEL2: - BF_ctx->Rx.AssistLevel=2; - break; - case BF_LEVEL3: - BF_ctx->Rx.AssistLevel=3; - break; - case BF_LEVEL4: - BF_ctx->Rx.AssistLevel=4; - break; - case BF_LEVEL5: - BF_ctx->Rx.AssistLevel=5; - break; - case BF_LEVEL6: - BF_ctx->Rx.AssistLevel=6; - break; - case BF_LEVEL7: - BF_ctx->Rx.AssistLevel=7; - break; - case BF_LEVEL8: - BF_ctx->Rx.AssistLevel=8; - break; - case BF_LEVEL9: - BF_ctx->Rx.AssistLevel=9; - break; - case BF_PUSHASSIST: - BF_ctx->Rx.PushAssist=1; - break; - default: - BF_ctx->Rx.AssistLevel=0; - break; - } - } - break; - - case BF_CMD_LIGHT: - BF_ctx->Rx.Headlight=(BF_ctx->RxBuff[2]==BF_LIGHTON); - break; - - case BF_CMD_WHEELDIAM: - BF_ctx->Rx.Wheeldiameter=BF_ctx->RxBuff[2]*256+BF_ctx->RxBuff[3]; - break; - } - BF_ctx->RxState = RXSTATE_STARTCODE; - } - } // end if RXSTATE_INFOMESSAGE -} - - - - -#endif // (DISPLAY_TYPE & DISPLAY_TYPE_BAFANG) diff --git a/Src/display_ebics.c b/Src/display_ebics.c deleted file mode 100644 index 2d714d50..00000000 --- a/Src/display_ebics.c +++ /dev/null @@ -1,112 +0,0 @@ -/* - * display_ebics.c - * - * Created on: 12.11.2020 - * Author: Gaswerke - */ - -#include "main.h" -#include "stm32f1xx_hal.h" -#include "print.h" - -UART_HandleTypeDef huart3; -uint8_t ui8_rx_buffer[12]; -uint8_t ui8_tx_buffer[12]; - - -void ebics_init() -{ - - if (HAL_UART_Receive_DMA(&huart3, (uint8_t *)ui8_rx_buffer, 12) != HAL_OK) - { - Error_Handler(); - } -} - -void process_ant_page(MotorState_t* MS, MotorParams_t* MP){ - - int chkSum = 0; - - for (uint8_t i = 0; i < 11; i++) { - chkSum ^= ui8_rx_buffer[i]; - } - - if(chkSum == ui8_rx_buffer[11]){ - - switch (ui8_rx_buffer[3]){ - case 16: - { - /* - message[4] = State.Wheel_Circumference & 0xFF; //Low Byte - message[5] = State.Wheel_Circumference >> 8 & 0xFF; // HiByte - message[6] = State.Travel_Mode_State; - message[7] = State.Display_Command & 0xFF; //Low Byte - message[8] = State.Display_Command >> 8 & 0xFF; // HiByte - message[9] = State.Manufacturer_ID & 0xFF; //Low Byte - message[10] = State.Manufacturer_ID >> 8 & 0xFF; //Hi Byte - */ - MP->wheel_cirumference = ui8_rx_buffer[5]<<8 | ui8_rx_buffer[4]; - MS->regen_level = ui8_rx_buffer[6] & 0x07; - MS->assist_level = ui8_rx_buffer[6]>>3 & 0x07; - - - }// end case 16 - break; - - default: - { - //do nothing - } - }//end switch - }// end if chkSum -}//end process_ant_page - -void send_ant_page(uint8_t page, MotorState_t* MS, MotorParams_t* MP){ - - switch (page){ - case 1: - { - /* - State.Temperature_State=RxAnt[4]; - State.Travel_Mode_State=RxAnt[5]; - State.System_State=RxAnt[6]; - State.Gear_State=RxAnt[7]; - State.LEV_Error=RxAnt[8]; - State.Speed=RxAnt[10]<<8|RxAnt[9]; - */ - uint8_t temperature_state=1; //to do: set Temperature state Byte according to ANT+LEV - uint16_t speedx10 = MP->wheel_cirumference/((MS->Speed*MP->pulses_per_revolution)>>3)*36; // *3,6 for km/h then *10 for LEV standard definition. - speedx10 = 250; - ui8_tx_buffer[0] = 164; //Sync binary 10100100; - ui8_tx_buffer[1] = 12; //MsgLength - ui8_tx_buffer[2] = 0x4E;// MsgID for 0x4E for "broadcast Data" - ui8_tx_buffer[3] = page; - - ui8_tx_buffer[4] = temperature_state; - ui8_tx_buffer[5] = MS->regen_level|MS->assist_level<<3; - ui8_tx_buffer[6] = MS->system_state; - ui8_tx_buffer[7] = MS->gear_state; - ui8_tx_buffer[8] = MS->error_state; - ui8_tx_buffer[9] = speedx10 & 0xFF; //low byte of speed - ui8_tx_buffer[10] = speedx10>>8 & 0x07; // lower 3 Bytes of high byte - - int chkSum = 0; - - for (uint8_t i = 0; i < 11; i++) { - chkSum ^= ui8_tx_buffer[i]; - } - ui8_tx_buffer[11]= chkSum; - - HAL_UART_Transmit_DMA(&huart3 , (uint8_t *)&ui8_tx_buffer, 12); - - - } //end case 1 - break; - - default: - { - //do nothing - } - } //end switch - -} //end send page diff --git a/Src/display_kingmeter.c b/Src/display_kingmeter.c deleted file mode 100644 index bf425765..00000000 --- a/Src/display_kingmeter.c +++ /dev/null @@ -1,609 +0,0 @@ -/* -Library for King-Meter displays - -Copyright © 2015 Michael Fabry (Michael@Fabry.de) - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - - -// Includes - -#include "config.h" -#include "main.h" -#include "display_kingmeter.h" -#include "stm32f1xx_hal.h" - -#if (DISPLAY_TYPE & DISPLAY_TYPE_KINGMETER) - -// Definitions -#define RXSTATE_STARTCODE 0 -#define RXSTATE_SENDTXMSG 1 -#define RXSTATE_MSGBODY 2 -#define RXSTATE_DONE 3 - -UART_HandleTypeDef huart1; - -#if (DISPLAY_TYPE == DISPLAY_TYPE_KINGMETER_618U) - const uint16_t KM_WHEELSIZE[8] = { KM_WHEELSIZE_16, KM_WHEELSIZE_18, KM_WHEELSIZE_20, KM_WHEELSIZE_22, - KM_WHEELSIZE_24, KM_WHEELSIZE_26, KM_WHEELSIZE_700, KM_WHEELSIZE_28 }; -#endif - - - -// Hashtable used for handshaking in 901U protocol -#if (DISPLAY_TYPE == DISPLAY_TYPE_KINGMETER_901U) - const uint8_t KM_901U_HANDSHAKE[64] = - { - 137, - 159, - 134, - 249, - 88, - 11, - 250, - 61, - 33, - 150, - 3, - 193, - 118, - 141, - 209, - 94, - 226, - 68, - 146, - 158, - 145, - 127, - 216, - 62, - 116, - 230, - 101, - 211, - 251, - 54, - 229, - 247, - 20, - 222, - 59, - 63, - 35, - 252, - 142, - 238, - 23, - 197, - 84, - 77, - 147, - 173, - 210, - 57, - 142, - 223, - 157, - 97, - 36, - 160, - 229, - 237, - 75, - 80, - 37, - 113, - 154, - 88, - 23, - 120 - }; -#endif - - -// Local function prototypes -#if (DISPLAY_TYPE == DISPLAY_TYPE_KINGMETER_618U) -static void KM_618U_Service(KINGMETER_t* KM_ctx); -#endif - -#if (DISPLAY_TYPE == DISPLAY_TYPE_KINGMETER_901U) -static void KM_901U_Service(KINGMETER_t* KM_ctx); -#endif - -uint8_t lowByte(uint16_t word); -uint8_t highByte(uint16_t word); - -uint8_t pas_tolerance = 0; -uint8_t wheel_magnets = 1; -uint8_t vcutoff = 30; -//uint16_t wheel_circumference = 2200; -uint8_t spd_max1 = 25; -uint8_t ui8_RxLength=1; - -/* Public functions (Prototypes declared by display_kingmeter.h) */ - -/**************************************************************************************************** - * KingMeter_Init() - Initializes the display object - * - ****************************************************************************************************/ - -void KingMeter_Init (KINGMETER_t* KM_ctx) - -{ - uint8_t i; - - - KM_ctx->RxState = RXSTATE_STARTCODE; - KM_ctx->LastRx = 0; //hier aktuellen Timerwert als Startzeitpunkt - - for(i=0; iRxBuff[i] = 0x00; - } - - KM_ctx->RxCnt = 0; - - // Settings received from display: - KM_ctx->Settings.PAS_RUN_Direction = KM_PASDIR_FORWARD; - KM_ctx->Settings.PAS_SCN_Tolerance = (uint8_t) pas_tolerance; - KM_ctx->Settings.PAS_N_Ratio = 255; - KM_ctx->Settings.HND_HL_ThrParam = KM_HND_HL_NO; - KM_ctx->Settings.HND_HF_ThrParam = KM_HND_HF_NO; - KM_ctx->Settings.SYS_SSP_SlowStart = 1; - KM_ctx->Settings.SPS_SpdMagnets = (uint8_t) wheel_magnets; - KM_ctx->Settings.VOL_1_UnderVolt_x10 = (uint16_t) (vcutoff * 10); - KM_ctx->Settings.WheelSize_mm = (uint16_t) (WHEEL_CIRCUMFERENCE * 1000); - - // Parameters received from display in operation mode: - -#if (DISPLAY_TYPE == DISPLAY_TYPE_KINGMETER_618U) - KM_ctx->Rx.AssistLevel = 3; //J-LCD Level 1...5 -#endif - -#if (DISPLAY_TYPE == DISPLAY_TYPE_KINGMETER_901U) - KM_ctx->Rx.AssistLevel = 128; //MK5S Level 0...255 -#endif - - KM_ctx->Rx.Headlight = KM_HEADLIGHT_OFF; - KM_ctx->Rx.Battery = KM_BATTERY_NORMAL; - KM_ctx->Rx.PushAssist = KM_PUSHASSIST_OFF; - KM_ctx->Rx.PowerAssist = KM_POWERASSIST_ON; - KM_ctx->Rx.Throttle = KM_THROTTLE_ON; - KM_ctx->Rx.CruiseControl = KM_CRUISE_OFF; - KM_ctx->Rx.OverSpeed = KM_OVERSPEED_NO; - KM_ctx->Rx.SPEEDMAX_Limit_x10 = (uint16_t) (spd_max1 * 10); - KM_ctx->Rx.CUR_Limit_x10 = 150; - - // Parameters to be send to display in operation mode: - KM_ctx->Tx.Battery = KM_BATTERY_NORMAL; - KM_ctx->Tx.Wheeltime_ms = KM_MAX_WHEELTIME; - KM_ctx->Tx.Error = KM_ERROR_NONE; - KM_ctx->Tx.Current_x10 = 0; - - -#if (DISPLAY_TYPE == DISPLAY_TYPE_KINGMETER_618U) - //Start UART with DMA - if (HAL_UART_Receive_DMA(&huart1, (uint8_t *)KM_ctx->RxBuff, KM_MAX_RXBUFF) != HAL_OK) - { - Error_Handler(); - } -#endif - -#if (DISPLAY_TYPE == DISPLAY_TYPE_KINGMETER_901U) - //Start UART with DMA - if (HAL_UART_Receive_DMA(&huart1, (uint8_t *)KM_ctx->RxBuff, 15) != HAL_OK) - { - Error_Handler(); - } -#endif - // HAL_UART_Transmit_DMA(&huart1, (uint8_t *)&buffer, KM_MAX_RXBUFF); -} - - - -/**************************************************************************************************** - * KingMeter_Service() - Communicates data from and to the display - * - ***************************************************************************************************/ -void KingMeter_Service(KINGMETER_t* KM_ctx) -{ - #if (DISPLAY_TYPE == DISPLAY_TYPE_KINGMETER_618U) - KM_618U_Service(KM_ctx); - #endif - - #if (DISPLAY_TYPE == DISPLAY_TYPE_KINGMETER_901U) - KM_901U_Service(KM_ctx); - #endif -} - - - - -/* Local functions */ - -#if (DISPLAY_TYPE == DISPLAY_TYPE_KINGMETER_618U) -/**************************************************************************************************** - * KM_618U_Service() - Communication protocol of 618U firmware (J-LCD compatible) - * - ***************************************************************************************************/ -static void KM_618U_Service(KINGMETER_t* KM_ctx) -{ - uint8_t i; - static uint8_t TxBuff[KM_MAX_TXBUFF]; - KM_ctx->RxState = RXSTATE_SENDTXMSG; - -// Send message to display - - - if(KM_ctx->RxState == RXSTATE_SENDTXMSG) - { - KM_ctx->RxState = RXSTATE_MSGBODY; - - // Prepare Tx message - TxBuff[0] = 0X46; // StartCode - - if(KM_ctx->Tx.Battery == KM_BATTERY_LOW) - { - TxBuff[1] = 0x00; // If none of Bit[0..2] is set, display blinks - } - else - { - TxBuff[1] = 0x01; - } - - TxBuff[2] = (uint8_t) ((KM_ctx->Tx.Current_x10 * 3) / 10); // Current unit: 1/3A - TxBuff[3] = (KM_ctx->Tx.Wheeltime_ms)>>8; //High byte of wheeltime - TxBuff[4] = (KM_ctx->Tx.Wheeltime_ms)|0xFF; // Mask lower 8 bits - TxBuff[5] = 0x7A; // Reply with WheelSize 26" / Maxspeed 25km/h (no influence on display) - TxBuff[6] = KM_ctx->Tx.Error; - - - // Send prepared message - TxBuff[7] = 0x00; - - // KM_ctx->SerialPort->write(TxBuff[0]); // Send StartCode - - for(i=1; i<7; i++) - { - // KM_ctx->SerialPort->write(TxBuff[i]); // Send TxBuff[1..6] - TxBuff[7] = TxBuff[7] ^ TxBuff[i]; // Calculate XOR CheckSum - } - - // KM_ctx->SerialPort->write(TxBuff[7]); // Send XOR CheckSum - - - - } - - - // Receive Message body - if(KM_ctx->RxState == RXSTATE_MSGBODY) - { - - // Verify XOR CheckSum - if(KM_ctx->RxBuff[4] == (KM_ctx->RxBuff[1] ^ KM_ctx->RxBuff[2] ^ KM_ctx->RxBuff[3])) - { - KM_ctx->RxState = RXSTATE_DONE; - } - else - { - KM_ctx->RxState = RXSTATE_STARTCODE; - } - - - - } - - // Message received completely - if(KM_ctx->RxState == RXSTATE_DONE) - { - - // Buffer über DMA senden - HAL_UART_Transmit_DMA(&huart1, (uint8_t *)&TxBuff, KM_MAX_TXBUFF); - // HAL_Delay(6); - - KM_ctx->RxState = RXSTATE_STARTCODE; - - // Decode PAS level - Display sets PAS-level to 0 when overspeed detected! - KM_ctx->Rx.AssistLevel = KM_ctx->RxBuff[1] & 0x07; - - // Decode Headlight status - KM_ctx->Rx.Headlight = (KM_ctx->RxBuff[1] & 0x80) >> 7; // KM_HEADLIGHT_OFF / KM_HEADLIGHT_ON - -// KM_ctx->Rx.Battery; - - // Decode PushAssist status - KM_ctx->Rx.PushAssist = (KM_ctx->RxBuff[1] & 0x10) >> 4; // KM_PUSHASSIST_OFF / KM_PUSHASSIST_ON - -// KM_ctx->Rx.PowerAssist; -// KM_ctx->Rx.Throttle; -// KM_ctx->Rx.CruiseControl; -// KM_ctx->Rx.OverSpeed; - - // Decode Speedlimit - KM_ctx->Rx.SPEEDMAX_Limit_x10 = (((KM_ctx->RxBuff[2] & 0xF8) >> 3) + 10) * 10; - - // Decode Wheelsize by hashtable - KM_ctx->Settings.WheelSize_mm = KM_WHEELSIZE[KM_ctx->RxBuff[2] & 0x07]; - -// KM_ctx->Rx.CUR_Limit_x10; - } -} -#endif - - - - -#if (DISPLAY_TYPE == DISPLAY_TYPE_KINGMETER_901U) -/**************************************************************************************************** - * KM_901U_Service() - Communication protocol of 901U firmware - * - ***************************************************************************************************/ -static void KM_901U_Service(KINGMETER_t* KM_ctx) -{ - uint8_t i; - static uint8_t j=0; - static uint8_t first_run_flag=0; - - uint16_t CheckSum; - static uint8_t TxBuff[KM_MAX_TXBUFF]; - uint8_t TxCnt; - static uint8_t handshake_position; - - i=KM_ctx->RxBuff[2]; - - switch (first_run_flag) - { - - case 0: - handshake_position=KM_ctx->RxBuff[9]; - //TxBuff[0]=KM_ctx->RxBuff[9]; - //TxBuff[1]=KM_901U_HANDSHAKE[handshake_position]; - // HAL_UART_Transmit_DMA(&huart1, (uint8_t *)&TxBuff, 2); - //HAL_Delay(15); - - TxBuff[0] = 0XFD; // StartCode - TxBuff[1] = 0xFB; // SrcAdd: Controller - TxBuff[2] = 0xFD; // CmdCode - TxBuff[3] = 0xFD; - TxBuff[4] = 0x00; - //FD FB FD FD 00 - HAL_UART_Transmit_DMA(&huart1, (uint8_t *)&TxBuff, 5); - HAL_Delay(5); - first_run_flag=1; - - HAL_UART_DMAStop(&huart1); - - if (HAL_UART_Receive_DMA(&huart1, (uint8_t *)KM_ctx->RxBuff, 9) != HAL_OK) - { - Error_Handler(); - } - - break; - - case 1: - // Prepare Tx message with handshake code - TxBuff[0] = 0X3A; // StartCode - TxBuff[1] = 0x1A; // SrcAdd: Controller - TxBuff[2] = 0x53; // CmdCode - TxBuff[3] = 0x05; // Number of Databytes - TxBuff[4] = 0x00; - TxBuff[5] = 0x00; - TxBuff[6] = 0x0D; - TxBuff[7] = KM_901U_HANDSHAKE[handshake_position]; - TxBuff[8] = 0x00; - - CheckSum = 0x0000; - for(i=1; i<8; i++) - { - - CheckSum = CheckSum + TxBuff[i]; // Calculate CheckSum - } - TxBuff[9]=lowByte(CheckSum); // Low Byte of checksum - TxBuff[10]=highByte(CheckSum); - //TxBuff[9] = 0x50; - //TxBuff[10] = 0x01; - TxBuff[11] = 0x0D; - TxBuff[12] = 0x0A; - // 3A 1A 53 05 00 00 0D 91 00 10 01 0D 0A - // 3A 1A 53 05 00 00 0D 7F 00 FE 00 0D 0A - // 3A 1A 53 05 00 00 0D D8 00 57 01 0D 0A - // 3A 1A 53 05 00 00 0D 3E 00 BD 00 0D 0A - - HAL_UART_Transmit_DMA(&huart1, (uint8_t *)&TxBuff, 13); - // HAL_UART_Transmit_DMA(&huart1, (uint8_t *)&KM_ctx->RxBuff, 10); - - HAL_Delay(25); - first_run_flag=2; - - HAL_UART_DMAStop(&huart1); - - if (HAL_UART_Receive_DMA(&huart1, (uint8_t *)KM_ctx->RxBuff, 15) != HAL_OK) - { - Error_Handler(); - } - break; - - case 2: - switch(KM_ctx->RxBuff[2]) - { - case 0x52: // Operation mode - - CheckSum = 0x0000; - for(i=1; i<(4+KM_ctx->RxBuff[3]); i++) - { - CheckSum = CheckSum + KM_ctx->RxBuff[i]; // Calculate CheckSum - } - - if((lowByte(CheckSum)) == KM_ctx->RxBuff[i] && (highByte(CheckSum)) == KM_ctx->RxBuff[i+1]) //low-byte and high-byte - { - KM_ctx->RxState = RXSTATE_DONE; - } - else - { - //KM_ctx->RxState = RXSTATE_DONE; - KM_ctx->RxState = RXSTATE_STARTCODE; // Invalid CheckSum, ignore message - } - break; - - case 0x53: // Settings mode - - CheckSum = 0x0000; - for(i=1; i<(4+KM_ctx->RxBuff[3]); i++) - { - CheckSum = CheckSum + KM_ctx->RxBuff[i]; // Calculate CheckSum - } - - if((lowByte(CheckSum)) == KM_ctx->RxBuff[i] && (highByte(CheckSum)) == KM_ctx->RxBuff[i+1]) //low-byte and high-byte - { - KM_ctx->RxState = RXSTATE_DONE; - } - else - { - KM_ctx->RxState = RXSTATE_DONE; - //KM_ctx->RxState = RXSTATE_STARTCODE; // Invalid CheckSum, ignore message - } - break; - } - - - - // Message received completely - if(KM_ctx->RxState == RXSTATE_DONE) - { - KM_ctx->RxState = RXSTATE_STARTCODE; - - switch(KM_ctx->RxBuff[2]) - { - case 0x52: // Operation mode - - // Decode Rx message - KM_ctx->Rx.AssistLevel = KM_ctx->RxBuff[4]; // 0..255 - KM_ctx->Rx.Headlight = (KM_ctx->RxBuff[5] & 0xC0) >> 6; // KM_HEADLIGHT_OFF / KM_HEADLIGHT_ON / KM_HEADLIGHT_LOW / KM_HEADLIGHT_HIGH - KM_ctx->Rx.Battery = (KM_ctx->RxBuff[5] & 0x20) >> 5; // KM_BATTERY_NORMAL / KM_BATTERY_LOW - KM_ctx->Rx.PushAssist = (KM_ctx->RxBuff[5] & 0x10) >> 4; // KM_PUSHASSIST_OFF / KM_PUSHASSIST_ON - KM_ctx->Rx.PowerAssist = (KM_ctx->RxBuff[5] & 0x08) >> 3; // KM_POWERASSIST_OFF / KM_POWERASSIST_ON - KM_ctx->Rx.Throttle = (KM_ctx->RxBuff[5] & 0x04) >> 2; // KM_THROTTLE_OFF / KM_THROTTLE_ON - KM_ctx->Rx.CruiseControl = (KM_ctx->RxBuff[5] & 0x02) >> 1; // KM_CRUISE_OFF / KM_CRUISE_ON - KM_ctx->Rx.OverSpeed = (KM_ctx->RxBuff[5] & 0x01); // KM_OVERSPEED_NO / KM_OVERSPEED_YES - KM_ctx->Rx.SPEEDMAX_Limit_x10 = (((uint16_t) KM_ctx->RxBuff[7])<<8) | KM_ctx->RxBuff[6]; - KM_ctx->Rx.CUR_Limit_x10 = (((uint16_t) KM_ctx->RxBuff[9])<<8) | KM_ctx->RxBuff[8]; - - - // Prepare Tx message - TxBuff[0] = 0X3A; // StartCode - TxBuff[1] = 0x1A; // SrcAdd: Controller - TxBuff[2] = 0x52; // CmdCode - TxBuff[3] = 0x05; // DataSize - - - if(KM_ctx->Tx.Battery == KM_BATTERY_LOW) - { - TxBuff[4] = 0x40; // State data (only UnderVoltage bit has influence on display) - } - else - { - TxBuff[4] = 0x00; // State data (only UnderVoltage bit has influence on display) - } - - TxBuff[5] = (uint8_t) ((KM_ctx->Tx.Current_x10 * 3) / 10); // Current low Strom in 1/3 Ampere, nur ein Byte - TxBuff[6] = highByte(KM_ctx->Tx.Wheeltime_ms); // WheelSpeed high Hinweis - TxBuff[7] = lowByte (KM_ctx->Tx.Wheeltime_ms); // WheelSpeed low - TxBuff[8] = KM_ctx->Tx.Error; // Error - - TxCnt = 9; - break; - - - case 0x53: // Settings mode - - // Decode Rx message - KM_ctx->Settings.PAS_RUN_Direction = (KM_ctx->RxBuff[4] & 0x80) >> 7; // KM_PASDIR_FORWARD / KM_PASDIR_BACKWARD - KM_ctx->Settings.PAS_SCN_Tolerance = KM_ctx->RxBuff[5]; // 2..9 - KM_ctx->Settings.PAS_N_Ratio = KM_ctx->RxBuff[6]; // 0..255 - KM_ctx->Settings.HND_HL_ThrParam = (KM_ctx->RxBuff[7] & 0x80) >> 7; // KM_HND_HL_NO / KM_HND_HL_YES - KM_ctx->Settings.HND_HF_ThrParam = (KM_ctx->RxBuff[7] & 0x40) >> 6; // KM_HND_HF_NO / KM_HND_HF_YES - KM_ctx->Settings.SYS_SSP_SlowStart = KM_ctx->RxBuff[8]; // 1..9 - KM_ctx->Settings.SPS_SpdMagnets = KM_ctx->RxBuff[9]; // 1..4 - KM_ctx->Settings.VOL_1_UnderVolt_x10 = (((uint16_t) KM_ctx->RxBuff[11])<<8) | KM_ctx->RxBuff[11]; - KM_ctx->Settings.WheelSize_mm = (((uint16_t) KM_ctx->RxBuff[12])<<8) | KM_ctx->RxBuff[13]; - - - // Prepare Tx message with handshake code - TxBuff[0] = 0X3A; // StartCode - TxBuff[1] = 0x1A; // SrcAdd: Controller - TxBuff[2] = 0x53; // CmdCode - TxBuff[3] = 0x05; // Number of Databytes - TxBuff[4] = 0x00; - TxBuff[5] = 0x00; - TxBuff[6] = 0x0D; - TxBuff[7] = KM_901U_HANDSHAKE[handshake_position++]; - TxBuff[8] = 0x00; - TxBuff[9] = 0x0C; - TxBuff[10] = 0x01; - TxBuff[11] = 0x0D; - TxBuff[12] = 0x0A; - - - // 3A 1A 53 05 00 00 0D 91 00 10 01 0D 0A - //3A 1A 53 05 80 00 0D 91 26 B6 01 0D 0A - //3A 1A 53 05 00 00 0D 91 00 10 01 0D 0A - // 3A 1A 53 05 00 00 0D 8D 00 0C 01 0D 0A - // DataSize - //TxBuff[5] = KM_901U_HANDSHAKE[KM_ctx->RxBuff[14]]; // Handshake answer - TxCnt = 9; - break; - - default: - TxCnt = 0; - } - - - // Send prepared message - if(TxCnt != 0) - { - CheckSum = 0x0000; - - - - for(i=1; i>8; -} - - -#endif // (DISPLAY_TYPE & DISPLAY_TYPE_KINGMETER) diff --git a/Src/display_kunteng.c b/Src/display_kunteng.c deleted file mode 100644 index 35d41170..00000000 --- a/Src/display_kunteng.c +++ /dev/null @@ -1,165 +0,0 @@ -/* - * display_kunteng.c - * - * Created on: 25.09.2019 - * Author: Admin - */ - -#include "main.h" -#include "display_kunteng.h" -#include "stm32f1xx_hal.h" - -uint8_t ui8_tx_buffer[12]; -uint8_t ui8_j; -uint8_t ui8_crc; -uint16_t ui16_wheel_period_ms =4500; -uint32_t ui32_battery_volts= 36; -uint8_t ui8_battery_soc = 12; -uint8_t ui16_error; -uint8_t ui8_rx_buffer[13]; -uint8_t ui8_rx_buffer_counter = 0; -uint8_t ui8_byte_received; -uint8_t ui8_moving_indication = 0; -uint8_t ui8_UARTCounter = 0; -uint8_t ui8_msg_received=0; - -volatile struc_lcd_configuration_variables lcd_configuration_variables; - -UART_HandleTypeDef huart1; - - -void kunteng_init() -{ - - if (HAL_UART_Receive_DMA(&huart1, (uint8_t *)ui8_rx_buffer, 13) != HAL_OK) - { - Error_Handler(); - } -} -void display_update(MotorState_t* MS_U) -{ - - // prepare moving indication info - ui8_moving_indication = 0; - // if (brake_is_set ()) { ui8_moving_indication |= (1 << 5); } - //if (ebike_app_cruise_control_is_set ()) { ui8_moving_indication |= (1 << 3); } - //if (throttle_is_set ()) { ui8_moving_indication |= (1 << 1); } - //if (pas_is_set ()) { ui8_moving_indication |= (1 << 4); } - - -#ifdef SPEEDSENSOR_EXTERNAL - if(ui16_SPEED>65000){ui16_wheel_period_ms=4500;} - else{ - ui16_wheel_period_ms = (uint16_t) ((float)ui16_SPEED/((float)PWM_CYCLES_SECOND/1000.0)); //must be /1000 devided in /125/8 for better resolution - } -#endif - -#ifdef SPEEDSENSOR_INTERNAL - if(ui32_erps_filtered==0){ui16_wheel_period_ms=4500;} - else{ - ui16_wheel_period_ms=(uint16_t)(1000.0*(float)GEAR_RATIO/(float)ui32_erps_filtered); - } -#endif - - // calc battery pack state of charge (SOC) - ui32_battery_volts = (MS_U->Voltage*CAL_BAT_V*256)/10000; //hier noch die richtige Kalibrierung einbauen (*256 für bessere Auflösung) - if (ui32_battery_volts > ((uint16_t) BATTERY_PACK_VOLTS_80)) { ui8_battery_soc = 16; } // 4 bars | full - else if (ui32_battery_volts > ((uint16_t) BATTERY_PACK_VOLTS_60)) { ui8_battery_soc = 12; } // 3 bars - else if (ui32_battery_volts > ((uint16_t) BATTERY_PACK_VOLTS_40)) { ui8_battery_soc = 8; } // 2 bars - else if (ui32_battery_volts > ((uint16_t) BATTERY_PACK_VOLTS_20)) { ui8_battery_soc = 4; } // 1 bar - else { ui8_battery_soc = 3; } // empty - - ui16_wheel_period_ms = (MS_U->Speed*PULSES_PER_REVOLUTION)>>3; //Speed Zähler wird mit 8kHz hochgezählt - -ui8_tx_buffer [0] = 65; - // B1: battery level - ui8_tx_buffer [1] = ui8_battery_soc; - // B2: 24V controller - ui8_tx_buffer [2] = (uint8_t) COMMUNICATIONS_BATTERY_VOLTAGE; - // B3: speed, wheel rotation period, ms; period(ms)=B3*256+B4; - ui8_tx_buffer [3] = (ui16_wheel_period_ms >> 8) & 0xff; - ui8_tx_buffer [4] = (ui16_wheel_period_ms) & 0xff; - - - - // B5: error info display - ui8_tx_buffer [5] = ui16_error; - // B6: CRC: xor B1,B2,B3,B4,B5,B7,B8,B9,B10,B11 - // 0 value so no effect on xor operation for now - ui8_tx_buffer [6] = 0; - // B7: moving mode indication, bit - // throttle: 2 - ui8_tx_buffer [7] = ui8_moving_indication; - // B8: 4x controller current - // Vbat = 30V: - // - B8 = 255, LCD shows 1912 watts - // - B8 = 250, LCD shows 1875 watts - // - B8 = 100, LCD shows 750 watts - // each unit of B8 = 0.25A - - - //ui8_tx_buffer [8] = (uint8_t)(((ui16_BatteryCurrent-ui16_current_cal_b+1)<<2)/current_cal_a); - ui8_tx_buffer [8] = (uint8_t)(MS_U->Battery_Current*MS_U->Voltage*CAL_BAT_V/82010000); //Kalibrierung nach Binatone, empririsch ermittelt. Strom und Spannung in Milli, 13W pro digit - // B9: motor temperature - ui8_tx_buffer [9] = MS_U->Temperature-15; //according to documentation at endless sphere - // B10 and B11: 0 - ui8_tx_buffer [10] = 0; - ui8_tx_buffer [11] = 0; - - // calculate CRC xor - ui8_crc = 0; - for (ui8_j = 1; ui8_j <= 11; ui8_j++) - { - ui8_crc ^= ui8_tx_buffer[ui8_j]; - } - ui8_tx_buffer [6] = ui8_crc; - - // send the package over UART - HAL_UART_Transmit_DMA(&huart1, (uint8_t *)&ui8_tx_buffer, 12); -} - -/********************************************************************************************/ - // Process received package from the LCD - // - - // see if we have a received package to be processed -void check_message(MotorState_t* MS_D) - { - //printf("Byte recieved \r\n"); - // validation of the package data - ui8_crc = 0; - - for (ui8_j = 0; ui8_j <= 12; ui8_j++) - { - //putchar (ui8_j); - //putchar (ui8_rx_buffer[ui8_j]); - if (ui8_j == 5) continue; // don't xor B5 (B7 in our case) - ui8_crc ^= ui8_rx_buffer[ui8_j]; - } - - // see if CRC is ok - if (((ui8_crc ^ 10) == ui8_rx_buffer [5]) || // some versions of CRC LCD5 (??) - ((ui8_crc ^ 5) == ui8_rx_buffer [5]) || // CRC LCD3 (tested with KT36/48SVPR, from PSWpower) - ((ui8_crc ^ 9) == ui8_rx_buffer [5]) || // CRC LCD5 - ((ui8_crc ^ 2) == ui8_rx_buffer [5])) // CRC LCD3 - { //printf("message valid \r\n"); - lcd_configuration_variables.ui8_assist_level = ui8_rx_buffer [1] & 7; - lcd_configuration_variables.ui8_light = ui8_rx_buffer [1]>>7 & 1; - lcd_configuration_variables.ui8_motor_characteristic = ui8_rx_buffer [3]; - lcd_configuration_variables.ui8_wheel_size = ((ui8_rx_buffer [4] & 192) >> 6) | ((ui8_rx_buffer [2] & 7) << 2); - lcd_configuration_variables.ui8_max_speed = (10 + ((ui8_rx_buffer [2] & 248) >> 3)) | (ui8_rx_buffer [4] & 32); - lcd_configuration_variables.ui8_power_assist_control_mode = ui8_rx_buffer [4] & 8; - lcd_configuration_variables.ui8_controller_max_current = (ui8_rx_buffer [7] & 15); - MS_D->assist_level=lcd_configuration_variables.ui8_assist_level; - if(lcd_configuration_variables.ui8_light){ - HAL_GPIO_WritePin(LIGHT_GPIO_Port, LIGHT_Pin, GPIO_PIN_SET); - HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET); - } - else{ - HAL_GPIO_WritePin(LIGHT_GPIO_Port, LIGHT_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET); - } - - display_update(MS_D); - } - } diff --git a/Src/main.c b/Src/main.c deleted file mode 100644 index 269509cc..00000000 --- a/Src/main.c +++ /dev/null @@ -1,1868 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file : main.c - * @brief : Main program body - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2020 STMicroelectronics. - * All rights reserved.

- * - * This software component is licensed by ST under BSD 3-Clause license, - * the "License"; You may not use this file except in compliance with the - * License. You may obtain a copy of the License at: - * opensource.org/licenses/BSD-3-Clause - * - ****************************************************************************** - */ -/* USER CODE END Header */ -/* Includes ------------------------------------------------------------------*/ -#include "main.h" - -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ - -#include "print.h" -#include "FOC.h" -#include "config.h" - - -#if (DISPLAY_TYPE & DISPLAY_TYPE_KINGMETER) - #include "display_kingmeter.h" -#endif - -#if (DISPLAY_TYPE == DISPLAY_TYPE_BAFANG) - #include "display_bafang.h" -#endif - -#if (DISPLAY_TYPE == DISPLAY_TYPE_KUNTENG) - #include "display_kunteng.h" -#endif - -#if (DISPLAY_TYPE == DISPLAY_TYPE_EBiCS) - #include "display_ebics.h" -#endif - - -#include -/* USER CODE END Includes */ - -/* USER CODE END Includes */ - -/* Private typedef -----------------------------------------------------------*/ -/* USER CODE BEGIN PTD */ - -/* USER CODE END PTD */ - -/* Private define ------------------------------------------------------------*/ -/* USER CODE BEGIN PD */ -/* USER CODE END PD */ - -/* Private macro -------------------------------------------------------------*/ -/* USER CODE BEGIN PM */ - -/* USER CODE END PM */ - -/* Private variables ---------------------------------------------------------*/ -ADC_HandleTypeDef hadc1; -ADC_HandleTypeDef hadc2; -DMA_HandleTypeDef hdma_adc1; - -TIM_HandleTypeDef htim1; -TIM_HandleTypeDef htim2; -TIM_HandleTypeDef htim3; -TIM_HandleTypeDef htim4; - -UART_HandleTypeDef huart1; -UART_HandleTypeDef huart3; - -DMA_HandleTypeDef hdma_usart1_tx; -DMA_HandleTypeDef hdma_usart1_rx; -DMA_HandleTypeDef hdma_usart3_tx; -DMA_HandleTypeDef hdma_usart3_rx; - -int c_squared; - -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -void SystemClock_Config(void); -static void MX_GPIO_Init(void); -static void MX_DMA_Init(void); -static void MX_USART1_UART_Init(void); -static void MX_TIM1_Init(void); -static void MX_ADC1_Init(void); -static void MX_ADC2_Init(void); -static void MX_TIM2_Init(void); -static void MX_TIM3_Init(void); -static void MX_USART3_UART_Init(void); -/* USER CODE BEGIN PFP */ - -/* USER CODE END PFP */ - -/* Private user code ---------------------------------------------------------*/ -/* USER CODE BEGIN 0 */ -q31_t raw_inj1; -q31_t raw_inj2; - - - -uint32_t ui32_tim1_counter=0; -uint32_t ui32_tim3_counter=0; -uint8_t ui8_hall_state=0; -uint8_t ui8_hall_state_old=0; -uint8_t ui8_hall_case=0; -uint16_t ui16_tim2_recent=0; -uint16_t ui16_timertics=5000; //timertics between two hall events for 60° interpolation -uint16_t ui16_reg_adc_value; -uint32_t ui32_reg_adc_value_filter; -uint16_t ui16_ph1_offset=0; -uint16_t ui16_ph2_offset=0; -uint16_t ui16_ph3_offset=0; - -volatile int16_t i16_ph1_current=0; -volatile int16_t i16_ph2_current=0; -volatile int16_t i16_ph2_current_filter=0; -int16_t i16_ph3_current=0; -uint16_t i=0; -uint16_t j=0; -uint16_t k=0; -uint8_t ui8_overflow_flag=0; -uint8_t ui8_slowloop_counter=0; -uint8_t ui8_adc_inj_flag=0; -uint8_t ui8_adc_regular_flag=0; -int8_t i8_direction= REVERSE; -int8_t i8_reverse_flag = 1; //for temporaribly reverse direction - -uint8_t ui8_adc_offset_done_flag=0; -uint8_t ui8_print_flag=0; -uint8_t ui8_UART_flag=0; -uint8_t ui8_Push_Assist_flag=0; -uint8_t ui8_UART_TxCplt_flag=1; -uint8_t ui8_PAS_flag=0; -uint8_t ui8_SPEED_flag=0; -uint32_t uint32_PAS_counter= PAS_TIMEOUT+1; -uint32_t uint32_PAS_HIGH_counter= 0; -uint32_t uint32_PAS_HIGH_accumulated= 32000; -uint32_t uint32_PAS_fraction= 100; -uint32_t uint32_SPEED_counter=32000; -uint32_t uint32_PAS=32000; - -uint8_t ui8_UART_Counter=0; -int8_t i8_recent_rotor_direction=1; -int8_t i16_hall_order=1; - -uint32_t uint32_torque_cumulated=0; -uint32_t uint32_PAS_cumulated=32000; -uint16_t uint16_mapped_throttle=0; -uint16_t uint16_mapped_PAS=0; -uint16_t uint16_half_rotation_counter=0; -uint16_t uint16_full_rotation_counter=0; -int16_t int16_current_target=0; - -q31_t q31_t_Battery_Current_accumulated=0; - -q31_t q31_rotorposition_absolute; -q31_t q31_rotorposition_hall; -q31_t q31_rotorposition_motor_specific = SPEC_ANGLE; -q31_t q31_u_d_temp=0; -q31_t q31_u_q_temp=0; -int16_t i16_sinus=0; -int16_t i16_cosinus=0; -char buffer[256]; -char char_dyn_adc_state=1; -char char_dyn_adc_state_old=1; -uint8_t assist_factor[10]={0, 51, 102, 153, 204, 255, 255, 255, 255, 255}; - -q31_t switchtime[3]; -volatile uint16_t adcData[8]; //Buffer for ADC1 Input -//static int8_t angle[256][4]; -//static int8_t angle_old; -//q31_t q31_startpoint_conversion = 2048; - -//Rotor angle scaled from degree to q31 for arm_math. -180°-->-2^31, 0°-->0, +180°-->+2^31 -const q31_t DEG_0 = 0; -const q31_t DEG_plus60 = 715827883; -const q31_t DEG_plus120= 1431655765; -const q31_t DEG_plus180= 2147483647; -const q31_t DEG_minus60= -715827883; -const q31_t DEG_minus120= -1431655765; - -const q31_t tics_lower_limit = WHEEL_CIRCUMFERENCE*5*3600/(6*GEAR_RATIO*SPEEDLIMIT*10); //tics=wheelcirc*timerfrequency/(no. of hallevents per rev*gear-ratio*speedlimit)*3600/1000000 -const q31_t tics_higher_limit = WHEEL_CIRCUMFERENCE*5*3600/(6*GEAR_RATIO*(SPEEDLIMIT+2)*10); -q31_t q31_tics_filtered=128000; -//variables for display communication - -#define iabs(x) (((x) >= 0)?(x):-(x)) - -#if (DISPLAY_TYPE & DISPLAY_TYPE_KINGMETER) -KINGMETER_t KM; -#endif - -//variables for display communication -#if (DISPLAY_TYPE == DISPLAY_TYPE_BAFANG) -BAFANG_t BF; -#endif - -#if (DISPLAY_TYPE & DISPLAY_TYPE_EBiCS) -uint8_t ui8_main_LEV_Page_counter=0; -uint8_t ui8_additional_LEV_Page_counter=0; -uint8_t ui8_LEV_Page_to_send=1; -#endif - - - -MotorState_t MS; -MotorParams_t MP; - - -int16_t battery_percent_fromcapacity = 50; //Calculation of used watthours not implemented yet -int16_t wheel_time = 1000; //duration of one wheel rotation for speed calculation -int16_t current_display; //pepared battery current for display - -int16_t power; - -static void dyn_adc_state(q31_t angle); -static void set_inj_channel(char state); -void get_standstill_position(); -int32_t map (int32_t x, int32_t in_min, int32_t in_max, int32_t out_min, int32_t out_max); - -#if 0 -#define JSQR_PHASE_A 0b00011000000000000000 //3 -#define JSQR_PHASE_B 0b00100000000000000000 //4 -#define JSQR_PHASE_C 0b00101000000000000000 //5 -#else -#define JSQR_PHASE_A 0b00011000000000000000 //3 -#define JSQR_PHASE_B 0b00100000000000000000 //4 -#define JSQR_PHASE_C 0b00101000000000000000 //5 -#endif - -#define ADC_VOLTAGE 0 -#define ADC_THROTTLE 1 -#define ADC_TEMP 2 -#define ADC_CHANA 3 -#define ADC_CHANB 4 -#define ADC_CHANC 5 - - -void autodetect(){ - SET_BIT(TIM1->BDTR, TIM_BDTR_MOE); - MS.hall_angle_detect_flag=0; //set uq to contstant value in FOC.c for open loop control - q31_rotorposition_absolute=11930465/2;//1<<31; - HAL_Delay(5); - for(i=0;i<1080;i++){ -// while(1){ - q31_rotorposition_absolute+=1*11930465; //drive motor in open loop with steps of 1° - HAL_Delay(1); - if(ui8_hall_state_old!=ui8_hall_state){ - printf_("hallstate: %d, hallcase %d \n", ui8_hall_state , ui8_hall_case); - - if(ui8_hall_case==13) - { - q31_rotorposition_motor_specific=q31_rotorposition_absolute; - } - if(ui8_hall_case==23) - { - q31_rotorposition_motor_specific=q31_rotorposition_absolute; - } - - ui8_hall_state_old=ui8_hall_state; - } - } - HAL_FLASH_Unlock(); -// EE_WriteVariable(EEPROM_POS_SPEC_ANGLE, q31_rotorposition_motor_specific>>16); - if(i8_recent_rotor_direction == 1){ -// EE_WriteVariable(EEPROM_POS_HALL_ORDER, 1); - i16_hall_order = 1; - } - else{ - // EE_WriteVariable(EEPROM_POS_HALL_ORDER, -1); - i16_hall_order = -1; - } - HAL_FLASH_Lock(); - - MS.hall_angle_detect_flag=1; -#if (DISPLAY_TYPE == DISPLAY_TYPE_DEBUG) - printf_("Motor specific angle: %d, direction %d \n ", q31_rotorposition_motor_specific, i16_hall_order); -#endif - - HAL_Delay(5); -} - -/* USER CODE END 0 */ - -/** - * @brief The application entry point. - * @retval int - */ -int main(void) -{ - /* USER CODE BEGIN 1 */ - - - - /* USER CODE END 1 */ - - /* MCU Configuration----------------------------------------------------------*/ - - /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ - HAL_Init(); - - /* USER CODE BEGIN Init */ - - /* USER CODE END Init */ - - /* Configure the system clock */ - SystemClock_Config(); - - /* USER CODE BEGIN SysInit */ - - /* USER CODE END SysInit */ - - /* Initialize all configured peripherals */ - MX_GPIO_Init(); - MX_DMA_Init(); - MX_USART1_UART_Init(); - MX_USART3_UART_Init(); - - //initialize MS struct. - MS.hall_angle_detect_flag=1; - MS.Speed=128000; - MS.assist_level=1; - MS.regen_level=7; - - MX_ADC1_Init(); - /* Run the ADC calibration */ - if (HAL_ADCEx_Calibration_Start(&hadc1) != HAL_OK) - { - /* Calibration Error */ - Error_Handler(); - } - MX_ADC2_Init(); - /* Run the ADC calibration */ - if (HAL_ADCEx_Calibration_Start(&hadc2) != HAL_OK) - { - /* Calibration Error */ - Error_Handler(); - } - - /* USER CODE BEGIN 2 */ - SET_BIT(ADC1->CR2, ADC_CR2_JEXTTRIG);//external trigger enable - __HAL_ADC_ENABLE_IT(&hadc1,ADC_IT_JEOC); - SET_BIT(ADC2->CR2, ADC_CR2_JEXTTRIG);//external trigger enable - __HAL_ADC_ENABLE_IT(&hadc2,ADC_IT_JEOC); - - - //HAL_ADC_Start_IT(&hadc1); - HAL_ADCEx_MultiModeStart_DMA(&hadc1, (uint32_t*)adcData, 6); - HAL_ADC_Start_IT(&hadc2); - MX_TIM1_Init(); //Hier die Reihenfolge getauscht! - MX_TIM2_Init(); - MX_TIM3_Init(); - - // Start Timer 1 - if(HAL_TIM_Base_Start_IT(&htim1) != HAL_OK) - { - /* Counter Enable Error */ - Error_Handler(); - } - - HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1); - HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_1); // turn on complementary channel - HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2); - HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_2); - HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_3); - HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_3); - - HAL_TIM_PWM_Start_IT(&htim1, TIM_CHANNEL_4); - - - - - TIM1->CCR4 = TRIGGER_DEFAULT; //ADC sampling just before timer overflow (just before middle of PWM-Cycle) -//PWM Mode 1: Interrupt at counting down. - - //TIM1->BDTR |= 1L<<15; - // TIM1->BDTR &= ~(1L<<15); //reset MOE (Main Output Enable) bit to disable PWM output - // Start Timer 2 - if(HAL_TIM_Base_Start_IT(&htim2) != HAL_OK) - { - /* Counter Enable Error */ - Error_Handler(); - } - - // Start Timer 3 - - if(HAL_TIM_Base_Start_IT(&htim3) != HAL_OK) - { - /* Counter Enable Error */ - Error_Handler(); - } - - -/* - // HAL_TIM_GenerateEvent(&htim1, TIM_EVENTSOURCE_CC4); - __HAL_LOCK(&htim1); - SET_BIT(TIM1->EGR, TIM_EGR_CC4G);//capture compare ch 4 event - SET_BIT(TIM1->EGR, TIM_EGR_TG);//Trigger generation - SET_BIT(TIM1->BDTR, TIM_AUTOMATICOUTPUT_ENABLE);//Trigger generation - - __HAL_UNLOCK(&htim1); - SET_BIT(ADC1->CR2, ADC_CR2_JEXTTRIG);//external trigger enable - -*/ - - //Init KingMeter Display - //Init KingMeter Display -#if (DISPLAY_TYPE & DISPLAY_TYPE_KINGMETER) - KingMeter_Init (&KM); -#endif - -#if (DISPLAY_TYPE == DISPLAY_TYPE_BAFANG) - Bafang_Init (&BF); -#endif - -#if (DISPLAY_TYPE == DISPLAY_TYPE_KUNTENG) - kunteng_init(); -#endif - -#if (DISPLAY_TYPE == DISPLAY_TYPE_EBiCS) - ebics_init(); -#endif - - - TIM1->CCR1 = 1023; //set initial PWM values - TIM1->CCR2 = 1023; - TIM1->CCR3 = 1023; - - CLEAR_BIT(TIM1->BDTR, TIM_BDTR_MOE);//Disable PWM - - for(i=0;i<16;i++){ - while(!ui8_adc_regular_flag){} - ui16_ph1_offset+=adcData[ADC_CHANA]; - ui16_ph2_offset+=adcData[ADC_CHANB]; - ui16_ph3_offset+=adcData[ADC_CHANC]; - ui8_adc_regular_flag=0; - - } - ui16_ph1_offset=ui16_ph1_offset>>4; - ui16_ph2_offset=ui16_ph2_offset>>4; - ui16_ph3_offset=ui16_ph3_offset>>4; - - printf_("phase current offsets: %d, %d, %d \n ", ui16_ph1_offset, ui16_ph2_offset, ui16_ph3_offset); - -//while(1){} - - ADC1->JSQR=JSQR_PHASE_A; //ADC1 injected reads phase A JL = 0b00, JSQ4 = 0b00100 (decimal 4 = channel 4) - ADC1->JOFR1 = ui16_ph1_offset; - - ui8_adc_offset_done_flag=1; - -#if 0 //(DISPLAY_TYPE == DISPLAY_TYPE_DEBUG) - - autodetect(); - - - -// while(1){} - -#else -// q31_rotorposition_motor_specific = SPEC_ANGLE; - //Motor specific angle: 1908874660, direction -1 - q31_rotorposition_motor_specific = 1175151010; - - i16_hall_order = 1; - - -#endif - - HAL_GPIO_EXTI_Callback(GPIO_PIN_4); //read in initial rotor position - - - switch (ui8_hall_state) - { - //6 cases for forward direction - case 4: - q31_rotorposition_hall = DEG_0 + q31_rotorposition_motor_specific; - break; - case 5: - q31_rotorposition_hall = DEG_plus60 + q31_rotorposition_motor_specific; - break; - case 1: - q31_rotorposition_hall = DEG_plus120 + q31_rotorposition_motor_specific; - break; - case 3: - q31_rotorposition_hall = DEG_plus180 + q31_rotorposition_motor_specific; - break; - case 2: - q31_rotorposition_hall = DEG_minus120 + q31_rotorposition_motor_specific; - break; - case 6: - q31_rotorposition_hall = DEG_minus60 + q31_rotorposition_motor_specific; - break; - - } - - q31_rotorposition_absolute = q31_rotorposition_hall; // set absolute position to corresponding hall pattern. - - - -#if (DISPLAY_TYPE == DISPLAY_TYPE_DEBUG) - printf_("Lishui FOC v0.9 \n "); -#endif - - HAL_Delay(5); - CLEAR_BIT(TIM1->BDTR, TIM_BDTR_MOE);//Disable PWM - - get_standstill_position(); - - - /* USER CODE END 2 */ - - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ - while (1) - { - - //PI-control processing - if(PI_flag){ - - - q31_u_q_temp = PI_control_i_q(MS.i_q, int16_current_target); - - q31_t_Battery_Current_accumulated -= q31_t_Battery_Current_accumulated>>8; - q31_t_Battery_Current_accumulated += ((MS.i_q*MS.u_abs)>>11)*(uint16_t)(CAL_I>>8); - - MS.Battery_Current = q31_t_Battery_Current_accumulated>>8*i8_direction*i8_reverse_flag; //Battery current in mA - - //Control id - q31_u_d_temp = -PI_control_i_d(MS.i_d, 0, iabs(q31_u_q_temp)); //control direct current to zero - - - if(q31_u_d_temp > iabs(q31_u_q_temp) >> 4) - q31_u_d_temp = iabs(q31_u_q_temp) >> 4; - - if(q31_u_d_temp < (-iabs(q31_u_q_temp)) >> 4) - q31_u_d_temp = (-iabs(q31_u_q_temp)) >> 4; - - //limit voltage in rotating frame, refer chapter 4.10.1 of UM1052 - MS.u_abs = (q31_t)hypot((double)q31_u_d_temp, (double)q31_u_q_temp); //absolute value of U in static frame - - - -#if 1 - if (MS.u_abs > _U_MAX){ - MS.u_q = (q31_u_q_temp*_U_MAX)/MS.u_abs; //division! - MS.u_d = (q31_u_d_temp*_U_MAX)/MS.u_abs; //division! - MS.u_abs = _U_MAX; - } - else -#endif - { - MS.u_q=q31_u_q_temp; - MS.u_d=q31_u_d_temp; - - } - PI_flag=0; - } - //display message processing - if(ui8_UART_flag){ -#if (DISPLAY_TYPE & DISPLAY_TYPE_KINGMETER) - kingmeter_update(); -#endif - - -#if (DISPLAY_TYPE == DISPLAY_TYPE_BAFANG) - bafang_update(); -#endif - -#if (DISPLAY_TYPE == DISPLAY_TYPE_KUNTENG) - ui8_UART_Counter++; - if(ui8_UART_Counter>5){ - check_message(&MS); - ui8_UART_Counter=0; - } -#endif - -#if (DISPLAY_TYPE & DISPLAY_TYPE_EBiCS) - process_ant_page(&MS, &MP); -#endif - - ui8_UART_flag=0; - } - - //SPEED signal processing - if(ui8_SPEED_flag){ - - if(uint32_SPEED_counter>200){ - MS.Speed = uint32_SPEED_counter; - //HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin); - uint32_SPEED_counter =0; - ui8_SPEED_flag=0; - - } - } - -#if 0 //(DISPLAY_TYPE == DISPLAY_TYPE_DEBUG) // && defined(FAST_LOOP_LOG)) - if(ui8_UART_TxCplt_flag){ - sprintf_(buffer, "%d, %d, %d, %d, %d, %d\r\n", e_log[k][0], e_log[k][1], e_log[k][2],e_log[k][3],e_log[k][4],e_log[k][5]); //>>24 - i=0; - while (buffer[i] != '\0') - {i++;} - ui8_UART_TxCplt_flag=0; - HAL_UART_Transmit_DMA(&huart3, (uint8_t *)&buffer, i); - k++; - if (k>299){ - k=0; - ui8_debug_state=0; - //Obs_flag=0; - } - } -#endif - - //throttle and PAS current target setting - -#if (DISPLAY_TYPE == DISPLAY_TYPE_BAFANG) - uint16_mapped_PAS = map(uint32_PAS, RAMP_END, PAS_TIMEOUT, (PH_CURRENT_MAX*(int32_t)(assist_factor[MS.assist_level]))>>8, 0); // level in range 0...5 -#endif - -#if (DISPLAY_TYPE == DISPLAY_TYPE_KUNTENG) - uint16_mapped_PAS = map(uint32_PAS, RAMP_END, PAS_TIMEOUT, (PH_CURRENT_MAX*(int32_t)(MS.assist_level))/5, 0); // level in range 0...5 -#endif - -#if (DISPLAY_TYPE == DISPLAY_TYPE_KINGMETER_618U) - uint16_mapped_PAS = map(uint32_PAS, RAMP_END, PAS_TIMEOUT, (PH_CURRENT_MAX*(int32_t)(MS.assist_level-1))>>2, 0); // level in range 1...5 -#endif - -#if (DISPLAY_TYPE == DISPLAY_TYPE_KINGMETER_901U) - uint16_mapped_PAS = map(uint32_PAS, RAMP_END, PAS_TIMEOUT, ((PH_CURRENT_MAX*(int32_t)(MS.assist_level)))>>8, 0); // level in range 0...255 -#endif - -#if (DISPLAY_TYPE == DISPLAY_TYPE_DEBUG) - //uint32_PAS= RAMP_END; - //uint16_mapped_PAS = map(uint32_PAS, RAMP_END, PAS_TIMEOUT, (PH_CURRENT_MAX*(int32_t)(assist_factor[7]))>>8, 0); // level in range 0...9 - if (uint32_PAS_counter < PAS_TIMEOUT) uint16_mapped_PAS = map(uint32_PAS, RAMP_END, PAS_TIMEOUT, PH_CURRENT_MAX, 0); // Full amps in debug mode - else uint16_mapped_PAS = 0; -#endif - -#ifdef TS_MODE //torque-sensor mode - - int16_current_target = (TS_COEF*(int16_t)(MS.assist_level)* (uint32_torque_cumulated>>5)/uint32_PAS)>>8; //>>5 aus Mittelung über eine Kurbelumdrehung, >>8 aus KM5S-Protokoll Assistlevel 0..255 - temp1=int16_current_target; - if(int16_current_target>PH_CURRENT_MAX) int16_current_target = PH_CURRENT_MAX; - temp2=int16_current_target; - if(uint32_PAS_counter > PAS_TIMEOUT) int16_current_target = 0; - temp3=int16_current_target; - //int16_current_target = 0; - -#else // torque-simulation mode with throttle override - - uint16_mapped_throttle = map(ui16_reg_adc_value, THROTTLE_OFFSET , THROTTLE_MAX, 0, PH_CURRENT_MAX); - -#ifdef DIRDET - if (uint32_PAS_counter< PAS_TIMEOUT){ - if ((uint32_PAS_fraction < FRAC_LOW ||uint32_PAS_fraction > FRAC_HIGH)){ - uint16_mapped_PAS= 0;//pedals are turning backwards, stop motor - } - } - else uint32_PAS_HIGH_accumulated=uint32_PAS_cumulated; -#endif //end direction detection - - if(uint16_mapped_PAS>uint16_mapped_throttle) //check for throttle override - - { - if (uint32_PAS_counter < PAS_TIMEOUT) int16_current_target= uint16_mapped_PAS; //set current target in torque-simulation-mode, if pedals are turning - else { - int16_current_target= 0;//pedals are not turning, stop motor - uint32_PAS_cumulated=32000; - uint32_PAS=32000; - } - } - else - int16_current_target = uint16_mapped_throttle;//throttle override: set recent throttle value as current target - - -#endif - - - - - int16_current_target=map(q31_tics_filtered>>3,tics_higher_limit,tics_lower_limit,0,int16_current_target); //ramp down current at speed limit - - if(ui8_Push_Assist_flag)int16_current_target=PUSHASSIST_CURRENT; - - if (int16_current_target>0&&uint16_mapped_throttle>0&&!READ_BIT(TIM1->BDTR, TIM_BDTR_MOE)){ - - TIM1->CCR1 = 1023; //set initial PWM values - TIM1->CCR2 = 1023; - TIM1->CCR3 = 1023; - uint16_half_rotation_counter=0; - uint16_full_rotation_counter=0; - __HAL_TIM_SET_COUNTER(&htim2,0); //reset tim2 counter - ui16_timertics=20000; //set interval between two hallevents to a large value - i8_recent_rotor_direction=i8_direction*i8_reverse_flag; - get_standstill_position(); - - printf_("startup %d\n", q31_rotorposition_absolute); - - SET_BIT(TIM1->BDTR, TIM_BDTR_MOE); //enable PWM if power is wanted - }else{ -#ifdef KILL_ON_ZERO - if(uint16_mapped_throttle==0&&READ_BIT(TIM1->BDTR, TIM_BDTR_MOE)){ - CLEAR_BIT(TIM1->BDTR, TIM_BDTR_MOE); //Disable PWM if motor is not turning - get_standstill_position(); - printf_("shutdown %d\n", q31_rotorposition_absolute); - } -#endif - } - - //slow loop procedere @16Hz, for LEV standard every 4th loop run, send page, - if(ui32_tim3_counter>500){ - MS.Temperature = adcData[ADC_TEMP]*41>>8; //0.16 is calibration constant: Analog_in[10mV/°C]/ADC value. Depending on the sensor LM35) - MS.Voltage=adcData[ADC_VOLTAGE]; - if(uint32_SPEED_counter>127999)MS.Speed =128000; - - if((uint16_full_rotation_counter>7999||uint16_half_rotation_counter>7999)&&READ_BIT(TIM1->BDTR, TIM_BDTR_MOE)){ - CLEAR_BIT(TIM1->BDTR, TIM_BDTR_MOE); //Disable PWM if motor is not turning - - get_standstill_position(); - printf_("shutdown %d\n", q31_rotorposition_absolute); - } - -#if (DISPLAY_TYPE == DISPLAY_TYPE_DEBUG && !defined(FAST_LOOP_LOG)) - //print values for debugging - - - sprintf_(buffer, "%d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, T: %d, Q: %d, D: %d, %d, %d,S: %d, %d, V: %d\r\n", int16_current_target, (int16_t) raw_inj1,(int16_t) raw_inj2, (int32_t) MS.char_dyn_adc_state, q31_rotorposition_hall, q31_rotorposition_absolute, (int16_t) (ui16_reg_adc_value-THROTTLE_OFFSET),adcData[ADC_CHANA],adcData[ADC_CHANB],adcData[ADC_CHANC],i16_ph1_current,i16_ph2_current, uint16_mapped_throttle, MS.i_q, MS.i_d, MS.u_q, MS.u_d,q31_tics_filtered>>3,tics_higher_limit, adcData[ADC_VOLTAGE]);//((q31_i_q_fil*q31_u_abs)>>14)* - // sprintf_(buffer, "%d, %d, %d, %d, %d, %d\r\n",(uint16_t)adcData[0],(uint16_t)adcData[1],(uint16_t)adcData[2],(uint16_t)adcData[3],(uint16_t)(adcData[4]),(uint16_t)(adcData[5])) ; - - i=0; - while (buffer[i] != '\0') - {i++;} - HAL_UART_Transmit_DMA(&huart3, (uint8_t *)&buffer, i); - - - ui8_print_flag=0; - -#endif - -#if (DISPLAY_TYPE == DISPLAY_TYPE_EBiCS) - ui8_slowloop_counter++; - if(ui8_slowloop_counter>3){ - ui8_slowloop_counter = 0; - - switch (ui8_main_LEV_Page_counter){ - case 1: { - ui8_LEV_Page_to_send = 1; - } - break; - case 2: { - ui8_LEV_Page_to_send = 2; - } - break; - case 3: { - ui8_LEV_Page_to_send = 3; - } - break; - case 4: { - //to do, define other pages - } - break; - }//end switch - - send_ant_page(ui8_LEV_Page_to_send, &MS, &MP); - - ui8_main_LEV_Page_counter++; - if(ui8_main_LEV_Page_counter>4)ui8_main_LEV_Page_counter=1; - } - -#endif - ui32_tim3_counter=0; - }// end of slow loop - - /* USER CODE END WHILE */ - - /* USER CODE BEGIN 3 */ - - } - /* USER CODE END 3 */ - -} - -/** - * @brief System Clock Configuration - * @retval None - */ -void SystemClock_Config(void) -{ - RCC_OscInitTypeDef RCC_OscInitStruct; - RCC_ClkInitTypeDef RCC_ClkInitStruct; - RCC_PeriphCLKInitTypeDef PeriphClkInit; - - /**Initializes the CPU, AHB and APB busses clocks - */ - RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.HSICalibrationValue = 16; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI_DIV2; - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL16; - if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - /**Initializes the CPU, AHB and APB busses clocks - */ - RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK - |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; - RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; - RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; - RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; - RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; - - if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC; - PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - /**Configure the Systick interrupt time - */ - HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000); - - /**Configure the Systick - */ - HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK); - - /* SysTick_IRQn interrupt configuration */ - HAL_NVIC_SetPriority(SysTick_IRQn, 2, 0); -} - -/** - * @brief ADC1 Initialization Function - * @param None - * @retval None - */ -static void MX_ADC1_Init(void) -{ - - ADC_MultiModeTypeDef multimode; - ADC_InjectionConfTypeDef sConfigInjected; - ADC_ChannelConfTypeDef sConfig; - - /**Common config - */ - hadc1.Instance = ADC1; - hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE; //Scan muß für getriggerte Wandlung gesetzt sein - hadc1.Init.ContinuousConvMode = DISABLE; - hadc1.Init.DiscontinuousConvMode = DISABLE; - hadc1.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T3_TRGO;// Trigger regular ADC with timer 3 ADC_EXTERNALTRIGCONV_T1_CC1;// // ADC_SOFTWARE_START; // - hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; - hadc1.Init.NbrOfConversion = 6; - hadc1.Init.NbrOfDiscConversion = 0; - - - if (HAL_ADC_Init(&hadc1) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - /**Configure the ADC multi-mode - */ - multimode.Mode = ADC_DUALMODE_REGSIMULT_INJECSIMULT; - if (HAL_ADCEx_MultiModeConfigChannel(&hadc1, &multimode) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - /**Configure Injected Channel - */ - sConfigInjected.InjectedChannel = ADC_CHANNEL_3; - sConfigInjected.InjectedRank = ADC_INJECTED_RANK_1; - sConfigInjected.InjectedNbrOfConversion = 1; - sConfigInjected.InjectedSamplingTime = ADC_SAMPLETIME_1CYCLE_5; - sConfigInjected.ExternalTrigInjecConv = ADC_EXTERNALTRIGINJECCONV_T1_CC4; // Hier bin ich nicht sicher ob Trigger out oder direkt CC4 - sConfigInjected.AutoInjectedConv = DISABLE; //muß aus sein - sConfigInjected.InjectedDiscontinuousConvMode = DISABLE; - sConfigInjected.InjectedOffset = 0;//ui16_ph1_offset;//1900; - HAL_ADC_Stop(&hadc1); //ADC muß gestoppt sein, damit Triggerquelle gesetzt werden kann. - if (HAL_ADCEx_InjectedConfigChannel(&hadc1, &sConfigInjected) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - /**Configure Regular Channel - */ - sConfig.Channel = ADC_CHANNEL_2; - sConfig.Rank = ADC_REGULAR_RANK_1; - sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5;//ADC_SAMPLETIME_239CYCLES_5; - if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - -/**Configure Regular Channel -*/ -sConfig.Channel = ADC_CHANNEL_1; -sConfig.Rank = ADC_REGULAR_RANK_2; -sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5;//ADC_SAMPLETIME_239CYCLES_5; -if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) -{ -_Error_Handler(__FILE__, __LINE__); -} -/**Configure Regular Channel -*/ -sConfig.Channel = ADC_CHANNEL_0; -sConfig.Rank = ADC_REGULAR_RANK_3; -sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5;//ADC_SAMPLETIME_239CYCLES_5; -if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) -{ -_Error_Handler(__FILE__, __LINE__); -} -/**Configure Regular Channel -*/ -sConfig.Channel = JSQR_PHASE_A>>15; -sConfig.Rank = ADC_REGULAR_RANK_4; -sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5;//ADC_SAMPLETIME_239CYCLES_5; -if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) -{ -_Error_Handler(__FILE__, __LINE__); -} -/**Configure Regular Channel -*/ -sConfig.Channel = JSQR_PHASE_B>>15; -sConfig.Rank = ADC_REGULAR_RANK_5; -sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5;//ADC_SAMPLETIME_239CYCLES_5; -if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) -{ -_Error_Handler(__FILE__, __LINE__); -} - -sConfig.Channel = JSQR_PHASE_C>>15; -sConfig.Rank = ADC_REGULAR_RANK_6; -sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5;//ADC_SAMPLETIME_239CYCLES_5; -if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) -{ -_Error_Handler(__FILE__, __LINE__); -} -} - -/** - * @brief ADC2 Initialization Function - * @param None - * @retval None - */ -static void MX_ADC2_Init(void) -{ - - ADC_InjectionConfTypeDef sConfigInjected; - - /**Common config - */ - hadc2.Instance = ADC2; - hadc2.Init.ScanConvMode = ADC_SCAN_ENABLE; //hier auch Scan enable?! - hadc2.Init.ContinuousConvMode = DISABLE; - hadc2.Init.DiscontinuousConvMode = DISABLE; - hadc2.Init.ExternalTrigConv = ADC_SOFTWARE_START; - hadc2.Init.DataAlign = ADC_DATAALIGN_RIGHT; - hadc2.Init.NbrOfConversion = 1; - if (HAL_ADC_Init(&hadc2) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - /**Configure Injected Channel - */ - sConfigInjected.InjectedChannel = ADC_CHANNEL_4; - sConfigInjected.InjectedRank = ADC_INJECTED_RANK_1; - sConfigInjected.InjectedNbrOfConversion = 1; - sConfigInjected.InjectedSamplingTime = ADC_SAMPLETIME_1CYCLE_5; - sConfigInjected.ExternalTrigInjecConv = ADC_INJECTED_SOFTWARE_START; - sConfigInjected.AutoInjectedConv = DISABLE; - sConfigInjected.InjectedDiscontinuousConvMode = DISABLE; - sConfigInjected.InjectedOffset = 0;//ui16_ph2_offset;// 1860; - if (HAL_ADCEx_InjectedConfigChannel(&hadc2, &sConfigInjected) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - -} - -/** - * @brief TIM1 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM1_Init(void) -{ - - TIM_ClockConfigTypeDef sClockSourceConfig; - TIM_MasterConfigTypeDef sMasterConfig; - TIM_OC_InitTypeDef sConfigOC; - TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig; - - htim1.Instance = TIM1; - htim1.Init.Prescaler = 0; - htim1.Init.CounterMode = TIM_COUNTERMODE_CENTERALIGNED1; - htim1.Init.Period = _T; - htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim1.Init.RepetitionCounter = 0; - htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim1) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - if (HAL_TIM_PWM_Init(&htim1) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - if (HAL_TIM_OC_Init(&htim1) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - sMasterConfig.MasterOutputTrigger = TIM_TRGO_OC4REF; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 1; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; //TODO: depends on gate driver! - sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; - sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_SET; - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - sConfigOC.OCMode = TIM_OCMODE_PWM2; - sConfigOC.Pulse = _T - 1; - if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_4) != HAL_OK) - { - Error_Handler(); - } - - sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE; - sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE; - sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF; - sBreakDeadTimeConfig.DeadTime = 32; - sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; - sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH; - sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; - if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - HAL_TIM_MspPostInit(&htim1); -} - -/** - * @brief TIM2 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM2_Init(void) -{ - - TIM_ClockConfigTypeDef sClockSourceConfig; - TIM_MasterConfigTypeDef sMasterConfig; - - htim2.Instance = TIM2; - htim2.Init.Prescaler = 128; - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - htim2.Init.Period = 64000; - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim2) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - -} - -/* TIM3 init function 8kHz interrupt frequency for regular adc triggering */ -static void MX_TIM3_Init(void) -{ - - TIM_ClockConfigTypeDef sClockSourceConfig; - TIM_MasterConfigTypeDef sMasterConfig; - - htim3.Instance = TIM3; - htim3.Init.Prescaler = 0; - htim3.Init.CounterMode = TIM_COUNTERMODE_UP; - htim3.Init.Period = 7813; - htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - if (HAL_TIM_Base_Init(&htim3) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - sMasterConfig.MasterOutputTrigger = TIM_TRGO_OC1; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } - - HAL_TIM_MspPostInit(&htim3); - -} - - -/** - * @brief USART1 Initialization Function - * @param None - * @retval None - */ -static void MX_USART1_UART_Init(void) -{ - - /* USER CODE BEGIN USART1_Init 0 */ - - /* USER CODE END USART1_Init 0 */ - - /* USER CODE BEGIN USART1_Init 1 */ - - /* USER CODE END USART1_Init 1 */ - huart1.Instance = USART1; - huart1.Init.BaudRate = 115200; - huart1.Init.WordLength = UART_WORDLENGTH_8B; - huart1.Init.StopBits = UART_STOPBITS_1; - huart1.Init.Parity = UART_PARITY_NONE; - huart1.Init.Mode = UART_MODE_TX_RX; - huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; - huart1.Init.OverSampling = UART_OVERSAMPLING_16; - if (HAL_HalfDuplex_Init(&huart1) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN USART1_Init 2 */ - - /* USER CODE END USART1_Init 2 */ - -} - -/** - * @brief USART3 Initialization Function - * @param None - * @retval None - */ -static void MX_USART3_UART_Init(void) -{ - - huart3.Instance = USART3; - -#if ((DISPLAY_TYPE & DISPLAY_TYPE_KINGMETER) ||DISPLAY_TYPE==DISPLAY_TYPE_KUNTENG||DISPLAY_TYPE==DISPLAY_TYPE_EBiCS) - huart3.Init.BaudRate = 9600; -#elif (DISPLAY_TYPE == DISPLAY_TYPE_BAFANG) - huart3.Init.BaudRate = 1200; -#else - huart3.Init.BaudRate = 56000; -#endif - - - huart3.Init.WordLength = UART_WORDLENGTH_8B; - huart3.Init.StopBits = UART_STOPBITS_1; - huart3.Init.Parity = UART_PARITY_NONE; - huart3.Init.Mode = UART_MODE_TX_RX; - huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE; - huart3.Init.OverSampling = UART_OVERSAMPLING_16; - if (HAL_UART_Init(&huart3) != HAL_OK) - { - _Error_Handler(__FILE__, __LINE__); - } -} - -/** - * Enable DMA controller clock - */ -static void MX_DMA_Init(void) -{ - - /* DMA controller clock enable */ - __HAL_RCC_DMA1_CLK_ENABLE(); - - - - /* DMA interrupt init */ - /* DMA1_Channel1_IRQn interrupt configuration */ - HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 2, 0); - HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn); - /* DMA1_Channel4_IRQn interrupt configuration */ - HAL_NVIC_SetPriority(DMA1_Channel2_IRQn, 2, 0); - HAL_NVIC_EnableIRQ(DMA1_Channel2_IRQn); - /* DMA1_Channel5_IRQn interrupt configuration */ - HAL_NVIC_SetPriority(DMA1_Channel3_IRQn, 2, 0); - HAL_NVIC_EnableIRQ(DMA1_Channel3_IRQn); - /* DMA1_Channel4_IRQn interrupt configuration */ - HAL_NVIC_SetPriority(DMA1_Channel4_IRQn, 2, 0); - HAL_NVIC_EnableIRQ(DMA1_Channel4_IRQn); - /* DMA1_Channel5_IRQn interrupt configuration */ - HAL_NVIC_SetPriority(DMA1_Channel5_IRQn, 2, 0); - HAL_NVIC_EnableIRQ(DMA1_Channel5_IRQn); -} - -/** - * @brief GPIO Initialization Function - * @param None - * @retval None - */ -static void MX_GPIO_Init(void) -{ - GPIO_InitTypeDef GPIO_InitStruct = {0}; - - /* GPIO Ports Clock Enable */ - __HAL_RCC_GPIOD_CLK_ENABLE(); - __HAL_RCC_GPIOA_CLK_ENABLE(); - __HAL_RCC_GPIOB_CLK_ENABLE(); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET); - - /*Configure GPIO pin : LED_Pin */ - GPIO_InitStruct.Pin = LED_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - HAL_GPIO_Init(LED_GPIO_Port, &GPIO_InitStruct); - - - - HAL_GPIO_WritePin(HALL_1_GPIO_Port, HALL_1_Pin, GPIO_PIN_RESET); - - - /*Configure GPIO pins : HALL_1_Pin HALL_2_Pin */ - GPIO_InitStruct.Pin = HALL_1_Pin|HALL_2_Pin|HALL_3_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING; - GPIO_InitStruct.Pull = GPIO_PULLUP; - HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - -#if 0 - GPIO_InitStruct.Pin = HALL_1_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - HAL_GPIO_Init(HALL_1_GPIO_Port, &GPIO_InitStruct); - - while(1){ - HAL_GPIO_WritePin(HALL_1_GPIO_Port, HALL_1_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(HALL_1_GPIO_Port, HALL_1_Pin, GPIO_PIN_SET); - } -#endif - - /*Configure peripheral I/O remapping */ - __HAL_AFIO_REMAP_PD01_ENABLE(); - - /* EXTI interrupt init*/ - HAL_NVIC_SetPriority(EXTI4_IRQn, 0, 0); - HAL_NVIC_EnableIRQ(EXTI4_IRQn); - - HAL_NVIC_SetPriority(EXTI9_5_IRQn, 0, 0); - HAL_NVIC_EnableIRQ(EXTI9_5_IRQn); - - HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0); - HAL_NVIC_EnableIRQ(EXTI0_IRQn); - -} - - -/* USER CODE BEGIN 4 */ - - -void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) -{ - if (htim == &htim3) { - if(ui32_tim3_counter<32000)ui32_tim3_counter++; - if (uint32_SPEED_counter<128000){ - uint32_SPEED_counter++; - } - if(uint16_full_rotation_counter<8000)uint16_full_rotation_counter++; //full rotation counter for motor standstill detection - if(uint16_half_rotation_counter<8000)uint16_half_rotation_counter++; //half rotation counter for motor standstill detectio - } -} - - - -// regular ADC callback -void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) -{ - ui32_reg_adc_value_filter -= ui32_reg_adc_value_filter>>4; - ui32_reg_adc_value_filter += adcData[ADC_THROTTLE]; //HAL_ADC_GetValue(hadc); - ui16_reg_adc_value = ui32_reg_adc_value_filter>>4; - - ui8_adc_regular_flag=1; -} - -//injected ADC - -void HAL_ADCEx_InjectedConvCpltCallback(ADC_HandleTypeDef* hadc) -{ - //for oszi-check of used time in FOC procedere - //HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET); - ui32_tim1_counter++; - - /* else { - HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin); - uint32_SPEED_counter=0; - }*/ - - if(!ui8_adc_offset_done_flag) - { - i16_ph1_current = HAL_ADCEx_InjectedGetValue(&hadc1, ADC_INJECTED_RANK_1); - i16_ph2_current = HAL_ADCEx_InjectedGetValue(&hadc2, ADC_INJECTED_RANK_1); - - ui8_adc_inj_flag=1; - } - else{ - -#ifdef DISABLE_DYNAMIC_ADC - - i16_ph1_current = HAL_ADCEx_InjectedGetValue(&hadc1, ADC_INJECTED_RANK_1); - i16_ph2_current = HAL_ADCEx_InjectedGetValue(&hadc2, ADC_INJECTED_RANK_1); - - -#else - switch (MS.char_dyn_adc_state) //read in according to state - { - case 1: //Phase C at high dutycycles, read from A+B directly - { - raw_inj1=(q31_t)HAL_ADCEx_InjectedGetValue(&hadc1, ADC_INJECTED_RANK_1); - i16_ph1_current = raw_inj1 ; - - raw_inj2=(q31_t)HAL_ADCEx_InjectedGetValue(&hadc2, ADC_INJECTED_RANK_1); - i16_ph2_current = raw_inj2; - } - break; - case 2: //Phase A at high dutycycles, read from B+C (A = -B -C) - { - - raw_inj2=(q31_t)HAL_ADCEx_InjectedGetValue(&hadc2, ADC_INJECTED_RANK_1); - i16_ph2_current = raw_inj2; - - raw_inj1=(q31_t)HAL_ADCEx_InjectedGetValue(&hadc1, ADC_INJECTED_RANK_1); - i16_ph1_current = -i16_ph2_current-raw_inj1; - - } - break; - case 3: //Phase B at high dutycycles, read from A+C (B=-A-C) - { - raw_inj1=(q31_t)HAL_ADCEx_InjectedGetValue(&hadc1, ADC_INJECTED_RANK_1); - i16_ph1_current = raw_inj1 ; - raw_inj2=(q31_t)HAL_ADCEx_InjectedGetValue(&hadc2, ADC_INJECTED_RANK_1); - i16_ph2_current = -i16_ph1_current-raw_inj2; - } - break; - - case 0: //timeslot too small for ADC - { - //do nothing - } - break; - - - - - } // end case -#endif - - - - - //extrapolate recent rotor position - ui16_tim2_recent = __HAL_TIM_GET_COUNTER(&htim2); // read in timertics since last event - if(MS.hall_angle_detect_flag){ - if (ui16_tim2_recent < ui16_timertics && !ui8_overflow_flag){ //prevent angle running away at standstill - // float with division necessary! - //normal forward function - q31_rotorposition_absolute = q31_rotorposition_hall*i16_hall_order + (q31_t)(i16_hall_order * i8_recent_rotor_direction * (715827883.0*((float)ui16_tim2_recent/(float)ui16_timertics))); //interpolate angle between two hallevents by scaling timer2 tics - - } - else - {ui8_overflow_flag=1; - - } - }//end if hall angle detect - -#ifndef DISABLE_DYNAMIC_ADC - - //get the Phase with highest duty cycle for dynamic phase current reading - dyn_adc_state(q31_rotorposition_absolute); - //set the according injected channels to read current at Low-Side active time - - if (MS.char_dyn_adc_state!=char_dyn_adc_state_old){ - set_inj_channel(MS.char_dyn_adc_state); - char_dyn_adc_state_old = MS.char_dyn_adc_state; - } -#endif - - //int16_current_target=0; - // call FOC procedure if PWM is enabled - - if (READ_BIT(TIM1->BDTR, TIM_BDTR_MOE)){ - FOC_calculation(i16_ph1_current, i16_ph2_current, q31_rotorposition_absolute, (((int16_t)i8_direction*i8_reverse_flag)*int16_current_target), uint16_mapped_throttle, &MS); - } - //temp5=__HAL_TIM_GET_COUNTER(&htim1); - //set PWM - - TIM1->CCR1 = (uint16_t) switchtime[0]; - TIM1->CCR2 = (uint16_t) switchtime[1]; - TIM1->CCR3 = (uint16_t) switchtime[2]; - - //HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET); - - } // end else - -} - -void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) -{ - //Hall sensor event processing - if(GPIO_Pin == GPIO_PIN_4||GPIO_Pin == GPIO_PIN_5||GPIO_Pin == GPIO_PIN_0) //check for right interrupt source - { - ui8_hall_state = ((GPIOB->IDR & 1) << 2) | ((GPIOB->IDR >> 4) & 0b11); //Mask input register with Hall 1 - 3 bits - - if(ui8_hall_state == ui8_hall_state_old) - return; - - ui8_hall_case=ui8_hall_state_old*10+ui8_hall_state; - if(MS.hall_angle_detect_flag){ //only process, if autodetect procedere is fininshed - ui8_hall_state_old=ui8_hall_state; - } - - ui16_tim2_recent = __HAL_TIM_GET_COUNTER(&htim2); // read in timertics since last hall event - - - if(ui16_tim2_recent>100){//debounce - ui16_timertics = ui16_tim2_recent; //save timertics since last hall event - q31_tics_filtered-=q31_tics_filtered>>3; - q31_tics_filtered+=ui16_timertics; - __HAL_TIM_SET_COUNTER(&htim2,0); //reset tim2 counter - ui8_overflow_flag=0; - - } - - - - switch (ui8_hall_case) //12 cases for each transition from one stage to the next. 6x forward, 6x reverse - { - //6 cases for forward direction - case 64: - q31_rotorposition_hall = DEG_0 + q31_rotorposition_motor_specific; - i8_recent_rotor_direction=1; - uint16_full_rotation_counter=0; - break; - case 45: - q31_rotorposition_hall = DEG_plus60 + q31_rotorposition_motor_specific; - i8_recent_rotor_direction=1; - break; - case 51: - q31_rotorposition_hall = DEG_plus120 + q31_rotorposition_motor_specific; - i8_recent_rotor_direction=1; - break; - case 13: - q31_rotorposition_hall = DEG_plus180 + q31_rotorposition_motor_specific; - i8_recent_rotor_direction=1; - uint16_half_rotation_counter=0; - break; - case 32: - q31_rotorposition_hall = DEG_minus120 + q31_rotorposition_motor_specific; - i8_recent_rotor_direction=1; - break; - case 26: - q31_rotorposition_hall = DEG_minus60 + q31_rotorposition_motor_specific; - i8_recent_rotor_direction=1; - break; - - //6 cases for reverse direction - case 46: - q31_rotorposition_hall = DEG_minus60 + q31_rotorposition_motor_specific; - i8_recent_rotor_direction=-1; - break; - case 62: - q31_rotorposition_hall = DEG_minus120 + q31_rotorposition_motor_specific; - i8_recent_rotor_direction=-1; - break; - case 23: - q31_rotorposition_hall = DEG_plus180 + q31_rotorposition_motor_specific; - i8_recent_rotor_direction=-1; - uint16_half_rotation_counter=0; - break; - case 31: - q31_rotorposition_hall = DEG_plus120 + q31_rotorposition_motor_specific; - i8_recent_rotor_direction=-1; - break; - case 15: - q31_rotorposition_hall = DEG_plus60 + q31_rotorposition_motor_specific; - i8_recent_rotor_direction=-1; - break; - case 54: - q31_rotorposition_hall = DEG_0 + q31_rotorposition_motor_specific; - i8_recent_rotor_direction=-1; - uint16_full_rotation_counter=0; - break; - - } // end case - - - } //end if - - -#if 0 - //Speed processing - if(GPIO_Pin == Speed_EXTI5_Pin) - { - - - ui8_SPEED_flag = 1; //with debounce - - } -#endif -} - -void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle) -{ - ui8_UART_flag=1; - -} - -void HAL_UART_TxCpltCallback(UART_HandleTypeDef *UartHandle) -{ - ui8_UART_TxCplt_flag=1; -} - - -#if (DISPLAY_TYPE & DISPLAY_TYPE_KINGMETER) -void kingmeter_update(void) -{ - /* Prepare Tx parameters */ - - if(battery_percent_fromcapacity > 10) - { - KM.Tx.Battery = KM_BATTERY_NORMAL; - } - else - { - KM.Tx.Battery = KM_BATTERY_LOW; - } - - if(__HAL_TIM_GET_COUNTER(&htim2) < 12000) - { - // Adapt wheeltime to match displayed speedo value according config.h setting - KM.Tx.Wheeltime_ms = ((MS.Speed>>3)*PULSES_PER_REVOLUTION); //>>3 because of 8 kHz counter frequency, so 8 tics per ms - } - else - { - KM.Tx.Wheeltime_ms = 64000; - } - - - //KM.Tx.Wheeltime_ms = 25; - - KM.Tx.Error = KM_ERROR_NONE; - - KM.Tx.Current_x10 = (uint16_t) (MS.Battery_Current/100); //MS.Battery_Current is in mA - - - /* Receive Rx parameters/settings and send Tx parameters */ - KingMeter_Service(&KM); - - - /* Apply Rx parameters */ - - MS.assist_level = KM.Rx.AssistLevel; - - if(KM.Rx.Headlight == KM_HEADLIGHT_OFF) - { - HAL_GPIO_WritePin(LIGHT_GPIO_Port, LIGHT_Pin, GPIO_PIN_RESET); - HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET); - } - else // KM_HEADLIGHT_ON, KM_HEADLIGHT_LOW, KM_HEADLIGHT_HIGH - { - HAL_GPIO_WritePin(LIGHT_GPIO_Port, LIGHT_Pin, GPIO_PIN_SET); - HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET); - } - - - if(KM.Rx.PushAssist == KM_PUSHASSIST_ON) - { - ui8_Push_Assist_flag=1; - } - else - { - ui8_Push_Assist_flag=0; - } - - - -} - -#endif - -#if (DISPLAY_TYPE == DISPLAY_TYPE_BAFANG) -void bafang_update(void) -{ - /* Prepare Tx parameters */ - - if(adcData[ADC_VOLTAGE]*CAL_BAT_V>BATTERY_LEVEL_5)battery_percent_fromcapacity=75; - else if(adcData[ADC_VOLTAGE]*CAL_BAT_V>BATTERY_LEVEL_4)battery_percent_fromcapacity=50; - else if(adcData[ADC_VOLTAGE]*CAL_BAT_V>BATTERY_LEVEL_3)battery_percent_fromcapacity=30; - else if(adcData[ADC_VOLTAGE]*CAL_BAT_V>BATTERY_LEVEL_2)battery_percent_fromcapacity=10; - else if(adcData[ADC_VOLTAGE]*CAL_BAT_V>BATTERY_LEVEL_1)battery_percent_fromcapacity=5; - else battery_percent_fromcapacity=0; - - - BF.Tx.Battery = battery_percent_fromcapacity; - - - if(__HAL_TIM_GET_COUNTER(&htim2) < 12000) - { - // Adapt wheeltime to match displayed speedo value according config.h setting - BF.Tx.Wheeltime_ms = WHEEL_CIRCUMFERENCE*216/(MS.Speed*PULSES_PER_REVOLUTION); // Geschwindigkeit ist Weg pro Zeit Radumfang durch Dauer einer Radumdrehung --> Umfang * 8000*3600/(n*1000000) * Skalierung Bafang Display 200/26,6 - - } - else - { - BF.Tx.Wheeltime_ms = 0; //64000; - } - - - BF.Tx.Power = MS.i_q*MS.Voltage; - - - /* Receive Rx parameters/settings and send Tx parameters */ - Bafang_Service(&BF,1); - - - - /* Apply Rx parameters */ - -//No headlight supported on my controller hardware. - if(BF.Rx.Headlight) - { - // digitalWrite(lights_pin, 0); - } - else - { - // digitalWrite(lights_pin, 1); - } - - - if(BF.Rx.PushAssist) ui8_Push_Assist_flag=1; - else ui8_Push_Assist_flag=0; - - MS.assist_level=BF.Rx.AssistLevel; -} - -#endif - -int32_t map (int32_t x, int32_t in_min, int32_t in_max, int32_t out_min, int32_t out_max) -{ - // if input is smaller/bigger than expected return the min/max out ranges value - if (x < in_min) - return out_min; - else if (x > in_max) - return out_max; - - // map the input to the output range. - // round up if mapping bigger ranges to smaller ranges - else if ((in_max - in_min) > (out_max - out_min)) - return (x - in_min) * (out_max - out_min + 1) / (in_max - in_min + 1) + out_min; - // round down if mapping smaller ranges to bigger ranges - else - return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; -} - - -//assuming, a proper AD conversion takes 350 timer tics, to be confirmed. DT+TR+TS deadtime + noise subsiding + sample time -void dyn_adc_state(q31_t angle){ - if (switchtime[2]>switchtime[0] && switchtime[2]>switchtime[1]){ - MS.char_dyn_adc_state = 1; // -90° .. +30°: Phase C at high dutycycles - if(switchtime[2]>1500)TIM1->CCR4 = switchtime[2]-TRIGGER_OFFSET_ADC; - else TIM1->CCR4 = TRIGGER_DEFAULT; - } - - if (switchtime[0]>switchtime[1] && switchtime[0]>switchtime[2]) { - MS.char_dyn_adc_state = 2; // +30° .. 150° Phase A at high dutycycles - if(switchtime[0]>1500)TIM1->CCR4 = switchtime[0]-TRIGGER_OFFSET_ADC; - else TIM1->CCR4 = TRIGGER_DEFAULT; - } - - if (switchtime[1]>switchtime[0] && switchtime[1]>switchtime[2]){ - MS.char_dyn_adc_state = 3; // +150 .. -90° Phase B at high dutycycles - if(switchtime[1]>1500)TIM1->CCR4 = switchtime[1]-TRIGGER_OFFSET_ADC; - else TIM1->CCR4 = TRIGGER_DEFAULT; - } -} - -static void set_inj_channel(char state){ - switch (state) - { - case 1: //Phase C at high dutycycles, read current from phase A + B - { - ADC1->JSQR=JSQR_PHASE_A; //ADC1 injected reads phase A JL = 0b00, JSQ4 = 0b00100 (decimal 4 = channel 4) - ADC1->JOFR1 = ui16_ph1_offset; - ADC2->JSQR=JSQR_PHASE_B; //ADC2 injected reads phase B, JSQ4 = 0b00101, decimal 5 - ADC2->JOFR1 = ui16_ph2_offset; - - - } - break; - case 2: //Phase A at high dutycycles, read current from phase C + B - { - ADC1->JSQR=JSQR_PHASE_C; //ADC1 injected reads phase C, JSQ4 = 0b00110, decimal 6 - ADC1->JOFR1 = ui16_ph3_offset; - ADC2->JSQR=JSQR_PHASE_B; //ADC2 injected reads phase B, JSQ4 = 0b00101, decimal 5 - ADC2->JOFR1 = ui16_ph2_offset; - - - } - break; - - case 3: //Phase B at high dutycycles, read current from phase A + C - { - ADC1->JSQR=JSQR_PHASE_A; //ADC1 injected reads phase A JL = 0b00, JSQ4 = 0b00100 (decimal 4 = channel 4) - ADC1->JOFR1 = ui16_ph1_offset; - ADC2->JSQR=JSQR_PHASE_C; //ADC2 injected reads phase C, JSQ4 = 0b00110, decimal 6 - ADC2->JOFR1 = ui16_ph3_offset; - - - } - break; - - - } - - -} - -void get_standstill_position(){ - HAL_Delay(100); - HAL_GPIO_EXTI_Callback(GPIO_PIN_4); //read in initial rotor position -#if 0 - switch (ui8_hall_state) - { - //6 cases for forward direction - case 2: - q31_rotorposition_hall = DEG_0 + q31_rotorposition_motor_specific; - break; - case 6: - q31_rotorposition_hall = DEG_plus60 + q31_rotorposition_motor_specific; - break; - case 4: - q31_rotorposition_hall = DEG_plus120 + q31_rotorposition_motor_specific; - break; - case 5: - q31_rotorposition_hall = DEG_plus180 + q31_rotorposition_motor_specific; - break; - case 1: - q31_rotorposition_hall = DEG_minus120 + q31_rotorposition_motor_specific; - break; - case 3: - q31_rotorposition_hall = DEG_minus60 + q31_rotorposition_motor_specific; - break; - - } -#endif - q31_rotorposition_absolute = q31_rotorposition_hall; -} - -/* USER CODE END 4 */ - -/** - * @brief This function is executed in case of error occurrence. - * @retval None - */ -void Error_Handler(void) -{ - /* USER CODE BEGIN Error_Handler_Debug */ - /* User can add his own implementation to report the HAL error return state */ - __disable_irq(); - while (1) - { - } - /* USER CODE END Error_Handler_Debug */ -} - -void _Error_Handler(char *file, int line) -{ - /* USER CODE BEGIN Error_Handler_Debug */ - /* User can add his own implementation to report the HAL error return state */ - while(1) - { - } - /* USER CODE END Error_Handler_Debug */ -} - -#ifdef USE_FULL_ASSERT -/** - * @brief Reports the name of the source file and the source line number - * where the assert_param error has occurred. - * @param file: pointer to the source file name - * @param line: assert_param error line source number - * @retval None - */ -void assert_failed(uint8_t *file, uint32_t line) -{ - /* USER CODE BEGIN 6 */ - /* User can add his own implementation to report the file name and line number, - ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ - /* USER CODE END 6 */ -} -#endif /* USE_FULL_ASSERT */ - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/Src/print.c b/Src/print.c deleted file mode 100644 index df229143..00000000 --- a/Src/print.c +++ /dev/null @@ -1,289 +0,0 @@ -/** \file printf.c - * Simplified printf() and sprintf() implementation - prints formatted string to - * USART (or whereever). Most common % specifiers are supported. It costs you about - * 3k FLASH memory - without floating point support it uses only 1k ROM! - * \author Freddie Chopin, Martin Thomas, Marten Petschke and many others - * \date 16.2.2012 - */ - -/****************************************************************************** -* chip: STM32F10x -* compiler: arm-none-eabi-gcc 4.6.0 -* -* global functions: -* int printf_(const char *format, ...) -* int sprintf_(char *buffer, const char *format, ...) -* -* STM32 specific functions: -* init_UART1(void) -* void putc_UART1 (char); // blocking put char, used by printf() -* -* local functions: -* int putc_strg(int character, printf_file_t *stream) -* int vfprintf_(printf_file_t *stream, const char *format, va_list arg) -* void long_itoa (long val, int radix, int len, vfprintf_stream *stream) -* -******************************************************************************/ - -/* -+=============================================================================+ -| includes -+=============================================================================+ -*/ - -#include // (...) parameter handling - - -#include "stm32f103xb.h" // only this STM headerfile is used - - - -int printf_(const char *format, ...); -int sprintf_(char *buffer, const char *format, ...); - -/* -+=============================================================================+ -| local declarations -+=============================================================================+ -*/ - - - -void putc_UART3 (char); // blocking put char; used by printf_() -void putc_strg(char); // the put() function for sprintf() -char *SPRINTF_buffer; // - -static int vfprintf_(void (*) (char), const char *format, va_list arg); //generic print -void long_itoa (long, int, int, void (*) (char)); //heavily used by printf_() - -/* -+=============================================================================+ -| sample main() file -+=============================================================================+ -*/ - - -/* -+=============================================================================+ -| STM32 register definition only here and in interrupt handler -+=============================================================================+ -*/ - - -void putc_UART3 (char c) -{ - if (c == '\n') { - while ((USART3->SR & USART_SR_TXE) == 0); //blocks until previous byte was sent - USART3->DR ='\r'; - } - while ((USART3->SR & USART_SR_TXE) == 0); //blocks until previous byte was sent - USART3->DR = c; -} - -/* -+=============================================================================+ -| end of controller specific stuff - no further controller dependent stuff below -+=============================================================================+ -*/ - -/* -+=============================================================================+ -| global functions -+=============================================================================+ -*/ -int printf_(const char *format, ...) -{ - va_list arg; - - va_start(arg, format); - vfprintf_((&putc_UART3), format, arg); - va_end(arg); - - return 0; -} - -int sprintf_(char *buffer, const char *format, ...) -{ - va_list arg; - - SPRINTF_buffer=buffer; //Pointer auf einen String in Speicherzelle abspeichern - - va_start(arg, format); - vfprintf_((&putc_strg), format, arg); - va_end(arg); - - *SPRINTF_buffer ='\0'; // append end of string - - return 0; -} - - -/* -+=============================================================================+ -| local functions -+=============================================================================+ -*/ -// putc_strg() is the putc()function for sprintf_() -void putc_strg(char character) -{ - *SPRINTF_buffer = (char)character; // just add the character to buffer - SPRINTF_buffer++; - -} - -/*--------------------------------------------------------------------------------+ - * vfprintf_() - * Prints a string to stream. Supports %s, %c, %d, %ld %ul %02d %i %x %lud and %% - * - partly supported: long long, float (%ll %f, %F, %2.2f) - * - not supported: double float and exponent (%e %g %p %o \t) - *--------------------------------------------------------------------------------+ -*/ -static int vfprintf_(void (*putc)(char), const char* str, va_list arp) -{ - int d, r, w, s, l; //d=char, r = radix, w = width, s=zeros, l=long - char *c; // for the while loop only - -#ifdef INCLUDE_FLOAT - float f; - long int m, mv, p, w2; -#endif - - while ((d = *str++) != 0) { - if (d != '%') { - (*putc)(d); - continue; - } - d = *str++; - w = r = s = l = 0; - if (d == '%') { - (*putc)(d); - d = *str++; - } - if (d == '0') { - d = *str++; s = 1; //padd with zeros - } - while ((d >= '0')&&(d <= '9')) { - w += w * 10 + (d - '0'); - d = *str++; - } - if (s) w = -w; //padd with zeros if negative - - #ifdef INCLUDE_FLOAT - w2 = 2; //default decimal places=2 - if (d == '.'){ - d = *str++; w2 = 0; } - while ((d >= '0')&&(d <= '9')) { - w2 += w2 * 10 + (d - '0'); - d = *str++; - } - #endif - - if (d == 's') { - c = va_arg(arp, char*); - while (*c) - (*putc)(*(c++)); - continue; - } - if (d == 'c') { - (*putc)((char)va_arg(arp, int)); - continue; - } - if (d == 'u') { // %ul - r = 10; - d = *str++; - } - if (d == 'l') { // long =32bit - l = 1; - if (r==0) r = -10; - d = *str++; - } - if (d =='\0') break; //avoid crashing if format string is buggy - if (d == 'u') r = 10;// %lu, %llu - else if (d == 'd' || d == 'i') {if (r==0) r = -10;} //can be 16 or 32bit int - else if (d == 'X' || d == 'x') r = 16; // 'x' added by mthomas - else if (d == 'b') r = 2; - #ifdef INCLUDE_FLOAT - else if (d == 'f' || d == 'F') { - f=va_arg(arp, double); - if (f >= 0.0) { - r = 10; - mv = f; - m = mv; - } - else { - r = -10; - mv = f; - f = -f; - m = f; // f and m are always positive - } - long_itoa(mv, r, w, (putc)); - if (w2!=0) { - putc('.'); - f=f-m; - w=-w2; p=1; - while (w2--) p = p*10; - m=f*p; - long_itoa(m, 10, w, (putc)); - } - l=3; //do not continue with long - } - #endif - else str--; // normal character - - if (r==0) continue; // - if (l==0) { - if (r > 0){ //unsigned - long_itoa((unsigned long)va_arg(arp, int), r, w, (putc)); //needed for 16bit int, no harm to 32bit int - } - else //signed - long_itoa((long)va_arg(arp, int), r, w, (putc)); - } else if (l==1){ // long =32bit - long_itoa((long)va_arg(arp, long), r, w, (putc)); //no matter if signed or unsigned - } - } - - return 0; -} - - -void long_itoa (long val, int radix, int len, void (*putc) (char)) -{ - char c, sgn = 0, pad = ' '; - char s[20]; - int i = 0; - - - if (radix < 0) { - radix = -radix; - if (val < 0) { - val = -val; - sgn = '-'; - } - } - if (len < 0) { - len = -len; - pad = '0'; - } - if (len > 20) return; - do { - c = (char)((unsigned long)val % radix); //cast! - if (c >= 10) c += ('A'-10); //ABCDEF - else c += '0'; //0123456789 - s[i++] = c; - val = (unsigned long)val /radix; //cast! - } while (val); - - if ((sgn!=0) && (pad!='0')) s[i++] = sgn; - while (i < len) - s[i++] = pad; - if ((sgn!=0) && (pad=='0')) s[i++] = sgn; - - do - (*putc)(s[--i]); - while (i); -} - - -/****************************************************************************** -* END OF FILE -******************************************************************************/ diff --git a/Src/stm32f1xx_it.c b/Src/stm32f1xx_it.c deleted file mode 100644 index b2829da5..00000000 --- a/Src/stm32f1xx_it.c +++ /dev/null @@ -1,455 +0,0 @@ -/* USER CODE BEGIN Header */ -/** - ****************************************************************************** - * @file stm32f1xx_it.c - * @brief Interrupt Service Routines. - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2020 STMicroelectronics. - * All rights reserved.

- * - * This software component is licensed by ST under BSD 3-Clause license, - * the "License"; You may not use this file except in compliance with the - * License. You may obtain a copy of the License at: - * opensource.org/licenses/BSD-3-Clause - * - ****************************************************************************** - */ -/* USER CODE END Header */ - -/* Includes ------------------------------------------------------------------*/ -#include "main.h" -#include "stm32f1xx_it.h" -/* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ -/* USER CODE END Includes */ - -/* Private typedef -----------------------------------------------------------*/ -/* USER CODE BEGIN TD */ - -/* USER CODE END TD */ - -/* Private define ------------------------------------------------------------*/ -/* USER CODE BEGIN PD */ - -/* USER CODE END PD */ - -/* Private macro -------------------------------------------------------------*/ -/* USER CODE BEGIN PM */ - -/* USER CODE END PM */ - -/* Private variables ---------------------------------------------------------*/ -/* USER CODE BEGIN PV */ - -/* USER CODE END PV */ - -/* Private function prototypes -----------------------------------------------*/ -/* USER CODE BEGIN PFP */ - -/* USER CODE END PFP */ - -/* Private user code ---------------------------------------------------------*/ -/* USER CODE BEGIN 0 */ - -/* USER CODE END 0 */ - -/* External variables --------------------------------------------------------*/ -extern DMA_HandleTypeDef hdma_adc1; -extern DMA_HandleTypeDef hdma_usart1_tx; -extern DMA_HandleTypeDef hdma_usart1_rx; -extern DMA_HandleTypeDef hdma_usart3_tx; -extern DMA_HandleTypeDef hdma_usart3_rx; -extern ADC_HandleTypeDef hadc1; -extern ADC_HandleTypeDef hadc2; -extern TIM_HandleTypeDef htim1; -extern TIM_HandleTypeDef htim2; -extern TIM_HandleTypeDef htim3; -extern TIM_HandleTypeDef htim4; -extern UART_HandleTypeDef huart1; -extern UART_HandleTypeDef huart3; - -/* USER CODE BEGIN EV */ - -/* USER CODE END EV */ - -/******************************************************************************/ -/* Cortex-M3 Processor Interruption and Exception Handlers */ -/******************************************************************************/ -/** - * @brief This function handles Non maskable interrupt. - */ -void NMI_Handler(void) -{ - /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ - - /* USER CODE END NonMaskableInt_IRQn 0 */ - /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ - while (1) - { - } - /* USER CODE END NonMaskableInt_IRQn 1 */ -} - -/** - * @brief This function handles Hard fault interrupt. - */ -void HardFault_Handler(void) -{ - /* USER CODE BEGIN HardFault_IRQn 0 */ - - /* USER CODE END HardFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_HardFault_IRQn 0 */ - /* USER CODE END W1_HardFault_IRQn 0 */ - } -} - -/** - * @brief This function handles Memory management fault. - */ -void MemManage_Handler(void) -{ - /* USER CODE BEGIN MemoryManagement_IRQn 0 */ - - /* USER CODE END MemoryManagement_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */ - /* USER CODE END W1_MemoryManagement_IRQn 0 */ - } -} - -/** - * @brief This function handles Prefetch fault, memory access fault. - */ -void BusFault_Handler(void) -{ - /* USER CODE BEGIN BusFault_IRQn 0 */ - - /* USER CODE END BusFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_BusFault_IRQn 0 */ - /* USER CODE END W1_BusFault_IRQn 0 */ - } -} - -/** - * @brief This function handles Undefined instruction or illegal state. - */ -void UsageFault_Handler(void) -{ - /* USER CODE BEGIN UsageFault_IRQn 0 */ - - /* USER CODE END UsageFault_IRQn 0 */ - while (1) - { - /* USER CODE BEGIN W1_UsageFault_IRQn 0 */ - /* USER CODE END W1_UsageFault_IRQn 0 */ - } -} - -/** - * @brief This function handles System service call via SWI instruction. - */ -void SVC_Handler(void) -{ - /* USER CODE BEGIN SVCall_IRQn 0 */ - - /* USER CODE END SVCall_IRQn 0 */ - /* USER CODE BEGIN SVCall_IRQn 1 */ - - /* USER CODE END SVCall_IRQn 1 */ -} - -/** - * @brief This function handles Debug monitor. - */ -void DebugMon_Handler(void) -{ - /* USER CODE BEGIN DebugMonitor_IRQn 0 */ - - /* USER CODE END DebugMonitor_IRQn 0 */ - /* USER CODE BEGIN DebugMonitor_IRQn 1 */ - - /* USER CODE END DebugMonitor_IRQn 1 */ -} - -/** - * @brief This function handles Pendable request for system service. - */ -void PendSV_Handler(void) -{ - /* USER CODE BEGIN PendSV_IRQn 0 */ - - /* USER CODE END PendSV_IRQn 0 */ - /* USER CODE BEGIN PendSV_IRQn 1 */ - - /* USER CODE END PendSV_IRQn 1 */ -} - -/** - * @brief This function handles System tick timer. - */ -void SysTick_Handler(void) -{ - /* USER CODE BEGIN SysTick_IRQn 0 */ - - /* USER CODE END SysTick_IRQn 0 */ - HAL_IncTick(); - /* USER CODE BEGIN SysTick_IRQn 1 */ - - /* USER CODE END SysTick_IRQn 1 */ -} - -/******************************************************************************/ -/* STM32F1xx Peripheral Interrupt Handlers */ -/* Add here the Interrupt Handlers for the used peripherals. */ -/* For the available peripheral interrupt handler names, */ -/* please refer to the startup file (startup_stm32f1xx.s). */ -/******************************************************************************/ - -/** - * @brief This function handles DMA1 channel1 global interrupt. - */ -void DMA1_Channel1_IRQHandler(void) -{ - /* USER CODE BEGIN DMA1_Channel1_IRQn 0 */ - - /* USER CODE END DMA1_Channel1_IRQn 0 */ - HAL_DMA_IRQHandler(&hdma_adc1); - /* USER CODE BEGIN DMA1_Channel1_IRQn 1 */ - - /* USER CODE END DMA1_Channel1_IRQn 1 */ -} - -/** -* @brief This function handles DMA1 channel4 global interrupt. -*/ -void DMA1_Channel2_IRQHandler(void) -{ - /* USER CODE BEGIN DMA1_Channel4_IRQn 0 */ - - /* USER CODE END DMA1_Channel4_IRQn 0 */ - HAL_DMA_IRQHandler(&hdma_usart3_tx); - /* USER CODE BEGIN DMA1_Channel4_IRQn 1 */ - - /* USER CODE END DMA1_Channel4_IRQn 1 */ -} - -/** -* @brief This function handles DMA1 channel5 global interrupt. -*/ -void DMA1_Channel3_IRQHandler(void) -{ - /* USER CODE BEGIN DMA1_Channel5_IRQn 0 */ - - /* USER CODE END DMA1_Channel5_IRQn 0 */ - HAL_DMA_IRQHandler(&hdma_usart3_rx); - /* USER CODE BEGIN DMA1_Channel5_IRQn 1 */ - - /* USER CODE END DMA1_Channel5_IRQn 1 */ -} - -/** -* @brief This function handles DMA1 channel4 global interrupt. -*/ -void DMA1_Channel4_IRQHandler(void) -{ - /* USER CODE BEGIN DMA1_Channel4_IRQn 0 */ - - /* USER CODE END DMA1_Channel4_IRQn 0 */ - HAL_DMA_IRQHandler(&hdma_usart1_tx); - /* USER CODE BEGIN DMA1_Channel4_IRQn 1 */ - - /* USER CODE END DMA1_Channel4_IRQn 1 */ -} - -/** -* @brief This function handles DMA1 channel5 global interrupt. -*/ -void DMA1_Channel5_IRQHandler(void) -{ - /* USER CODE BEGIN DMA1_Channel5_IRQn 0 */ - - /* USER CODE END DMA1_Channel5_IRQn 0 */ - HAL_DMA_IRQHandler(&hdma_usart1_rx); - /* USER CODE BEGIN DMA1_Channel5_IRQn 1 */ - - /* USER CODE END DMA1_Channel5_IRQn 1 */ -} - -/** - * @brief This function handles ADC1 and ADC2 global interrupts. - */ -void ADC1_2_IRQHandler(void) -{ - /* USER CODE BEGIN ADC1_2_IRQn 0 */ - - /* USER CODE END ADC1_2_IRQn 0 */ - HAL_ADC_IRQHandler(&hadc1); - HAL_ADC_IRQHandler(&hadc2); - /* USER CODE BEGIN ADC1_2_IRQn 1 */ - - /* USER CODE END ADC1_2_IRQn 1 */ -} - -/** - * @brief This function handles TIM1 update interrupt. - */ -void TIM1_UP_IRQHandler(void) -{ - /* USER CODE BEGIN TIM1_UP_IRQn 0 */ - - /* USER CODE END TIM1_UP_IRQn 0 */ - HAL_TIM_IRQHandler(&htim1); - /* USER CODE BEGIN TIM1_UP_IRQn 1 */ - - /* USER CODE END TIM1_UP_IRQn 1 */ -} - -/** - * @brief This function handles TIM1 trigger and commutation interrupts. - */ -void TIM1_TRG_COM_IRQHandler(void) -{ - /* USER CODE BEGIN TIM1_TRG_COM_IRQn 0 */ - - /* USER CODE END TIM1_TRG_COM_IRQn 0 */ - HAL_TIM_IRQHandler(&htim1); - /* USER CODE BEGIN TIM1_TRG_COM_IRQn 1 */ - - /* USER CODE END TIM1_TRG_COM_IRQn 1 */ -} - -/** - * @brief This function handles TIM1 capture compare interrupt. - */ -void TIM1_CC_IRQHandler(void) -{ - /* USER CODE BEGIN TIM1_CC_IRQn 0 */ - - /* USER CODE END TIM1_CC_IRQn 0 */ - HAL_TIM_IRQHandler(&htim1); - /* USER CODE BEGIN TIM1_CC_IRQn 1 */ - - /* USER CODE END TIM1_CC_IRQn 1 */ -} - -/** - * @brief This function handles TIM2 global interrupt. - */ -void TIM2_IRQHandler(void) -{ - /* USER CODE BEGIN TIM2_IRQn 0 */ - - /* USER CODE END TIM2_IRQn 0 */ - HAL_TIM_IRQHandler(&htim2); - /* USER CODE BEGIN TIM2_IRQn 1 */ - - /* USER CODE END TIM2_IRQn 1 */ -} - -void TIM3_IRQHandler(void) -{ - /* USER CODE BEGIN TIM2_IRQn 0 */ - - /* USER CODE END TIM2_IRQn 0 */ - HAL_TIM_IRQHandler(&htim3); - /* USER CODE BEGIN TIM2_IRQn 1 */ - - /* USER CODE END TIM2_IRQn 1 */ -} - -void TIM4_IRQHandler(void) -{ - /* USER CODE BEGIN TIM2_IRQn 0 */ - - /* USER CODE END TIM2_IRQn 0 */ - HAL_TIM_IRQHandler(&htim4); - /* USER CODE BEGIN TIM2_IRQn 1 */ - - /* USER CODE END TIM2_IRQn 1 */ -} - -/** -* @brief This function handles USART1 global interrupt. -*/ -void USART1_IRQHandler(void) -{ - /* USER CODE BEGIN USART1_IRQn 0 */ - - /* USER CODE END USART1_IRQn 0 */ - HAL_UART_IRQHandler(&huart1); - /* USER CODE BEGIN USART1_IRQn 1 */ - - /* USER CODE END USART1_IRQn 1 */ -} - - -/** -* @brief This function handles USART1 global interrupt. -*/ -void USART3_IRQHandler(void) -{ - /* USER CODE BEGIN USART1_IRQn 0 */ - - /* USER CODE END USART1_IRQn 0 */ - HAL_UART_IRQHandler(&huart3); - /* USER CODE BEGIN USART1_IRQn 1 */ - - /* USER CODE END USART1_IRQn 1 */ -} - - -/** -* @brief This function handles EXTI line[9:5] interrupts. -*/ -void EXTI9_5_IRQHandler(void) -{ - /* USER CODE BEGIN EXTI9_5_IRQn 0 */ - - /* USER CODE END EXTI9_5_IRQn 0 */ - HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_5); - /* USER CODE BEGIN EXTI9_5_IRQn 1 */ - - /* USER CODE END EXTI9_5_IRQn 1 */ -} - -/** -* @brief This function handles EXTI line[9:5] interrupts. -*/ -void EXTI0_IRQHandler(void) -{ - /* USER CODE BEGIN EXTI9_5_IRQn 0 */ - - /* USER CODE END EXTI9_5_IRQn 0 */ - HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0); - /* USER CODE BEGIN EXTI9_5_IRQn 1 */ - - /* USER CODE END EXTI9_5_IRQn 1 */ -} - -/** -* @brief This function handles EXTI line[9:5] interrupts. -*/ -void EXTI4_IRQHandler(void) -{ - /* USER CODE BEGIN EXTI9_5_IRQn 0 */ - - /* USER CODE END EXTI9_5_IRQn 0 */ - HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_4); - /* USER CODE BEGIN EXTI9_5_IRQn 1 */ - - /* USER CODE END EXTI9_5_IRQn 1 */ -} - - - -/* USER CODE BEGIN 1 */ - -/* USER CODE END 1 */ -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/Src/system_stm32f1xx.c b/Src/system_stm32f1xx.c deleted file mode 100644 index 052bec62..00000000 --- a/Src/system_stm32f1xx.c +++ /dev/null @@ -1,408 +0,0 @@ -/** - ****************************************************************************** - * @file system_stm32f1xx.c - * @author MCD Application Team - * @brief CMSIS Cortex-M3 Device Peripheral Access Layer System Source File. - * - * 1. This file provides two functions and one global variable to be called from - * user application: - * - SystemInit(): Setups the system clock (System clock source, PLL Multiplier - * factors, AHB/APBx prescalers and Flash settings). - * This function is called at startup just after reset and - * before branch to main program. This call is made inside - * the "startup_stm32f1xx_xx.s" file. - * - * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used - * by the user application to setup the SysTick - * timer or configure other parameters. - * - * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must - * be called whenever the core clock is changed - * during program execution. - * - * 2. After each device reset the HSI (8 MHz) is used as system clock source. - * Then SystemInit() function is called, in "startup_stm32f1xx_xx.s" file, to - * configure the system clock before to branch to main program. - * - * 4. The default value of HSE crystal is set to 8 MHz (or 25 MHz, depending on - * the product used), refer to "HSE_VALUE". - * When HSE is used as system clock source, directly or through PLL, and you - * are using different crystal you have to adapt the HSE value to your own - * configuration. - * - ****************************************************************************** - * @attention - * - *

© Copyright (c) 2017 STMicroelectronics. - * All rights reserved.

- * - * This software component is licensed by ST under BSD 3-Clause license, - * the "License"; You may not use this file except in compliance with the - * License. You may obtain a copy of the License at: - * opensource.org/licenses/BSD-3-Clause - * - ****************************************************************************** - */ - -/** @addtogroup CMSIS - * @{ - */ - -/** @addtogroup stm32f1xx_system - * @{ - */ - -/** @addtogroup STM32F1xx_System_Private_Includes - * @{ - */ - -#include "stm32f1xx.h" - -/** - * @} - */ - -/** @addtogroup STM32F1xx_System_Private_TypesDefinitions - * @{ - */ - -/** - * @} - */ - -/** @addtogroup STM32F1xx_System_Private_Defines - * @{ - */ - -#if !defined (HSE_VALUE) - #define HSE_VALUE 8000000U /*!< Default value of the External oscillator in Hz. - This value can be provided and adapted by the user application. */ -#endif /* HSE_VALUE */ - -#if !defined (HSI_VALUE) - #define HSI_VALUE 8000000U /*!< Default value of the Internal oscillator in Hz. - This value can be provided and adapted by the user application. */ -#endif /* HSI_VALUE */ - -/*!< Uncomment the following line if you need to use external SRAM */ -#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG) -/* #define DATA_IN_ExtSRAM */ -#endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */ - -/* Note: Following vector table addresses must be defined in line with linker - configuration. */ -/*!< Uncomment the following line if you need to relocate the vector table - anywhere in Flash or Sram, else the vector table is kept at the automatic - remap of boot address selected */ -/* #define USER_VECT_TAB_ADDRESS */ - -#if defined(USER_VECT_TAB_ADDRESS) -/*!< Uncomment the following line if you need to relocate your vector Table - in Sram else user remap will be done in Flash. */ -/* #define VECT_TAB_SRAM */ -#if defined(VECT_TAB_SRAM) -#define VECT_TAB_BASE_ADDRESS SRAM_BASE /*!< Vector Table base address field. - This value must be a multiple of 0x200. */ -#define VECT_TAB_OFFSET 0x00000000U /*!< Vector Table base offset field. - This value must be a multiple of 0x200. */ -#else -#define VECT_TAB_BASE_ADDRESS FLASH_BASE /*!< Vector Table base address field. - This value must be a multiple of 0x200. */ -#define VECT_TAB_OFFSET 0x00000000U /*!< Vector Table base offset field. - This value must be a multiple of 0x200. */ -#endif /* VECT_TAB_SRAM */ -#endif /* USER_VECT_TAB_ADDRESS */ - -/******************************************************************************/ - -/** - * @} - */ - -/** @addtogroup STM32F1xx_System_Private_Macros - * @{ - */ - -/** - * @} - */ - -/** @addtogroup STM32F1xx_System_Private_Variables - * @{ - */ - - /* This variable is updated in three ways: - 1) by calling CMSIS function SystemCoreClockUpdate() - 2) by calling HAL API function HAL_RCC_GetHCLKFreq() - 3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency - Note: If you use this function to configure the system clock; then there - is no need to call the 2 first functions listed above, since SystemCoreClock - variable is updated automatically. - */ -uint32_t SystemCoreClock = 16000000; -const uint8_t AHBPrescTable[16U] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; -const uint8_t APBPrescTable[8U] = {0, 0, 0, 0, 1, 2, 3, 4}; - -/** - * @} - */ - -/** @addtogroup STM32F1xx_System_Private_FunctionPrototypes - * @{ - */ - -#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG) -#ifdef DATA_IN_ExtSRAM - static void SystemInit_ExtMemCtl(void); -#endif /* DATA_IN_ExtSRAM */ -#endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */ - -/** - * @} - */ - -/** @addtogroup STM32F1xx_System_Private_Functions - * @{ - */ - -/** - * @brief Setup the microcontroller system - * Initialize the Embedded Flash Interface, the PLL and update the - * SystemCoreClock variable. - * @note This function should be used only after reset. - * @param None - * @retval None - */ -void SystemInit (void) -{ -#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG) - #ifdef DATA_IN_ExtSRAM - SystemInit_ExtMemCtl(); - #endif /* DATA_IN_ExtSRAM */ -#endif - - /* Configure the Vector Table location -------------------------------------*/ -#if defined(USER_VECT_TAB_ADDRESS) - SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */ -#endif /* USER_VECT_TAB_ADDRESS */ -} - -/** - * @brief Update SystemCoreClock variable according to Clock Register Values. - * The SystemCoreClock variable contains the core clock (HCLK), it can - * be used by the user application to setup the SysTick timer or configure - * other parameters. - * - * @note Each time the core clock (HCLK) changes, this function must be called - * to update SystemCoreClock variable value. Otherwise, any configuration - * based on this variable will be incorrect. - * - * @note - The system frequency computed by this function is not the real - * frequency in the chip. It is calculated based on the predefined - * constant and the selected clock source: - * - * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*) - * - * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**) - * - * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**) - * or HSI_VALUE(*) multiplied by the PLL factors. - * - * (*) HSI_VALUE is a constant defined in stm32f1xx.h file (default value - * 8 MHz) but the real value may vary depending on the variations - * in voltage and temperature. - * - * (**) HSE_VALUE is a constant defined in stm32f1xx.h file (default value - * 8 MHz or 25 MHz, depending on the product used), user has to ensure - * that HSE_VALUE is same as the real frequency of the crystal used. - * Otherwise, this function may have wrong result. - * - * - The result of this function could be not correct when using fractional - * value for HSE crystal. - * @param None - * @retval None - */ -void SystemCoreClockUpdate (void) -{ - uint32_t tmp = 0U, pllmull = 0U, pllsource = 0U; - -#if defined(STM32F105xC) || defined(STM32F107xC) - uint32_t prediv1source = 0U, prediv1factor = 0U, prediv2factor = 0U, pll2mull = 0U; -#endif /* STM32F105xC */ - -#if defined(STM32F100xB) || defined(STM32F100xE) - uint32_t prediv1factor = 0U; -#endif /* STM32F100xB or STM32F100xE */ - - /* Get SYSCLK source -------------------------------------------------------*/ - tmp = RCC->CFGR & RCC_CFGR_SWS; - - switch (tmp) - { - case 0x00U: /* HSI used as system clock */ - SystemCoreClock = HSI_VALUE; - break; - case 0x04U: /* HSE used as system clock */ - SystemCoreClock = HSE_VALUE; - break; - case 0x08U: /* PLL used as system clock */ - - /* Get PLL clock source and multiplication factor ----------------------*/ - pllmull = RCC->CFGR & RCC_CFGR_PLLMULL; - pllsource = RCC->CFGR & RCC_CFGR_PLLSRC; - -#if !defined(STM32F105xC) && !defined(STM32F107xC) - pllmull = ( pllmull >> 18U) + 2U; - - if (pllsource == 0x00U) - { - /* HSI oscillator clock divided by 2 selected as PLL clock entry */ - SystemCoreClock = (HSI_VALUE >> 1U) * pllmull; - } - else - { - #if defined(STM32F100xB) || defined(STM32F100xE) - prediv1factor = (RCC->CFGR2 & RCC_CFGR2_PREDIV1) + 1U; - /* HSE oscillator clock selected as PREDIV1 clock entry */ - SystemCoreClock = (HSE_VALUE / prediv1factor) * pllmull; - #else - /* HSE selected as PLL clock entry */ - if ((RCC->CFGR & RCC_CFGR_PLLXTPRE) != (uint32_t)RESET) - {/* HSE oscillator clock divided by 2 */ - SystemCoreClock = (HSE_VALUE >> 1U) * pllmull; - } - else - { - SystemCoreClock = HSE_VALUE * pllmull; - } - #endif - } -#else - pllmull = pllmull >> 18U; - - if (pllmull != 0x0DU) - { - pllmull += 2U; - } - else - { /* PLL multiplication factor = PLL input clock * 6.5 */ - pllmull = 13U / 2U; - } - - if (pllsource == 0x00U) - { - /* HSI oscillator clock divided by 2 selected as PLL clock entry */ - SystemCoreClock = (HSI_VALUE >> 1U) * pllmull; - } - else - {/* PREDIV1 selected as PLL clock entry */ - - /* Get PREDIV1 clock source and division factor */ - prediv1source = RCC->CFGR2 & RCC_CFGR2_PREDIV1SRC; - prediv1factor = (RCC->CFGR2 & RCC_CFGR2_PREDIV1) + 1U; - - if (prediv1source == 0U) - { - /* HSE oscillator clock selected as PREDIV1 clock entry */ - SystemCoreClock = (HSE_VALUE / prediv1factor) * pllmull; - } - else - {/* PLL2 clock selected as PREDIV1 clock entry */ - - /* Get PREDIV2 division factor and PLL2 multiplication factor */ - prediv2factor = ((RCC->CFGR2 & RCC_CFGR2_PREDIV2) >> 4U) + 1U; - pll2mull = ((RCC->CFGR2 & RCC_CFGR2_PLL2MUL) >> 8U) + 2U; - SystemCoreClock = (((HSE_VALUE / prediv2factor) * pll2mull) / prediv1factor) * pllmull; - } - } -#endif /* STM32F105xC */ - break; - - default: - SystemCoreClock = HSI_VALUE; - break; - } - - /* Compute HCLK clock frequency ----------------*/ - /* Get HCLK prescaler */ - tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4U)]; - /* HCLK clock frequency */ - SystemCoreClock >>= tmp; -} - -#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG) -/** - * @brief Setup the external memory controller. Called in startup_stm32f1xx.s - * before jump to __main - * @param None - * @retval None - */ -#ifdef DATA_IN_ExtSRAM -/** - * @brief Setup the external memory controller. - * Called in startup_stm32f1xx_xx.s/.c before jump to main. - * This function configures the external SRAM mounted on STM3210E-EVAL - * board (STM32 High density devices). This SRAM will be used as program - * data memory (including heap and stack). - * @param None - * @retval None - */ -void SystemInit_ExtMemCtl(void) -{ - __IO uint32_t tmpreg; - /*!< FSMC Bank1 NOR/SRAM3 is used for the STM3210E-EVAL, if another Bank is - required, then adjust the Register Addresses */ - - /* Enable FSMC clock */ - RCC->AHBENR = 0x00000114U; - - /* Delay after an RCC peripheral clock enabling */ - tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_FSMCEN); - - /* Enable GPIOD, GPIOE, GPIOF and GPIOG clocks */ - RCC->APB2ENR = 0x000001E0U; - - /* Delay after an RCC peripheral clock enabling */ - tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPDEN); - - (void)(tmpreg); - -/* --------------- SRAM Data lines, NOE and NWE configuration ---------------*/ -/*---------------- SRAM Address lines configuration -------------------------*/ -/*---------------- NOE and NWE configuration --------------------------------*/ -/*---------------- NE3 configuration ----------------------------------------*/ -/*---------------- NBL0, NBL1 configuration ---------------------------------*/ - - GPIOD->CRL = 0x44BB44BBU; - GPIOD->CRH = 0xBBBBBBBBU; - - GPIOE->CRL = 0xB44444BBU; - GPIOE->CRH = 0xBBBBBBBBU; - - GPIOF->CRL = 0x44BBBBBBU; - GPIOF->CRH = 0xBBBB4444U; - - GPIOG->CRL = 0x44BBBBBBU; - GPIOG->CRH = 0x444B4B44U; - -/*---------------- FSMC Configuration ---------------------------------------*/ -/*---------------- Enable FSMC Bank1_SRAM Bank ------------------------------*/ - - FSMC_Bank1->BTCR[4U] = 0x00001091U; - FSMC_Bank1->BTCR[5U] = 0x00110212U; -} -#endif /* DATA_IN_ExtSRAM */ -#endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */ - -/** - * @} - */ - -/** - * @} - */ - -/** - * @} - */ -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/Start ohne GUI.bat b/Start ohne GUI.bat deleted file mode 100644 index 0b91f1ce..00000000 --- a/Start ohne GUI.bat +++ /dev/null @@ -1 +0,0 @@ -Start_Compiling.bat C:\Ac6\SystemWorkbench C:\Program Files (x86)\STMicroelectronics \ No newline at end of file diff --git a/Start_Compiling.bat b/Start_Compiling.bat deleted file mode 100644 index 7c8eb688..00000000 --- a/Start_Compiling.bat +++ /dev/null @@ -1,40 +0,0 @@ -set eclipsepath=%~1 -set stmpath=%~2 -set flashoption=%~3 - -PATH = %PATH%;%eclipsepath%\plugins\fr.ac6.mcu.externaltools.arm-none.win32_1.17.0.201812190825\tools\make;%eclipsepath%\plugins\fr.ac6.mcu.externaltools.arm-none.win32_1.17.0.201812190825\tools\compiler\bin;%stmpath%\STM32 ST-LINK Utility\ST-LINK Utility -IF NOT exist Debug (md Debug) -cd Debug -make -f ..\make\Makefile clean - -cd..\make -copy *.* ..\Debug -cd ..\Debug -md Drivers\STM32F1xx_HAL_Driver\Src -md startup -md src - -copy subdir_drivers.mk Drivers\STM32F1xx_HAL_Driver\Src\subdir.mk -copy subdir_src.mk Src\subdir.mk -copy subdir_startup.mk startup\subdir.mk -IF "%flashoption%"=="STLink" ( -copy STLINK_FLASH.ld ..\STM32F103C6Tx_FLASH.ld -copy STLINK_system_stm32f1xx.c ..\Src\system_stm32f1xx.c -) ELSE ( -copy UART_FLASH.ld ..\STM32F103C6Tx_FLASH.ld -copy UART_system_stm32f1xx.c ..\Src\system_stm32f1xx.c -) - -make all -IF "%flashoption%"=="STLink" ( - -ST-LINK_CLI.exe -c SWD -P LishuiFOC_01.hex -V -) ELSE ( -hex2lsh.jar -lishuiFlash %~4 LishuiFOC_01.lsh -) - -pause - -exit - diff --git a/WriteOptionBytes.bat b/WriteOptionBytes.bat deleted file mode 100644 index 425303db..00000000 --- a/WriteOptionBytes.bat +++ /dev/null @@ -1,7 +0,0 @@ -PATH = %PATH%;%1\STM32 ST-LINK Utility\ST-LINK Utility - -ST-LINK_CLI.exe -OB RDP=0 - -pause - -exit \ No newline at end of file diff --git a/experimental settings/20200119-174221MEZ.ini b/experimental settings/20200119-174221MEZ.ini deleted file mode 100644 index ba969aaf..00000000 --- a/experimental settings/20200119-174221MEZ.ini +++ /dev/null @@ -1,40 +0,0 @@ -50 -2020 -2028 -256 -15LL<<8 -38LL<<8 -6LL -40LL -1200LL -9LL -323000 -329000 -344000 -368000 -380000 -0.1L -0.01L -1 -1 -60000 -8000 -1600 -1255 -4096 -2200 -60 -25 -1 -300 --715827882LL -true -false -false -false -false -true -false -false -C:\GNU_ARM\eclipse -C:\Program Files (x86)\STMicroelectronics diff --git a/launchConfiguration (1).cfg b/launchConfiguration (1).cfg deleted file mode 100644 index 1f666c24..00000000 --- a/launchConfiguration (1).cfg +++ /dev/null @@ -1,29 +0,0 @@ -# This is an LishuiFOC_01 board with a single STM32F103C6Tx chip -# -# Generated by System Workbench for STM32 -# Take care that such file, as generated, may be overridden without any early notice. Please have a look to debug launch configuration setup(s) - -source [find interface/stlink.cfg] - -set WORKAREASIZE 0x2800 - -transport select "hla_swd" - -set CHIPNAME STM32F103C6Tx -set BOARDNAME LishuiFOC_01 - -# Enable debug when in low power modes -set ENABLE_LOW_POWER 1 - -# Stop Watchdog counters when halt -set STOP_WATCHDOG 1 - -# STlink Debug clock frequency -set CLOCK_FREQ 4000 - -# use hardware reset, connect under reset -# connect_assert_srst needed if low power mode application running (WFI...) -reset_config srst_only srst_nogate connect_assert_srst -set CONNECT_UNDER_RESET 1 - -source [find target/stm32f1x.cfg] diff --git a/launchConfiguration.cfg b/launchConfiguration.cfg deleted file mode 100644 index 1f666c24..00000000 --- a/launchConfiguration.cfg +++ /dev/null @@ -1,29 +0,0 @@ -# This is an LishuiFOC_01 board with a single STM32F103C6Tx chip -# -# Generated by System Workbench for STM32 -# Take care that such file, as generated, may be overridden without any early notice. Please have a look to debug launch configuration setup(s) - -source [find interface/stlink.cfg] - -set WORKAREASIZE 0x2800 - -transport select "hla_swd" - -set CHIPNAME STM32F103C6Tx -set BOARDNAME LishuiFOC_01 - -# Enable debug when in low power modes -set ENABLE_LOW_POWER 1 - -# Stop Watchdog counters when halt -set STOP_WATCHDOG 1 - -# STlink Debug clock frequency -set CLOCK_FREQ 4000 - -# use hardware reset, connect under reset -# connect_assert_srst needed if low power mode application running (WFI...) -reset_config srst_only srst_nogate connect_assert_srst -set CONNECT_UNDER_RESET 1 - -source [find target/stm32f1x.cfg] diff --git a/make/STLINK_FLASH.ld b/make/STLINK_FLASH.ld deleted file mode 100644 index ed98c8cb..00000000 --- a/make/STLINK_FLASH.ld +++ /dev/null @@ -1,169 +0,0 @@ -/* -***************************************************************************** -** - -** File : LinkerScript.ld -** -** Abstract : Linker script for STM32F103C6Tx Device with -** 32KByte FLASH, 10KByte RAM -** -** Set heap size, stack size and stack location according -** to application requirements. -** -** Set memory bank area and size if external memory is used. -** -** Target : STMicroelectronics STM32 -** -** -** Distribution: The file is distributed as is, without any warranty -** of any kind. -** -** (c)Copyright Ac6. -** You may use this file as-is or modify it according to the needs of your -** project. Distribution of this file (unmodified or modified) is not -** permitted. Ac6 permit registered System Workbench for MCU users the -** rights to distribute the assembled, compiled & linked contents of this -** file as part of an application binary file, provided that it is built -** using the System Workbench for MCU toolchain. -** -***************************************************************************** -*/ - -/* Entry Point */ -ENTRY(Reset_Handler) - -/* Highest address of the user mode stack */ -_estack = 0x20002800; /* end of RAM */ -/* Generate a link error if heap and stack don't fit into RAM */ -_Min_Heap_Size = 0x200; /* required amount of heap */ -_Min_Stack_Size = 0x400; /* required amount of stack */ - -/* Specify the memory areas */ -MEMORY -{ -RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 10K -FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 32K -} - -/* Define output sections */ -SECTIONS -{ - /* The startup code goes first into FLASH */ - .isr_vector : - { - . = ALIGN(4); - KEEP(*(.isr_vector)) /* Startup code */ - . = ALIGN(4); - } >FLASH - - /* The program code and other data goes into FLASH */ - .text : - { - . = ALIGN(4); - *(.text) /* .text sections (code) */ - *(.text*) /* .text* sections (code) */ - *(.glue_7) /* glue arm to thumb code */ - *(.glue_7t) /* glue thumb to arm code */ - *(.eh_frame) - - KEEP (*(.init)) - KEEP (*(.fini)) - - . = ALIGN(4); - _etext = .; /* define a global symbols at end of code */ - } >FLASH - - /* Constant data goes into FLASH */ - .rodata : - { - . = ALIGN(4); - *(.rodata) /* .rodata sections (constants, strings, etc.) */ - *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ - . = ALIGN(4); - } >FLASH - - .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH - .ARM : { - __exidx_start = .; - *(.ARM.exidx*) - __exidx_end = .; - } >FLASH - - .preinit_array : - { - PROVIDE_HIDDEN (__preinit_array_start = .); - KEEP (*(.preinit_array*)) - PROVIDE_HIDDEN (__preinit_array_end = .); - } >FLASH - .init_array : - { - PROVIDE_HIDDEN (__init_array_start = .); - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array*)) - PROVIDE_HIDDEN (__init_array_end = .); - } >FLASH - .fini_array : - { - PROVIDE_HIDDEN (__fini_array_start = .); - KEEP (*(SORT(.fini_array.*))) - KEEP (*(.fini_array*)) - PROVIDE_HIDDEN (__fini_array_end = .); - } >FLASH - - /* used by the startup to initialize data */ - _sidata = LOADADDR(.data); - - /* Initialized data sections goes into RAM, load LMA copy after code */ - .data : - { - . = ALIGN(4); - _sdata = .; /* create a global symbol at data start */ - *(.data) /* .data sections */ - *(.data*) /* .data* sections */ - - . = ALIGN(4); - _edata = .; /* define a global symbol at data end */ - } >RAM AT> FLASH - - - /* Uninitialized data section */ - . = ALIGN(4); - .bss : - { - /* This is used by the startup in order to initialize the .bss secion */ - _sbss = .; /* define a global symbol at bss start */ - __bss_start__ = _sbss; - *(.bss) - *(.bss*) - *(COMMON) - - . = ALIGN(4); - _ebss = .; /* define a global symbol at bss end */ - __bss_end__ = _ebss; - } >RAM - - /* User_heap_stack section, used to check that there is enough RAM left */ - ._user_heap_stack : - { - . = ALIGN(8); - PROVIDE ( end = . ); - PROVIDE ( _end = . ); - . = . + _Min_Heap_Size; - . = . + _Min_Stack_Size; - . = ALIGN(8); - } >RAM - - - - /* Remove information from the standard libraries */ - /DISCARD/ : - { - libc.a ( * ) - libm.a ( * ) - libgcc.a ( * ) - } - - .ARM.attributes 0 : { *(.ARM.attributes) } -} - - diff --git a/make/STLINK_system_stm32f1xx.c b/make/STLINK_system_stm32f1xx.c deleted file mode 100644 index e5a3e6ab..00000000 --- a/make/STLINK_system_stm32f1xx.c +++ /dev/null @@ -1,448 +0,0 @@ -/** - ****************************************************************************** - * @file system_stm32f1xx.c - * @author MCD Application Team - * @version V4.2.0 - * @date 31-March-2017 - * @brief CMSIS Cortex-M3 Device Peripheral Access Layer System Source File. - * - * 1. This file provides two functions and one global variable to be called from - * user application: - * - SystemInit(): Setups the system clock (System clock source, PLL Multiplier - * factors, AHB/APBx prescalers and Flash settings). - * This function is called at startup just after reset and - * before branch to main program. This call is made inside - * the "startup_stm32f1xx_xx.s" file. - * - * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used - * by the user application to setup the SysTick - * timer or configure other parameters. - * - * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must - * be called whenever the core clock is changed - * during program execution. - * - * 2. After each device reset the HSI (8 MHz) is used as system clock source. - * Then SystemInit() function is called, in "startup_stm32f1xx_xx.s" file, to - * configure the system clock before to branch to main program. - * - * 4. The default value of HSE crystal is set to 8 MHz (or 25 MHz, depending on - * the product used), refer to "HSE_VALUE". - * When HSE is used as system clock source, directly or through PLL, and you - * are using different crystal you have to adapt the HSE value to your own - * configuration. - * - ****************************************************************************** - * @attention - * - *

© COPYRIGHT(c) 2017 STMicroelectronics

- * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************** - */ - -/** @addtogroup CMSIS - * @{ - */ - -/** @addtogroup stm32f1xx_system - * @{ - */ - -/** @addtogroup STM32F1xx_System_Private_Includes - * @{ - */ - -#include "stm32f1xx.h" - -/** - * @} - */ - -/** @addtogroup STM32F1xx_System_Private_TypesDefinitions - * @{ - */ - -/** - * @} - */ - -/** @addtogroup STM32F1xx_System_Private_Defines - * @{ - */ - -#if !defined (HSE_VALUE) - #define HSE_VALUE 8000000U /*!< Default value of the External oscillator in Hz. - This value can be provided and adapted by the user application. */ -#endif /* HSE_VALUE */ - -#if !defined (HSI_VALUE) - #define HSI_VALUE 8000000U /*!< Default value of the Internal oscillator in Hz. - This value can be provided and adapted by the user application. */ -#endif /* HSI_VALUE */ - -/*!< Uncomment the following line if you need to use external SRAM */ -#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG) -/* #define DATA_IN_ExtSRAM */ -#endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */ - -/*!< Uncomment the following line if you need to relocate your vector Table in - Internal SRAM. */ -/* #define VECT_TAB_SRAM */ -#define VECT_TAB_OFFSET 0x00000000U /*!< Vector Table base offset field. - This value must be a multiple of 0x200. */ - - -/** - * @} - */ - -/** @addtogroup STM32F1xx_System_Private_Macros - * @{ - */ - -/** - * @} - */ - -/** @addtogroup STM32F1xx_System_Private_Variables - * @{ - */ - -/******************************************************************************* -* Clock Definitions -*******************************************************************************/ -#if defined(STM32F100xB) ||defined(STM32F100xE) - uint32_t SystemCoreClock = 24000000U; /*!< System Clock Frequency (Core Clock) */ -#else /*!< HSI Selected as System Clock source */ - uint32_t SystemCoreClock = 72000000U; /*!< System Clock Frequency (Core Clock) */ -#endif - -const uint8_t AHBPrescTable[16U] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; -const uint8_t APBPrescTable[8U] = {0, 0, 0, 0, 1, 2, 3, 4}; - -/** - * @} - */ - -/** @addtogroup STM32F1xx_System_Private_FunctionPrototypes - * @{ - */ - -#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG) -#ifdef DATA_IN_ExtSRAM - static void SystemInit_ExtMemCtl(void); -#endif /* DATA_IN_ExtSRAM */ -#endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */ - -/** - * @} - */ - -/** @addtogroup STM32F1xx_System_Private_Functions - * @{ - */ - -/** - * @brief Setup the microcontroller system - * Initialize the Embedded Flash Interface, the PLL and update the - * SystemCoreClock variable. - * @note This function should be used only after reset. - * @param None - * @retval None - */ -void SystemInit (void) -{ - /* Reset the RCC clock configuration to the default reset state(for debug purpose) */ - /* Set HSION bit */ - RCC->CR |= 0x00000001U; - - /* Reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */ -#if !defined(STM32F105xC) && !defined(STM32F107xC) - RCC->CFGR &= 0xF8FF0000U; -#else - RCC->CFGR &= 0xF0FF0000U; -#endif /* STM32F105xC */ - - /* Reset HSEON, CSSON and PLLON bits */ - RCC->CR &= 0xFEF6FFFFU; - - /* Reset HSEBYP bit */ - RCC->CR &= 0xFFFBFFFFU; - - /* Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */ - RCC->CFGR &= 0xFF80FFFFU; - -#if defined(STM32F105xC) || defined(STM32F107xC) - /* Reset PLL2ON and PLL3ON bits */ - RCC->CR &= 0xEBFFFFFFU; - - /* Disable all interrupts and clear pending bits */ - RCC->CIR = 0x00FF0000U; - - /* Reset CFGR2 register */ - RCC->CFGR2 = 0x00000000U; -#elif defined(STM32F100xB) || defined(STM32F100xE) - /* Disable all interrupts and clear pending bits */ - RCC->CIR = 0x009F0000U; - - /* Reset CFGR2 register */ - RCC->CFGR2 = 0x00000000U; -#else - /* Disable all interrupts and clear pending bits */ - RCC->CIR = 0x009F0000U; -#endif /* STM32F105xC */ - -#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG) - #ifdef DATA_IN_ExtSRAM - SystemInit_ExtMemCtl(); - #endif /* DATA_IN_ExtSRAM */ -#endif - -#ifdef VECT_TAB_SRAM - SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */ -#else - SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */ -#endif -} - -/** - * @brief Update SystemCoreClock variable according to Clock Register Values. - * The SystemCoreClock variable contains the core clock (HCLK), it can - * be used by the user application to setup the SysTick timer or configure - * other parameters. - * - * @note Each time the core clock (HCLK) changes, this function must be called - * to update SystemCoreClock variable value. Otherwise, any configuration - * based on this variable will be incorrect. - * - * @note - The system frequency computed by this function is not the real - * frequency in the chip. It is calculated based on the predefined - * constant and the selected clock source: - * - * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*) - * - * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**) - * - * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**) - * or HSI_VALUE(*) multiplied by the PLL factors. - * - * (*) HSI_VALUE is a constant defined in stm32f1xx.h file (default value - * 8 MHz) but the real value may vary depending on the variations - * in voltage and temperature. - * - * (**) HSE_VALUE is a constant defined in stm32f1xx.h file (default value - * 8 MHz or 25 MHz, depending on the product used), user has to ensure - * that HSE_VALUE is same as the real frequency of the crystal used. - * Otherwise, this function may have wrong result. - * - * - The result of this function could be not correct when using fractional - * value for HSE crystal. - * @param None - * @retval None - */ -void SystemCoreClockUpdate (void) -{ - uint32_t tmp = 0U, pllmull = 0U, pllsource = 0U; - -#if defined(STM32F105xC) || defined(STM32F107xC) - uint32_t prediv1source = 0U, prediv1factor = 0U, prediv2factor = 0U, pll2mull = 0U; -#endif /* STM32F105xC */ - -#if defined(STM32F100xB) || defined(STM32F100xE) - uint32_t prediv1factor = 0U; -#endif /* STM32F100xB or STM32F100xE */ - - /* Get SYSCLK source -------------------------------------------------------*/ - tmp = RCC->CFGR & RCC_CFGR_SWS; - - switch (tmp) - { - case 0x00U: /* HSI used as system clock */ - SystemCoreClock = HSI_VALUE; - break; - case 0x04U: /* HSE used as system clock */ - SystemCoreClock = HSE_VALUE; - break; - case 0x08U: /* PLL used as system clock */ - - /* Get PLL clock source and multiplication factor ----------------------*/ - pllmull = RCC->CFGR & RCC_CFGR_PLLMULL; - pllsource = RCC->CFGR & RCC_CFGR_PLLSRC; - -#if !defined(STM32F105xC) && !defined(STM32F107xC) - pllmull = ( pllmull >> 18U) + 2U; - - if (pllsource == 0x00U) - { - /* HSI oscillator clock divided by 2 selected as PLL clock entry */ - SystemCoreClock = (HSI_VALUE >> 1U) * pllmull; - } - else - { - #if defined(STM32F100xB) || defined(STM32F100xE) - prediv1factor = (RCC->CFGR2 & RCC_CFGR2_PREDIV1) + 1U; - /* HSE oscillator clock selected as PREDIV1 clock entry */ - SystemCoreClock = (HSE_VALUE / prediv1factor) * pllmull; - #else - /* HSE selected as PLL clock entry */ - if ((RCC->CFGR & RCC_CFGR_PLLXTPRE) != (uint32_t)RESET) - {/* HSE oscillator clock divided by 2 */ - SystemCoreClock = (HSE_VALUE >> 1U) * pllmull; - } - else - { - SystemCoreClock = HSE_VALUE * pllmull; - } - #endif - } -#else - pllmull = pllmull >> 18U; - - if (pllmull != 0x0DU) - { - pllmull += 2U; - } - else - { /* PLL multiplication factor = PLL input clock * 6.5 */ - pllmull = 13U / 2U; - } - - if (pllsource == 0x00U) - { - /* HSI oscillator clock divided by 2 selected as PLL clock entry */ - SystemCoreClock = (HSI_VALUE >> 1U) * pllmull; - } - else - {/* PREDIV1 selected as PLL clock entry */ - - /* Get PREDIV1 clock source and division factor */ - prediv1source = RCC->CFGR2 & RCC_CFGR2_PREDIV1SRC; - prediv1factor = (RCC->CFGR2 & RCC_CFGR2_PREDIV1) + 1U; - - if (prediv1source == 0U) - { - /* HSE oscillator clock selected as PREDIV1 clock entry */ - SystemCoreClock = (HSE_VALUE / prediv1factor) * pllmull; - } - else - {/* PLL2 clock selected as PREDIV1 clock entry */ - - /* Get PREDIV2 division factor and PLL2 multiplication factor */ - prediv2factor = ((RCC->CFGR2 & RCC_CFGR2_PREDIV2) >> 4U) + 1U; - pll2mull = ((RCC->CFGR2 & RCC_CFGR2_PLL2MUL) >> 8U) + 2U; - SystemCoreClock = (((HSE_VALUE / prediv2factor) * pll2mull) / prediv1factor) * pllmull; - } - } -#endif /* STM32F105xC */ - break; - - default: - SystemCoreClock = HSI_VALUE; - break; - } - - /* Compute HCLK clock frequency ----------------*/ - /* Get HCLK prescaler */ - tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4U)]; - /* HCLK clock frequency */ - SystemCoreClock >>= tmp; -} - -#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG) -/** - * @brief Setup the external memory controller. Called in startup_stm32f1xx.s - * before jump to __main - * @param None - * @retval None - */ -#ifdef DATA_IN_ExtSRAM -/** - * @brief Setup the external memory controller. - * Called in startup_stm32f1xx_xx.s/.c before jump to main. - * This function configures the external SRAM mounted on STM3210E-EVAL - * board (STM32 High density devices). This SRAM will be used as program - * data memory (including heap and stack). - * @param None - * @retval None - */ -void SystemInit_ExtMemCtl(void) -{ - __IO uint32_t tmpreg; - /*!< FSMC Bank1 NOR/SRAM3 is used for the STM3210E-EVAL, if another Bank is - required, then adjust the Register Addresses */ - - /* Enable FSMC clock */ - RCC->AHBENR = 0x00000114U; - - /* Delay after an RCC peripheral clock enabling */ - tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_FSMCEN); - - /* Enable GPIOD, GPIOE, GPIOF and GPIOG clocks */ - RCC->APB2ENR = 0x000001E0U; - - /* Delay after an RCC peripheral clock enabling */ - tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPDEN); - - (void)(tmpreg); - -/* --------------- SRAM Data lines, NOE and NWE configuration ---------------*/ -/*---------------- SRAM Address lines configuration -------------------------*/ -/*---------------- NOE and NWE configuration --------------------------------*/ -/*---------------- NE3 configuration ----------------------------------------*/ -/*---------------- NBL0, NBL1 configuration ---------------------------------*/ - - GPIOD->CRL = 0x44BB44BBU; - GPIOD->CRH = 0xBBBBBBBBU; - - GPIOE->CRL = 0xB44444BBU; - GPIOE->CRH = 0xBBBBBBBBU; - - GPIOF->CRL = 0x44BBBBBBU; - GPIOF->CRH = 0xBBBB4444U; - - GPIOG->CRL = 0x44BBBBBBU; - GPIOG->CRH = 0x444B4B44U; - -/*---------------- FSMC Configuration ---------------------------------------*/ -/*---------------- Enable FSMC Bank1_SRAM Bank ------------------------------*/ - - FSMC_Bank1->BTCR[4U] = 0x00001091U; - FSMC_Bank1->BTCR[5U] = 0x00110212U; -} -#endif /* DATA_IN_ExtSRAM */ -#endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */ - -/** - * @} - */ - -/** - * @} - */ - -/** - * @} - */ -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/make/UART_system_stm32f1xx.c b/make/UART_system_stm32f1xx.c deleted file mode 100644 index 07f41ba5..00000000 --- a/make/UART_system_stm32f1xx.c +++ /dev/null @@ -1,448 +0,0 @@ -/** - ****************************************************************************** - * @file system_stm32f1xx.c - * @author MCD Application Team - * @version V4.2.0 - * @date 31-March-2017 - * @brief CMSIS Cortex-M3 Device Peripheral Access Layer System Source File. - * - * 1. This file provides two functions and one global variable to be called from - * user application: - * - SystemInit(): Setups the system clock (System clock source, PLL Multiplier - * factors, AHB/APBx prescalers and Flash settings). - * This function is called at startup just after reset and - * before branch to main program. This call is made inside - * the "startup_stm32f1xx_xx.s" file. - * - * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used - * by the user application to setup the SysTick - * timer or configure other parameters. - * - * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must - * be called whenever the core clock is changed - * during program execution. - * - * 2. After each device reset the HSI (8 MHz) is used as system clock source. - * Then SystemInit() function is called, in "startup_stm32f1xx_xx.s" file, to - * configure the system clock before to branch to main program. - * - * 4. The default value of HSE crystal is set to 8 MHz (or 25 MHz, depending on - * the product used), refer to "HSE_VALUE". - * When HSE is used as system clock source, directly or through PLL, and you - * are using different crystal you have to adapt the HSE value to your own - * configuration. - * - ****************************************************************************** - * @attention - * - *

© COPYRIGHT(c) 2017 STMicroelectronics

- * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************** - */ - -/** @addtogroup CMSIS - * @{ - */ - -/** @addtogroup stm32f1xx_system - * @{ - */ - -/** @addtogroup STM32F1xx_System_Private_Includes - * @{ - */ - -#include "stm32f1xx.h" - -/** - * @} - */ - -/** @addtogroup STM32F1xx_System_Private_TypesDefinitions - * @{ - */ - -/** - * @} - */ - -/** @addtogroup STM32F1xx_System_Private_Defines - * @{ - */ - -#if !defined (HSE_VALUE) - #define HSE_VALUE 8000000U /*!< Default value of the External oscillator in Hz. - This value can be provided and adapted by the user application. */ -#endif /* HSE_VALUE */ - -#if !defined (HSI_VALUE) - #define HSI_VALUE 8000000U /*!< Default value of the Internal oscillator in Hz. - This value can be provided and adapted by the user application. */ -#endif /* HSI_VALUE */ - -/*!< Uncomment the following line if you need to use external SRAM */ -#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG) -/* #define DATA_IN_ExtSRAM */ -#endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */ - -/*!< Uncomment the following line if you need to relocate your vector Table in - Internal SRAM. */ -/* #define VECT_TAB_SRAM */ -#define VECT_TAB_OFFSET 0x00001000U /*!< Vector Table base offset field. - This value must be a multiple of 0x200. */ - - -/** - * @} - */ - -/** @addtogroup STM32F1xx_System_Private_Macros - * @{ - */ - -/** - * @} - */ - -/** @addtogroup STM32F1xx_System_Private_Variables - * @{ - */ - -/******************************************************************************* -* Clock Definitions -*******************************************************************************/ -#if defined(STM32F100xB) ||defined(STM32F100xE) - uint32_t SystemCoreClock = 24000000U; /*!< System Clock Frequency (Core Clock) */ -#else /*!< HSI Selected as System Clock source */ - uint32_t SystemCoreClock = 72000000U; /*!< System Clock Frequency (Core Clock) */ -#endif - -const uint8_t AHBPrescTable[16U] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; -const uint8_t APBPrescTable[8U] = {0, 0, 0, 0, 1, 2, 3, 4}; - -/** - * @} - */ - -/** @addtogroup STM32F1xx_System_Private_FunctionPrototypes - * @{ - */ - -#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG) -#ifdef DATA_IN_ExtSRAM - static void SystemInit_ExtMemCtl(void); -#endif /* DATA_IN_ExtSRAM */ -#endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */ - -/** - * @} - */ - -/** @addtogroup STM32F1xx_System_Private_Functions - * @{ - */ - -/** - * @brief Setup the microcontroller system - * Initialize the Embedded Flash Interface, the PLL and update the - * SystemCoreClock variable. - * @note This function should be used only after reset. - * @param None - * @retval None - */ -void SystemInit (void) -{ - /* Reset the RCC clock configuration to the default reset state(for debug purpose) */ - /* Set HSION bit */ - RCC->CR |= 0x00000001U; - - /* Reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */ -#if !defined(STM32F105xC) && !defined(STM32F107xC) - RCC->CFGR &= 0xF8FF0000U; -#else - RCC->CFGR &= 0xF0FF0000U; -#endif /* STM32F105xC */ - - /* Reset HSEON, CSSON and PLLON bits */ - RCC->CR &= 0xFEF6FFFFU; - - /* Reset HSEBYP bit */ - RCC->CR &= 0xFFFBFFFFU; - - /* Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */ - RCC->CFGR &= 0xFF80FFFFU; - -#if defined(STM32F105xC) || defined(STM32F107xC) - /* Reset PLL2ON and PLL3ON bits */ - RCC->CR &= 0xEBFFFFFFU; - - /* Disable all interrupts and clear pending bits */ - RCC->CIR = 0x00FF0000U; - - /* Reset CFGR2 register */ - RCC->CFGR2 = 0x00000000U; -#elif defined(STM32F100xB) || defined(STM32F100xE) - /* Disable all interrupts and clear pending bits */ - RCC->CIR = 0x009F0000U; - - /* Reset CFGR2 register */ - RCC->CFGR2 = 0x00000000U; -#else - /* Disable all interrupts and clear pending bits */ - RCC->CIR = 0x009F0000U; -#endif /* STM32F105xC */ - -#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG) - #ifdef DATA_IN_ExtSRAM - SystemInit_ExtMemCtl(); - #endif /* DATA_IN_ExtSRAM */ -#endif - -#ifdef VECT_TAB_SRAM - SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */ -#else - SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */ -#endif -} - -/** - * @brief Update SystemCoreClock variable according to Clock Register Values. - * The SystemCoreClock variable contains the core clock (HCLK), it can - * be used by the user application to setup the SysTick timer or configure - * other parameters. - * - * @note Each time the core clock (HCLK) changes, this function must be called - * to update SystemCoreClock variable value. Otherwise, any configuration - * based on this variable will be incorrect. - * - * @note - The system frequency computed by this function is not the real - * frequency in the chip. It is calculated based on the predefined - * constant and the selected clock source: - * - * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*) - * - * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**) - * - * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**) - * or HSI_VALUE(*) multiplied by the PLL factors. - * - * (*) HSI_VALUE is a constant defined in stm32f1xx.h file (default value - * 8 MHz) but the real value may vary depending on the variations - * in voltage and temperature. - * - * (**) HSE_VALUE is a constant defined in stm32f1xx.h file (default value - * 8 MHz or 25 MHz, depending on the product used), user has to ensure - * that HSE_VALUE is same as the real frequency of the crystal used. - * Otherwise, this function may have wrong result. - * - * - The result of this function could be not correct when using fractional - * value for HSE crystal. - * @param None - * @retval None - */ -void SystemCoreClockUpdate (void) -{ - uint32_t tmp = 0U, pllmull = 0U, pllsource = 0U; - -#if defined(STM32F105xC) || defined(STM32F107xC) - uint32_t prediv1source = 0U, prediv1factor = 0U, prediv2factor = 0U, pll2mull = 0U; -#endif /* STM32F105xC */ - -#if defined(STM32F100xB) || defined(STM32F100xE) - uint32_t prediv1factor = 0U; -#endif /* STM32F100xB or STM32F100xE */ - - /* Get SYSCLK source -------------------------------------------------------*/ - tmp = RCC->CFGR & RCC_CFGR_SWS; - - switch (tmp) - { - case 0x00U: /* HSI used as system clock */ - SystemCoreClock = HSI_VALUE; - break; - case 0x04U: /* HSE used as system clock */ - SystemCoreClock = HSE_VALUE; - break; - case 0x08U: /* PLL used as system clock */ - - /* Get PLL clock source and multiplication factor ----------------------*/ - pllmull = RCC->CFGR & RCC_CFGR_PLLMULL; - pllsource = RCC->CFGR & RCC_CFGR_PLLSRC; - -#if !defined(STM32F105xC) && !defined(STM32F107xC) - pllmull = ( pllmull >> 18U) + 2U; - - if (pllsource == 0x00U) - { - /* HSI oscillator clock divided by 2 selected as PLL clock entry */ - SystemCoreClock = (HSI_VALUE >> 1U) * pllmull; - } - else - { - #if defined(STM32F100xB) || defined(STM32F100xE) - prediv1factor = (RCC->CFGR2 & RCC_CFGR2_PREDIV1) + 1U; - /* HSE oscillator clock selected as PREDIV1 clock entry */ - SystemCoreClock = (HSE_VALUE / prediv1factor) * pllmull; - #else - /* HSE selected as PLL clock entry */ - if ((RCC->CFGR & RCC_CFGR_PLLXTPRE) != (uint32_t)RESET) - {/* HSE oscillator clock divided by 2 */ - SystemCoreClock = (HSE_VALUE >> 1U) * pllmull; - } - else - { - SystemCoreClock = HSE_VALUE * pllmull; - } - #endif - } -#else - pllmull = pllmull >> 18U; - - if (pllmull != 0x0DU) - { - pllmull += 2U; - } - else - { /* PLL multiplication factor = PLL input clock * 6.5 */ - pllmull = 13U / 2U; - } - - if (pllsource == 0x00U) - { - /* HSI oscillator clock divided by 2 selected as PLL clock entry */ - SystemCoreClock = (HSI_VALUE >> 1U) * pllmull; - } - else - {/* PREDIV1 selected as PLL clock entry */ - - /* Get PREDIV1 clock source and division factor */ - prediv1source = RCC->CFGR2 & RCC_CFGR2_PREDIV1SRC; - prediv1factor = (RCC->CFGR2 & RCC_CFGR2_PREDIV1) + 1U; - - if (prediv1source == 0U) - { - /* HSE oscillator clock selected as PREDIV1 clock entry */ - SystemCoreClock = (HSE_VALUE / prediv1factor) * pllmull; - } - else - {/* PLL2 clock selected as PREDIV1 clock entry */ - - /* Get PREDIV2 division factor and PLL2 multiplication factor */ - prediv2factor = ((RCC->CFGR2 & RCC_CFGR2_PREDIV2) >> 4U) + 1U; - pll2mull = ((RCC->CFGR2 & RCC_CFGR2_PLL2MUL) >> 8U) + 2U; - SystemCoreClock = (((HSE_VALUE / prediv2factor) * pll2mull) / prediv1factor) * pllmull; - } - } -#endif /* STM32F105xC */ - break; - - default: - SystemCoreClock = HSI_VALUE; - break; - } - - /* Compute HCLK clock frequency ----------------*/ - /* Get HCLK prescaler */ - tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4U)]; - /* HCLK clock frequency */ - SystemCoreClock >>= tmp; -} - -#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG) -/** - * @brief Setup the external memory controller. Called in startup_stm32f1xx.s - * before jump to __main - * @param None - * @retval None - */ -#ifdef DATA_IN_ExtSRAM -/** - * @brief Setup the external memory controller. - * Called in startup_stm32f1xx_xx.s/.c before jump to main. - * This function configures the external SRAM mounted on STM3210E-EVAL - * board (STM32 High density devices). This SRAM will be used as program - * data memory (including heap and stack). - * @param None - * @retval None - */ -void SystemInit_ExtMemCtl(void) -{ - __IO uint32_t tmpreg; - /*!< FSMC Bank1 NOR/SRAM3 is used for the STM3210E-EVAL, if another Bank is - required, then adjust the Register Addresses */ - - /* Enable FSMC clock */ - RCC->AHBENR = 0x00000114U; - - /* Delay after an RCC peripheral clock enabling */ - tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_FSMCEN); - - /* Enable GPIOD, GPIOE, GPIOF and GPIOG clocks */ - RCC->APB2ENR = 0x000001E0U; - - /* Delay after an RCC peripheral clock enabling */ - tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPDEN); - - (void)(tmpreg); - -/* --------------- SRAM Data lines, NOE and NWE configuration ---------------*/ -/*---------------- SRAM Address lines configuration -------------------------*/ -/*---------------- NOE and NWE configuration --------------------------------*/ -/*---------------- NE3 configuration ----------------------------------------*/ -/*---------------- NBL0, NBL1 configuration ---------------------------------*/ - - GPIOD->CRL = 0x44BB44BBU; - GPIOD->CRH = 0xBBBBBBBBU; - - GPIOE->CRL = 0xB44444BBU; - GPIOE->CRH = 0xBBBBBBBBU; - - GPIOF->CRL = 0x44BBBBBBU; - GPIOF->CRH = 0xBBBB4444U; - - GPIOG->CRL = 0x44BBBBBBU; - GPIOG->CRH = 0x444B4B44U; - -/*---------------- FSMC Configuration ---------------------------------------*/ -/*---------------- Enable FSMC Bank1_SRAM Bank ------------------------------*/ - - FSMC_Bank1->BTCR[4U] = 0x00001091U; - FSMC_Bank1->BTCR[5U] = 0x00110212U; -} -#endif /* DATA_IN_ExtSRAM */ -#endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */ - -/** - * @} - */ - -/** - * @} - */ - -/** - * @} - */ -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/make/hex2lsh.jar b/make/hex2lsh.jar deleted file mode 100644 index d13eb2fd..00000000 Binary files a/make/hex2lsh.jar and /dev/null differ diff --git a/make/lishuiFlash.exe b/make/lishuiFlash.exe deleted file mode 100644 index ad19e975..00000000 Binary files a/make/lishuiFlash.exe and /dev/null differ diff --git a/make/makefile b/make/makefile deleted file mode 100644 index b38c2cb5..00000000 --- a/make/makefile +++ /dev/null @@ -1,58 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -################################################################################ - --include ../makefile.init - -RM := rm -rf - -# All of the sources participating in the build are defined here --include sources.mk --include startup/subdir.mk --include Src/subdir.mk --include Drivers/STM32F1xx_HAL_Driver/Src/subdir.mk --include subdir.mk --include objects.mk - -ifneq ($(MAKECMDGOALS),clean) -ifneq ($(strip $(S_UPPER_DEPS)),) --include $(S_UPPER_DEPS) -endif -ifneq ($(strip $(C_DEPS)),) --include $(C_DEPS) -endif -endif - --include ../makefile.defs - -SRC_PATH = ../Drivers/CMSIS - -# Add inputs and outputs from these tool invocations to the build variables - -# All Target -all: LishuiFOC_01.elf - -# Tool invocations -LishuiFOC_01.elf: $(OBJS) $(USER_OBJS) ../STM32F103C6Tx_FLASH.ld - @echo 'Building target: $@' - @echo 'Invoking: MCU GCC Linker' - arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb -mfloat-abi=soft -L $(SRC_PATH) -specs=nosys.specs -specs=nano.specs -T"../STM32F103C6Tx_FLASH.ld" -Wl,-Map=output.map -Wl,--gc-sections -o "LishuiFOC_01.elf" @"objects.list" $(USER_OBJS) $(LIBS) -lm - @echo 'Finished building target: $@' - @echo ' ' - $(MAKE) --no-print-directory post-build - -# Other Targets -clean: - -$(RM) * - -@echo ' ' - -post-build: - -@echo 'Generating hex and Printing size information:' - arm-none-eabi-objcopy -O ihex "LishuiFOC_01.elf" "LishuiFOC_01.hex" - arm-none-eabi-size "LishuiFOC_01.elf" - -@echo ' ' - -.PHONY: all clean dependents -.SECONDARY: post-build - --include ../makefile.targets diff --git a/make/objects.list b/make/objects.list deleted file mode 100644 index 1b426deb..00000000 --- a/make/objects.list +++ /dev/null @@ -1,25 +0,0 @@ -"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o" -"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o" -"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o" -"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o" -"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o" -"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o" -"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o" -"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o" -"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o" -"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o" -"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o" -"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o" -"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o" -"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o" -"Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o" -"Src/FOC.o" -"Src/display_bafang.o" -"Src/display_kingmeter.o" -"Src/display_kunteng.o" -"Src/main.o" -"Src/print.o" -"Src/stm32f1xx_hal_msp.o" -"Src/stm32f1xx_it.o" -"Src/system_stm32f1xx.o" -"startup/startup_stm32f103x6.o" diff --git a/make/objects.mk b/make/objects.mk deleted file mode 100644 index d84ed6fa..00000000 --- a/make/objects.mk +++ /dev/null @@ -1,8 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -################################################################################ - -USER_OBJS := - -LIBS := -larm_cortexM3l_math - diff --git a/make/sources.mk b/make/sources.mk deleted file mode 100644 index 7e1ebd55..00000000 --- a/make/sources.mk +++ /dev/null @@ -1,21 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -################################################################################ - -OBJ_SRCS := -S_SRCS := -ASM_SRCS := -C_SRCS := -S_UPPER_SRCS := -O_SRCS := -EXECUTABLES := -OBJS := -S_UPPER_DEPS := -C_DEPS := - -# Every subdirectory with source files must be described here -SUBDIRS := \ -Drivers/STM32F1xx_HAL_Driver/Src \ -Src \ -startup \ - diff --git a/make/srec_cat.exe b/make/srec_cat.exe deleted file mode 100644 index 31d4d0cd..00000000 Binary files a/make/srec_cat.exe and /dev/null differ diff --git a/make/subdir_drivers.mk b/make/subdir_drivers.mk deleted file mode 100644 index 94e710df..00000000 --- a/make/subdir_drivers.mk +++ /dev/null @@ -1,72 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c \ -../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.c \ -../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.c \ -../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.c \ -../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.c \ -../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.c \ -../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.c \ -../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.c \ -../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c \ -../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.c \ -../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c \ -../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c \ -../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c \ -../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c \ -../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c - -OBJS += \ -./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.o \ -./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.o \ -./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.o \ -./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.o \ -./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.o \ -./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.o \ -./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.o \ -./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.o \ -./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.o \ -./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.o \ -./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.o \ -./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.o \ -./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.o \ -./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.o \ -./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.o - -C_DEPS += \ -./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.d \ -./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc.d \ -./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_adc_ex.d \ -./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_cortex.d \ -./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_dma.d \ -./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash.d \ -./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_flash_ex.d \ -./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio.d \ -./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.d \ -./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_pwr.d \ -./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.d \ -./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.d \ -./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.d \ -./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.d \ -./Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.d - -INC_PATH = ../INC -DRIVERS_PATH = ../Drivers/STM32F1xx_HAL_Driver/Inc -LEGACY_PATH = ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -DEVICE_PATH = ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -CMSIS_PATH = ../Drivers/CMSIS/Include - -# Each subdirectory must supply rules for building sources it contributes -Drivers/STM32F1xx_HAL_Driver/Src/%.o: ../Drivers/STM32F1xx_HAL_Driver/Src/%.c - @echo 'Building file: $<' - @echo 'Invoking: MCU GCC Compiler' - @echo $(PWD) - arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb -mfloat-abi=soft '-D__weak=__attribute__((weak))' -DARM_MATH_CM3 '-D__packed=__attribute__((__packed__))' -DUSE_HAL_DRIVER -DSTM32F103x6 -I $(INC_PATH) -I $(DRIVERS_PATH) -I $(LEGACY_PATH) -I $(DEVICE_PATH) -I $(CMSIS_PATH) -Og -g3 -Wall -fmessage-length=0 -ffunction-sections -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<" - @echo 'Finished building: $<' - @echo ' ' - - diff --git a/make/subdir_src.mk b/make/subdir_src.mk deleted file mode 100644 index 535b5cf6..00000000 --- a/make/subdir_src.mk +++ /dev/null @@ -1,56 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -C_SRCS += \ -../Src/FOC.c \ -../Src/display_bafang.c \ -../Src/display_kingmeter.c \ -../Src/display_kunteng.c \ -../Src/main.c \ -../Src/print.c \ -../Src/stm32f1xx_hal_msp.c \ -../Src/stm32f1xx_it.c \ -../Src/system_stm32f1xx.c - -OBJS += \ -./Src/FOC.o \ -./Src/display_bafang.o \ -./Src/display_kingmeter.o \ -./Src/display_kunteng.o \ -./Src/main.o \ -./Src/print.o \ -./Src/stm32f1xx_hal_msp.o \ -./Src/stm32f1xx_it.o \ -./Src/system_stm32f1xx.o - -C_DEPS += \ -./Src/FOC.d \ -./Src/display_bafang.d \ -./Src/display_kingmeter.d \ -./Src/display_kunteng.d \ -./Src/main.d \ -./Src/print.d \ -./Src/stm32f1xx_hal_msp.d \ -./Src/stm32f1xx_it.d \ -./Src/system_stm32f1xx.d - -INC_PATH = ../INC -DRIVERS_PATH = ../Drivers/STM32F1xx_HAL_Driver/Inc -LEGACY_PATH = ../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -DEVICE_PATH = ../Drivers/CMSIS/Device/ST/STM32F1xx/Include -CMSIS_PATH = ../Drivers/CMSIS/Include - - -# Each subdirectory must supply rules for building sources it contributes -Src/%.o: ../Src/%.c - @echo 'Building file: $<' - @echo 'Invoking: MCU GCC Compiler' - @echo $(PWD) - arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb -mfloat-abi=soft '-D__weak=__attribute__((weak))' -DARM_MATH_CM3 '-D__packed=__attribute__((__packed__))' -DUSE_HAL_DRIVER -DSTM32F103x6 -I $(INC_PATH) -I $(DRIVERS_PATH) -I $(LEGACY_PATH) -I $(DEVICE_PATH) -I $(CMSIS_PATH) -Og -g3 -Wall -fmessage-length=0 -ffunction-sections -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" -o "$@" "$<" - - @echo 'Finished building: $<' - @echo ' ' - - diff --git a/make/subdir_startup.mk b/make/subdir_startup.mk deleted file mode 100644 index 66bb8a0e..00000000 --- a/make/subdir_startup.mk +++ /dev/null @@ -1,22 +0,0 @@ -################################################################################ -# Automatically-generated file. Do not edit! -################################################################################ - -# Add inputs and outputs from these tool invocations to the build variables -S_SRCS += \ -../startup/startup_stm32f103x6.s - -OBJS += \ -./startup/startup_stm32f103x6.o - - -# Each subdirectory must supply rules for building sources it contributes -startup/%.o: ../startup/%.s - @echo 'Building file: $<' - @echo 'Invoking: MCU GCC Assembler' - @echo $(PWD) - arm-none-eabi-as -mcpu=cortex-m3 -mthumb -mfloat-abi=soft -g -o "$@" "$<" - @echo 'Finished building: $<' - @echo ' ' - - diff --git a/proven settings/BasicSetupPASModeWithReverse.ini b/proven settings/BasicSetupPASModeWithReverse.ini deleted file mode 100644 index 3cea9241..00000000 --- a/proven settings/BasicSetupPASModeWithReverse.ini +++ /dev/null @@ -1,44 +0,0 @@ -50 -2020 -2028 -256 -15LL<<8 -38LL<<8 -6 -40 -1200 -9 -323000 -329000 -344000 -368000 -380000 -0.1 -0.01 -1 -1 -60000 -8000 -1600 -30 -15 -1255 -4096 -2200 -60 -25 -1 -300 --715827882 -true -false -false -false -false -false -true -false -false -true -"C:\Ac6\SystemWorkbench" -"C:\Program Files (x86)\STMicroelectronics" diff --git a/proven settings/Entdecker9.6.ini b/proven settings/Entdecker9.6.ini deleted file mode 100644 index b9edd8ef..00000000 --- a/proven settings/Entdecker9.6.ini +++ /dev/null @@ -1,44 +0,0 @@ -50 -2020 -2028 -256 -15LL<<8 -38LL<<8 -6 -40 -1200 -9 -323000 -329000 -344000 -368000 -380000 -0.1 -0.01 -1 -1 -60000 -4000 -1500 -30 -15 -1255 -4096 -2260 -100 -35 -6 -250 -417566327 -false -false -false -false -false -true -false -false -false -false -"C:\Ac6\SystemWorkbench" -"C:\Program Files (x86)\STMicroelectronics" diff --git a/startup/startup_stm32f103x6.s b/startup/startup_stm32f103x6.s deleted file mode 100644 index 1e033fb0..00000000 --- a/startup/startup_stm32f103x6.s +++ /dev/null @@ -1,363 +0,0 @@ -/** - *************** (C) COPYRIGHT 2017 STMicroelectronics ************************ - * @file startup_stm32f103x6.s - * @author MCD Application Team - * @version V4.2.0 - * @date 31-March-2017 - * @brief STM32F103x6 Devices vector table for Atollic toolchain. - * This module performs: - * - Set the initial SP - * - Set the initial PC == Reset_Handler, - * - Set the vector table entries with the exceptions ISR address - * - Configure the clock system - * - Branches to main in the C library (which eventually - * calls main()). - * After Reset the Cortex-M3 processor is in Thread mode, - * priority is Privileged, and the Stack is set to Main. - ****************************************************************************** - * - *

© COPYRIGHT(c) 2017 STMicroelectronics

- * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************** - */ - - .syntax unified - .cpu cortex-m3 - .fpu softvfp - .thumb - -.global g_pfnVectors -.global Default_Handler - -/* start address for the initialization values of the .data section. -defined in linker script */ -.word _sidata -/* start address for the .data section. defined in linker script */ -.word _sdata -/* end address for the .data section. defined in linker script */ -.word _edata -/* start address for the .bss section. defined in linker script */ -.word _sbss -/* end address for the .bss section. defined in linker script */ -.word _ebss - -.equ BootRAM, 0xF108F85F -/** - * @brief This is the code that gets called when the processor first - * starts execution following a reset event. Only the absolutely - * necessary set is performed, after which the application - * supplied main() routine is called. - * @param None - * @retval : None -*/ - - .section .text.Reset_Handler - .weak Reset_Handler - .type Reset_Handler, %function -Reset_Handler: - -/* Copy the data segment initializers from flash to SRAM */ - movs r1, #0 - b LoopCopyDataInit - -CopyDataInit: - ldr r3, =_sidata - ldr r3, [r3, r1] - str r3, [r0, r1] - adds r1, r1, #4 - -LoopCopyDataInit: - ldr r0, =_sdata - ldr r3, =_edata - adds r2, r0, r1 - cmp r2, r3 - bcc CopyDataInit - ldr r2, =_sbss - b LoopFillZerobss -/* Zero fill the bss segment. */ -FillZerobss: - movs r3, #0 - str r3, [r2], #4 - -LoopFillZerobss: - ldr r3, = _ebss - cmp r2, r3 - bcc FillZerobss - -/* Call the clock system intitialization function.*/ - bl SystemInit -/* Call static constructors */ - bl __libc_init_array -/* Call the application's entry point.*/ - bl main - bx lr -.size Reset_Handler, .-Reset_Handler - -/** - * @brief This is the code that gets called when the processor receives an - * unexpected interrupt. This simply enters an infinite loop, preserving - * the system state for examination by a debugger. - * - * @param None - * @retval : None -*/ - .section .text.Default_Handler,"ax",%progbits -Default_Handler: -Infinite_Loop: - b Infinite_Loop - .size Default_Handler, .-Default_Handler -/****************************************************************************** -* -* The minimal vector table for a Cortex M3. Note that the proper constructs -* must be placed on this to ensure that it ends up at physical address -* 0x0000.0000. -* -******************************************************************************/ - .section .isr_vector,"a",%progbits - .type g_pfnVectors, %object - .size g_pfnVectors, .-g_pfnVectors - - -g_pfnVectors: - - .word _estack - .word Reset_Handler - .word NMI_Handler - .word HardFault_Handler - .word MemManage_Handler - .word BusFault_Handler - .word UsageFault_Handler - .word 0 - .word 0 - .word 0 - .word 0 - .word SVC_Handler - .word DebugMon_Handler - .word 0 - .word PendSV_Handler - .word SysTick_Handler - .word WWDG_IRQHandler - .word PVD_IRQHandler - .word TAMPER_IRQHandler - .word RTC_IRQHandler - .word FLASH_IRQHandler - .word RCC_IRQHandler - .word EXTI0_IRQHandler - .word EXTI1_IRQHandler - .word EXTI2_IRQHandler - .word EXTI3_IRQHandler - .word EXTI4_IRQHandler - .word DMA1_Channel1_IRQHandler - .word DMA1_Channel2_IRQHandler - .word DMA1_Channel3_IRQHandler - .word DMA1_Channel4_IRQHandler - .word DMA1_Channel5_IRQHandler - .word DMA1_Channel6_IRQHandler - .word DMA1_Channel7_IRQHandler - .word ADC1_2_IRQHandler - .word USB_HP_CAN1_TX_IRQHandler - .word USB_LP_CAN1_RX0_IRQHandler - .word CAN1_RX1_IRQHandler - .word CAN1_SCE_IRQHandler - .word EXTI9_5_IRQHandler - .word TIM1_BRK_IRQHandler - .word TIM1_UP_IRQHandler - .word TIM1_TRG_COM_IRQHandler - .word TIM1_CC_IRQHandler - .word TIM2_IRQHandler - .word TIM3_IRQHandler - .word 0 - .word I2C1_EV_IRQHandler - .word I2C1_ER_IRQHandler - .word 0 - .word 0 - .word SPI1_IRQHandler - .word 0 - .word USART1_IRQHandler - .word USART2_IRQHandler - .word 0 - .word EXTI15_10_IRQHandler - .word RTC_Alarm_IRQHandler - .word USBWakeUp_IRQHandler - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word 0 - .word BootRAM /* @0x108. This is for boot in RAM mode for - STM32F10x Low Density devices.*/ - -/******************************************************************************* -* -* Provide weak aliases for each Exception handler to the Default_Handler. -* As they are weak aliases, any function with the same name will override -* this definition. -* -*******************************************************************************/ - - .weak NMI_Handler - .thumb_set NMI_Handler,Default_Handler - - .weak HardFault_Handler - .thumb_set HardFault_Handler,Default_Handler - - .weak MemManage_Handler - .thumb_set MemManage_Handler,Default_Handler - - .weak BusFault_Handler - .thumb_set BusFault_Handler,Default_Handler - - .weak UsageFault_Handler - .thumb_set UsageFault_Handler,Default_Handler - - .weak SVC_Handler - .thumb_set SVC_Handler,Default_Handler - - .weak DebugMon_Handler - .thumb_set DebugMon_Handler,Default_Handler - - .weak PendSV_Handler - .thumb_set PendSV_Handler,Default_Handler - - .weak SysTick_Handler - .thumb_set SysTick_Handler,Default_Handler - - .weak WWDG_IRQHandler - .thumb_set WWDG_IRQHandler,Default_Handler - - .weak PVD_IRQHandler - .thumb_set PVD_IRQHandler,Default_Handler - - .weak TAMPER_IRQHandler - .thumb_set TAMPER_IRQHandler,Default_Handler - - .weak RTC_IRQHandler - .thumb_set RTC_IRQHandler,Default_Handler - - .weak FLASH_IRQHandler - .thumb_set FLASH_IRQHandler,Default_Handler - - .weak RCC_IRQHandler - .thumb_set RCC_IRQHandler,Default_Handler - - .weak EXTI0_IRQHandler - .thumb_set EXTI0_IRQHandler,Default_Handler - - .weak EXTI1_IRQHandler - .thumb_set EXTI1_IRQHandler,Default_Handler - - .weak EXTI2_IRQHandler - .thumb_set EXTI2_IRQHandler,Default_Handler - - .weak EXTI3_IRQHandler - .thumb_set EXTI3_IRQHandler,Default_Handler - - .weak EXTI4_IRQHandler - .thumb_set EXTI4_IRQHandler,Default_Handler - - .weak DMA1_Channel1_IRQHandler - .thumb_set DMA1_Channel1_IRQHandler,Default_Handler - - .weak DMA1_Channel2_IRQHandler - .thumb_set DMA1_Channel2_IRQHandler,Default_Handler - - .weak DMA1_Channel3_IRQHandler - .thumb_set DMA1_Channel3_IRQHandler,Default_Handler - - .weak DMA1_Channel4_IRQHandler - .thumb_set DMA1_Channel4_IRQHandler,Default_Handler - - .weak DMA1_Channel5_IRQHandler - .thumb_set DMA1_Channel5_IRQHandler,Default_Handler - - .weak DMA1_Channel6_IRQHandler - .thumb_set DMA1_Channel6_IRQHandler,Default_Handler - - .weak DMA1_Channel7_IRQHandler - .thumb_set DMA1_Channel7_IRQHandler,Default_Handler - - .weak ADC1_2_IRQHandler - .thumb_set ADC1_2_IRQHandler,Default_Handler - - .weak USB_HP_CAN1_TX_IRQHandler - .thumb_set USB_HP_CAN1_TX_IRQHandler,Default_Handler - - .weak USB_LP_CAN1_RX0_IRQHandler - .thumb_set USB_LP_CAN1_RX0_IRQHandler,Default_Handler - - .weak CAN1_RX1_IRQHandler - .thumb_set CAN1_RX1_IRQHandler,Default_Handler - - .weak CAN1_SCE_IRQHandler - .thumb_set CAN1_SCE_IRQHandler,Default_Handler - - .weak EXTI9_5_IRQHandler - .thumb_set EXTI9_5_IRQHandler,Default_Handler - - .weak TIM1_BRK_IRQHandler - .thumb_set TIM1_BRK_IRQHandler,Default_Handler - - .weak TIM1_UP_IRQHandler - .thumb_set TIM1_UP_IRQHandler,Default_Handler - - .weak TIM1_TRG_COM_IRQHandler - .thumb_set TIM1_TRG_COM_IRQHandler,Default_Handler - - .weak TIM1_CC_IRQHandler - .thumb_set TIM1_CC_IRQHandler,Default_Handler - - .weak TIM2_IRQHandler - .thumb_set TIM2_IRQHandler,Default_Handler - - .weak TIM3_IRQHandler - .thumb_set TIM3_IRQHandler,Default_Handler - - .weak I2C1_EV_IRQHandler - .thumb_set I2C1_EV_IRQHandler,Default_Handler - - .weak I2C1_ER_IRQHandler - .thumb_set I2C1_ER_IRQHandler,Default_Handler - - .weak SPI1_IRQHandler - .thumb_set SPI1_IRQHandler,Default_Handler - - .weak USART1_IRQHandler - .thumb_set USART1_IRQHandler,Default_Handler - - .weak USART2_IRQHandler - .thumb_set USART2_IRQHandler,Default_Handler - - .weak EXTI15_10_IRQHandler - .thumb_set EXTI15_10_IRQHandler,Default_Handler - - .weak RTC_Alarm_IRQHandler - .thumb_set RTC_Alarm_IRQHandler,Default_Handler - - .weak USBWakeUp_IRQHandler - .thumb_set USBWakeUp_IRQHandler,Default_Handler - -/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/tools/60-st_link_v2.rules b/tools/60-st_link_v2.rules new file mode 100644 index 00000000..b5d11dd3 --- /dev/null +++ b/tools/60-st_link_v2.rules @@ -0,0 +1 @@ +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3748", MODE="0666" diff --git a/tools/openocd-v0.10.0_dev-scripts/jlink.cfg b/tools/openocd-v0.10.0_dev-scripts/jlink.cfg new file mode 100644 index 00000000..51f420b7 --- /dev/null +++ b/tools/openocd-v0.10.0_dev-scripts/jlink.cfg @@ -0,0 +1,14 @@ +# +# SEGGER J-Link +# +# http://www.segger.com/jlink.html +# + +adapter driver jlink + +# The serial number can be used to select a specific device in case more than +# one is connected to the host. +# +# Example: Select J-Link with serial number 123456789 +# +# jlink serial 123456789 diff --git a/tools/openocd-v0.10.0_dev-scripts/stlink-v2.cfg b/tools/openocd-v0.10.0_dev-scripts/stlink-v2.cfg new file mode 100644 index 00000000..b0384676 --- /dev/null +++ b/tools/openocd-v0.10.0_dev-scripts/stlink-v2.cfg @@ -0,0 +1,16 @@ +# +# STMicroelectronics ST-LINK/V1, ST-LINK/V2, ST-LINK/V2-1, STLINK-V3 in-circuit +# debugger/programmer +# + +adapter driver hla +hla_layout stlink +hla_device_desc "ST-LINK" +hla_vid_pid 0x0483 0x3744 0x0483 0x3748 0x0483 0x374b 0x0483 0x374d 0x0483 0x374e 0x0483 0x374f 0x0483 0x3752 0x0483 0x3753 0x0483 0x3754 + +# Optionally specify the serial number of ST-LINK/V2 usb device. ST-LINK/V2 +# devices seem to have serial numbers with unreadable characters. ST-LINK/V2 +# firmware version >= V2.J21.S4 recommended to avoid issues with adapter serial +# number reset issues. +# eg. +#hla_serial "\xaa\xbc\x6e\x06\x50\x75\xff\x55\x17\x42\x19\x3f" \ No newline at end of file diff --git a/tools/openocd-v0.10.0_dev-scripts/stm32f1x.cfg b/tools/openocd-v0.10.0_dev-scripts/stm32f1x.cfg new file mode 100644 index 00000000..f9bd412a --- /dev/null +++ b/tools/openocd-v0.10.0_dev-scripts/stm32f1x.cfg @@ -0,0 +1,89 @@ +# script for stm32f1x family + +# +# stm32 devices support both JTAG and SWD transports. +# +source [find target/swj-dp.tcl] +source [find mem_helper.tcl] + +if { [info exists CHIPNAME] } { + set _CHIPNAME $CHIPNAME +} else { + set _CHIPNAME stm32f1x +} + +set _ENDIAN little + +# Work-area is a space in RAM used for flash programming +# By default use 4kB (as found on some STM32F100s) +if { [info exists WORKAREASIZE] } { + set _WORKAREASIZE $WORKAREASIZE +} else { + set _WORKAREASIZE 0x1000 +} + +# Allow overriding the Flash bank size +if { [info exists FLASH_SIZE] } { + set _FLASH_SIZE $FLASH_SIZE +} else { + # autodetect size + set _FLASH_SIZE 0 +} + +#jtag scan chain +if { [info exists CPUTAPID] } { + set _CPUTAPID $CPUTAPID +} else { + if { [using_jtag] } { + # See STM Document RM0008 Section 26.6.3 + set _CPUTAPID 0x3ba00477 + } { + # this is the SW-DP tap id not the jtag tap id + set _CPUTAPID 0x1ba01477 + } +} + +swj_newdap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID +dap create $_CHIPNAME.dap -chain-position $_CHIPNAME.cpu + +if {[using_jtag]} { + jtag newtap $_CHIPNAME bs -irlen 5 +} + +set _TARGETNAME $_CHIPNAME.cpu +target create $_TARGETNAME cortex_m -endian $_ENDIAN -dap $_CHIPNAME.dap + +$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size $_WORKAREASIZE -work-area-backup 0 + +# flash size will be probed +set _FLASHNAME $_CHIPNAME.flash +flash bank $_FLASHNAME stm32f1x 0x08000000 $_FLASH_SIZE 0 0 $_TARGETNAME + +# JTAG speed should be <= F_CPU/6. F_CPU after reset is 8MHz, so use F_JTAG = 1MHz +adapter speed 1000 + +adapter srst delay 100 +if {[using_jtag]} { + jtag_ntrst_delay 100 +} + +reset_config srst_nogate + +if {![using_hla]} { + # if srst is not fitted use SYSRESETREQ to + # perform a soft reset + cortex_m reset_config sysresetreq +} + +$_TARGETNAME configure -event examine-end { + # DBGMCU_CR |= DBG_WWDG_STOP | DBG_IWDG_STOP | + # DBG_STANDBY | DBG_STOP | DBG_SLEEP + mmw 0xE0042004 0x00000307 0 +} + +$_TARGETNAME configure -event trace-config { + # Set TRACE_IOEN; TRACE_MODE is set to async; when using sync + # change this value accordingly to configure trace pins + # assignment + mmw 0xE0042004 0x00000020 0 +} \ No newline at end of file diff --git a/tools/prepareZip_rel.exe b/tools/prepareZip_rel.exe new file mode 100644 index 00000000..3ab8a12a Binary files /dev/null and b/tools/prepareZip_rel.exe differ diff --git a/tools/xiaotea/Scripts/__init__.py b/tools/xiaotea/Scripts/__init__.py new file mode 100644 index 00000000..ca0e3f46 --- /dev/null +++ b/tools/xiaotea/Scripts/__init__.py @@ -0,0 +1 @@ +from .xiaotea import XiaoTea \ No newline at end of file diff --git a/tools/xiaotea/Scripts/dec.py b/tools/xiaotea/Scripts/dec.py new file mode 100644 index 00000000..d8e0eada --- /dev/null +++ b/tools/xiaotea/Scripts/dec.py @@ -0,0 +1,22 @@ +#!/usr/bin/python +from sys import argv, exit +from os.path import getsize +from xiaotea import XiaoTea + +if len(argv) != 3: + exit('Usage: ' + argv[0] + ' ') + +fsize = getsize(argv[1]) + +if fsize % 8: + exit('Wrong input file size !') + +cry = XiaoTea() + +hfi = open(argv[1], 'rb') +hfo = open(argv[2], 'wb') + +hfo.write(cry.decrypt(hfi.read())) + +hfo.close() +hfi.close() diff --git a/tools/xiaotea/Scripts/enc.py b/tools/xiaotea/Scripts/enc.py new file mode 100644 index 00000000..b650deb2 --- /dev/null +++ b/tools/xiaotea/Scripts/enc.py @@ -0,0 +1,17 @@ +#!/usr/bin/python +from sys import argv, exit +from os.path import getsize +from xiaotea import XiaoTea + +if len(argv) != 3: + exit('Usage: ' + argv[0] + ' ') + +cry = XiaoTea() + +hfi = open(argv[1], 'rb') +hfo = open(argv[2], 'wb') + +hfo.write(cry.encrypt(hfi.read())) + +hfo.close() +hfi.close() diff --git a/tools/xiaotea/Scripts/prepareZip.py b/tools/xiaotea/Scripts/prepareZip.py new file mode 100644 index 00000000..124d39dd --- /dev/null +++ b/tools/xiaotea/Scripts/prepareZip.py @@ -0,0 +1,46 @@ +#!/usr/bin/python +from sys import argv, exit +from os.path import getsize +from xiaotea import XiaoTea +import zipfile +import hashlib +import time + +cry = XiaoTea() + +hfi = open('FIRM.bin', 'rb') +hfo = open('FIRM.bin.enc', 'wb') + +hfo.write(cry.encrypt(hfi.read())) + +hfo.close() +hfi.close() + +md5_hash = hashlib.md5() +with open('FIRM.bin',"rb") as f: + # Read and update hash in chunks of 4K + for byte_block in iter(lambda: f.read(4096),b""): + md5_hash.update(byte_block) + print(md5_hash.hexdigest()) + +md5_hash_enc = hashlib.md5() +with open('FIRM.bin.enc',"rb") as f: + # Read and update hash in chunks of 4K + for byte_block in iter(lambda: f.read(4096),b""): + md5_hash_enc.update(byte_block) + print(md5_hash_enc.hexdigest()) + +version = 'DRV138' +filename = version + '-' + str(int(time.time())) + '.zip' +zip_file = zipfile.ZipFile(filename, 'a', zipfile.ZIP_DEFLATED, False) + +zip_file.write('FIRM.bin') + +zip_file.write('FIRM.bin.enc') + + +info_txt = 'dev: M365;\nnam: {};\nenc: B;\ntyp: DRV;\nmd5: {};\nmd5e: {};\n'.format( + version, md5_hash.hexdigest(), md5_hash_enc.hexdigest()) + +zip_file.writestr('info.txt', info_txt.encode()) +zip_file.close() diff --git a/tools/xiaotea/Scripts/prepareZip_rel.py b/tools/xiaotea/Scripts/prepareZip_rel.py new file mode 100644 index 00000000..debd0dd2 --- /dev/null +++ b/tools/xiaotea/Scripts/prepareZip_rel.py @@ -0,0 +1,64 @@ +#!/usr/bin/python +from sys import argv, exit +from os.path import getsize +from xiaotea import XiaoTea +import zipfile +import hashlib +import time +import shutil +import os + +def changeDir(newPath): + try: + os.chdir(newPath) + print("Directory moved: newPath") + except OSError: + print("Directory ", newPath, "does not exist.") + +changeDir('../tools') + +cry = XiaoTea() + +source='..\debug\SmartESC_v3.bin' +destination='FIRM.bin' +shutil.copyfile(source, destination) + + +hfi = open('FIRM.bin', 'rb') +hfo = open('FIRM.bin.enc', 'wb') + +hfo.write(cry.encrypt(hfi.read())) + +hfo.close() +hfi.close() + +md5_hash = hashlib.md5() +with open('FIRM.bin',"rb") as f: + # Read and update hash in chunks of 4K + for byte_block in iter(lambda: f.read(4096),b""): + md5_hash.update(byte_block) + print(md5_hash.hexdigest()) + +md5_hash_enc = hashlib.md5() +with open('FIRM.bin.enc',"rb") as f: + # Read and update hash in chunks of 4K + for byte_block in iter(lambda: f.read(4096),b""): + md5_hash_enc.update(byte_block) + print(md5_hash_enc.hexdigest()) + +version = 'zip_output\DRV138' +filename = version + '-' + str(int(time.time())) + '.zip' +zip_file = zipfile.ZipFile(filename, 'a', zipfile.ZIP_DEFLATED, False) + +zip_file.write('FIRM.bin') + +zip_file.write('FIRM.bin.enc') + + +info_txt = 'dev: M365;\nnam: {};\nenc: B;\ntyp: DRV;\nmd5: {};\nmd5e: {};\n'.format( + version, md5_hash.hexdigest(), md5_hash_enc.hexdigest()) + +zip_file.writestr('info.txt', info_txt.encode()) +zip_file.close() +os.remove('FIRM.bin') +os.remove('FIRM.bin.enc') diff --git a/tools/xiaotea/Scripts/setup.py b/tools/xiaotea/Scripts/setup.py new file mode 100644 index 00000000..3bab8376 --- /dev/null +++ b/tools/xiaotea/Scripts/setup.py @@ -0,0 +1,5 @@ +# -*- coding: cp1252 -*- +from py2exe.build_exe import py2exe +from distutils.core import setup + +setup(windows=[{"script":"deineDatei.py"}], options={"py2exe":{"includes":["sip", "PyQt4.QtSql"]}}) diff --git a/tools/xiaotea/Scripts/xiaotea.py b/tools/xiaotea/Scripts/xiaotea.py new file mode 100644 index 00000000..7fab15c6 --- /dev/null +++ b/tools/xiaotea/Scripts/xiaotea.py @@ -0,0 +1,100 @@ +#!/usr/bin/python +# Taken from https://electro.club/f/50300 and modified a bit +from struct import pack, unpack + +UPDKEY = b'\xFE\x80\x1C\xB2\xD1\xEF\x41\xA6\xA4\x17\x31\xF5\xA0\x68\x24\xF0' + +def tea_encrypt_ecb(block, key): + y, z = unpack('> 5) + k[1]))) & 0xFFFFFFFF + z = (z + (((y << 4) + k[2]) ^ (y + s) ^ ((y >> 5) + k[3]))) & 0xFFFFFFFF + return pack('> 5) + k[3]))) & 0xFFFFFFFF + y = (y - (((z << 4) + k[0]) ^ (z + s) ^ ((z >> 5) + k[1]))) & 0xFFFFFFFF + s = (s - 0x9E3779B9) & 0xFFFFFFFF + return pack('> 16) & 0xFFFF) | ((s & 0xFFFF) << 16)) ^ 0xFFFFFFFF + +def pad(data): + # The data which will be encrypted must be 8 byte aligned! + # We also have to write a checksum to the last 4 bytes. + # Zero pad for 4-byte aligning first: + sz = len(data) + if sz % 4: + o = (4 - (sz % 4)) + data += b'\x00' * o + sz += o + + # If we're 8-byte aligned now then add 4 zero pad bytes + if (sz % 8) == 0: + data += b'\x00\x00\x00\x00' + + # so we can add our 4 checksum bytes and be 8-byte aligned + return data + pack('